へろへろもへじ

(ブログタイトル募集中)

AmazonRedshiftで○○するためのクエリ集

頭の中の整理と備忘録として。

前提条件

・Redshiftのクラスタが作成済みであること。
psql等でRedshiftに接続できる環境が用意済みであること。

※私はこちらの記事を参考にしました。
Amazon Redshiftを始めてみよう(入門ガイド翻訳&実践:前編) | Developers.IO
Amazon Redshiftを始めてみよう(入門ガイド翻訳&実践:後編) | Developers.IO

現在の圧縮エンコードやdistkey、sortkeyの情報を確認するクエリ

select * from pg_table_def where tablename = 'table_name';

ロードエラー時のエラー内容を確認するクエリ

1.エラー参照用のviewテーブルを作成する

create view loadview as                                                                                                             
(
select 
    distinct tbl, 
    trim(name) as table_name, 
    query, 
    starttime,
    trim(filename) as input, 
    line_number, 
    colname, 
    err_code,
    trim(err_reason) as reason
from stl_load_errors sl, stv_tbl_perm sp 
where sl.tbl = sp.id
);

2.作成したviewテーブルより、対象のテーブルを指定してエラー内容を参照する

select * from loadview where table_name='table_name’;                                                                                                         

現状最適な圧縮エンコードを解析するクエリ

analyze compression table_name;

実行中のクエリをキャンセルするクエリ

1.現在実行中のクエリを確認する

select
    pid,
    trim(user_name), 
    starttime, 
    substring(query,1,20) 
from stv_recents 
where status='Running'; 

2.上記クエリ結果より、対象のクエリのPIDを確認し、cancelコマンドで指定する。

cancel PID; 

sortkeyに絞ってvacuumをかける

vacuum sort only table_name;

【番外】PDOを利用して接続(PHP

1.以下のパッケージをインストールする

$sudo yum install -y php-pgsql.x86_64                                                                                              
$sudo yum install -y php-odbc.x86_64
$sudo yum install -y postgresql-odbc.x86_64

2.PDOを生成する

$pdo = new PDO(
    "odbc:DRIVER={PostgreSQL};Server=XXXXXXXX.us-west-2.redshift.amazonaws.com;Port=5439;Database=database_name",
    “id",
    “password"
);

// 以降はPDOの使い方を参照のこと
// http://php.net/manual/ja/book.pdo.php                                                                        

DRIVERは大文字でないと認識しないので注意!!

その他

タイトルからはズレてしまいますが、
テーブル設計、データのロード、チューニングに関することは、現状私が調べた限り、下記2点が神レベルのドキュメントだと思っております(目から鱗でした!!)ので、紹介します。

■クラスメソッドさんのブログDevelopers.IOのRedshift特集
Amazon Redshift DB開発者ガイド | シリーズ | Developers.IO

@mineroaokiさんによるWEB+DB PRESS Vol.78の記事

WEB+DB PRESS Vol.78

WEB+DB PRESS Vol.78