Redshift
Amazon Redshift でユーザーに付与されたスキーマ権限を確認する。 select usename , schemaname , has_schema_privilege(usename, schemaname, 'usage') as "usage" , has_schema_privilege(usename, schemaname, 'create') as "create" , has_schema_privi…
Amazon Redshift で HAS_TABLE_PRIVILEGE の privilege に CREATE がないのはなぜか?というと、CREATE TABLE 権限はスキーマに対しての権限であり、テーブルに対しての権限ではないため。 ユーザーが、指定されたテーブルに対して指定された権限を持ってい…
Amazon Redshift で以下の権限を付与しておけば、新規作成したビューも参照できることと確認した(以下の例では DROP/CREATE している)。 ALTER DEFAULT PRIVILEGES FOR USER ... IN SCHEMA ... GRANT SELECT ON TABLES TO ...; GRANT SELECT ON ALL TABLES…
現在から1日前のタイムスタンプを取得する。 # select trunc(sysdate)-1; ?column? 2025-06-10 現在から16時間前のタイムスタンプを取得する # select dateadd(hour,-16, sysdate); date_add 2025-06-10 14:52:09.714924 参考 SYSDATE 関数 - Amazon Redshif…
Redshift の分散スタイルやソートキーの自動最適化履歴は SVL_AUTO_WORKER_ACTION で確認することができる。 select table_id, type, status, eventtime, sequence, previous_state from SVL_AUTO_WORKER_ACTION; table_id | type | status | eventtime | se…
デフォルトだと一般ユーザーは SYS_LOAD_ERROR_DETAIL を参照すると、自分が実行したロード処理のエントリしか表示できない。 他のユーザーが実行したロード処理のエントリも参照したい場合は SYSLOG ACCESS UNRESTRICTED を付与すればよい。 デフォルトでは…
自動VACUUM実行中に手動VACUUMを実行すると、自動VACUUMが停止し、手動VACUUMが実行される。 Automatic vacuum operations pause if any of the following conditions are met: A user runs a data definition language (DDL) operation, such as ALTER TABL…
Redshift でユーザーの接続制限数以上のコネクションを張ろうとすると即時エラーになる。 検証結果 3本接続を張った後、4本目の接続を張ろうとすると即時エラーとなる。 $ psql -A -h rs-ra3-4xl-4n.********.us-east-1.redshift.amazonaws.com -p 5439 -d d…
Amazon Redshift でテーブルの所有者を変更するにはスーパーユーザー権限が必要。 dev=> ALTER TABLE table_a OWNER TO user_a; ERROR: must be superuser to change owner 参考 ALTER TABLE - Amazon Redshift
Redshift で SET SESSION AUTHORIZATION は SECURITY DEFINER 関数内で使用できない。 SET SESSION AUTHORIZATIONをSECURITY DEFINER関数内で使用することはできません。 https://www.postgresql.jp/docs/9.4/sql-set-session-authorization.html
Redshift Serverless の監査ログ出力先は CloudWatch Logs のみ。Provisioned は S3 にも出力できる。 Redshift Serverlessの監査ログもS3バケットに直接出力できないのかなーと思いましたが、今後のRedshift監査ログの出力先はCloudWatch Logsを推奨されて…
Redshift でクエリIDを指定して、クエリに関する性能情報をCSVに出力する bash スクリプト(get_redshift_query_perf2)を作った。 内部的には bash から psql を実行して、sql ファイルを実行している。以前作ったスクリプト(get_redshift_query_perf)か…
psql でクエリの結果セットをファイルに出力したい場合、psql のコマンドラインで -o オプションで指定することもできるが、SQL スクリプト内でクエリ単位で出力ファイルを分けたい場合は \o オプションが使える。 書式 \o <file path> query text 実装例 yoheia/aws/re</file>…
psql でコマンドラインから変数を渡して SQL 内で参照する方法。 -v オプションで変数を渡し、 psql -v query_id=54321 ... SQL 内では :変数名 で渡された変数を参照する。 select * from SVL_QUERY_METRICS_SUMMARY where query = :query_id; 実装例 yohei…
qiita.com
AWS エンジニアの皆様、AWS サービスアップデートのキャッチアップおつかれさまですm(._.)m このエントリは AWS Analytics Advent Calendar 2024 の4日目の記事です。 3日目は 大薗さんの状況に合わせて、とても素晴らしい食事プランを提案してくれる 有益な…
Redshift で UNLOAD した時のファイル suffix の命名規則 ネーミングルール CSV 圧縮なし: 000 gzip: 000.gz bzip2: 000.bz2 zstd: 000.zst JSON 圧縮なし: 000.json gzip: 000.json.gz bzip2: 000.json.bz2 zstd: 000.json.zst Parquet 000.parquet 検証手…
COPY コマンドで Redshift にデータロード時に無効な UTF-8 文字がある場合、ACCEPTINVCHARS で固定の文字列に置換することができる。 ACCEPTINVCHARS [AS] ['replacement_char'] データに無効な UTF-8 文字がある場合でも、VARCHAR 列へのデータのロードを…
Redshift でテーブルの末尾にしかカラムを追加できない。ドキュメントを見る限りカラム位置を指定するような構文はない。 接続する $ psql -a "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev …
QueryEditor v2 を利用する IAM ロール / IAM ユーザーにアタッチする。 IAM ポリシー AmazonRedshiftReadOnlyAccess AmazonRedshiftQueryEditorV2NoSharing IAM 権限 redshift:GetClusterCredential redshift:CreateClusterUser redshift:JoinGroup { "Vers…
UNPIVOT で性能要件を満たさない場合に「項目テーブル作成 & CROSS JOIN+WITH句」へ書き換えたケース。 書換前 書換後 参考 [Redshift] テーブルの縦持ちと横持ちを入れ換える方法 | DevelopersIO [新機能] RedshiftのPIVOT/UNPIVOT機能を試してみた | Devel…
検証結果 planning_time と compile_time は execution_time に含まれるぽい。 検証手順 とあるコンパイルに時間がかかるクエリを実行する。 SYS_QUERY_HISTORY を確認する。 execution_time、compile_time、planning_time を足すと elapsed_time を超えてし…
検証結果 elapsed_time = end_time - start_time lock_wait_time は elapsed_time に含まれる 検証手順 テーブルを作成して、行を挿入 CREATE TABLE testtab1(id int primary key, name varchar(32)); INSERT INTO testtab1 (id, name) VALUES(1, 'foo'); IN…
Glue カタログでテーブルのカラムを追加・削除すると、Redshift Spectrum でも追加・削除されるという当たり前のことを検証してみたメモ。 カラム追加・削除 Redshift から Glue カタログを参照するため external schema を作成する。 create external schem…
Glue カタログの VACHAR 型はサイズパラメータ( VARCHAR (256) など)がないが、Redshift Spectrum からサイズパラメータなしで定義された VARCHAR 列をクエリすると、"Invalid column type" エラーが発生する。 Redshift Spectrum を使用して、AWS Glue デ…
Amazon Redshift の WLM クエリモニタリングルールで、一定時間以上実行されているクエリを中止してみた。 以下の例では 10 秒以上要したクエリを中止している。 実行結果 [ec2-user@ip-172-31-0-222 ~]$ export LC_ALL=C [ec2-user@ip-172-31-0-222 ~]$ cat…
準備 psql で Redshift に接続する。 psql "host=ds2xl-2n.******.us-west-2.redshift.amazonaws.com user=awsuser dbname=mydb port=5439" テーブルを作成してデータを投入する。 \echo :AUTOCOMMIT; CREATE TABLE tab1 (col1 INTEGER NOT NULL); CREATE TA…
ただのメモ。 データを用意して % cat ts_test.csv 202 2012-12-31 12:34:56 652 2012-12-31 12:34:56 761 2012-12-31 12:34:56 811 2012-12-31 12:34:56 922 2012-12-31 12:34:56 1160 2012-12-31 12:34:56 1309 2012-12-31 12:34:56 1413 2012-12-31 12:34…
性能試験などで敢えてリザルトキャッシュを使わずにクエリ性能を計測したい場合は以下の手順で無効化できる。 手順 セッションレベルで無効化する方法 set enable_result_cache_for_session=off; ユーザーレベルで無効化する方法 ALTER USER awsuser SET ena…
設定 ~/.psqlrc \set PROMPT1 '%[%033[1;32m%]%n %`date +%H:%M` %R%#%[%033[0m%] ' \set PROMPT2 '%[%033[1;32m%]%R%#%[%033[0m%] ' \timing on \set HISTSIZE 1000000 psqlコマンドのお勧め設定 - 青木ブログ コマンド例 ログイン psql "host=dc18xl8.****…