ablog

不器用で落着きのない技術者のメモ

AWS

Redshift で Datasharing している View を Drop/Create すると付与済みの権限は喪失するか

Redshift で Datasharing している View に対して、オブジェクトレベルで Grant している場合、Create or Replace すると権限は維持されるが、Drop/Create すると権限が喪失することを確認した。 Producer 側 データ共有を作成する CREATE DATASHARE cnt_dat…

AWS マネジメントコンソールに関する問題についてサポート問合せの仕方

AWS

repost.aws

Redshift で Late Binding View を使うと CREATE OR REPLACE VIEW で列の追加・削除が可能

Redshift で既存の View を CREATE OR REPLACE VIEW する場合、列の追加・削除やデータ型が変わる場合エラーになる。Late Binding View を使うと CREATE OR REPLACE VIEW で列の追加・削除が可能。 OR REPLACE 同じ名前のビューが既に存在する場合、ビューは…

Redshift の COPY コマンドにおける Null の扱い

EMPTYASNULL Amazon Redshift で CHAR と VARCHAR の空のフィールドを NULL としてロードすることを指定します。INT など、他のデータ型の空のフィールドは常に NULL でロードされます。データに 2 つの区切り記号が連続し、区切り記号の間に文字がない場合…

SYS_QUERY_HISTORY の execution_time は queue_time/lock_wait_time/planinng_time/compile_time を含まない

Redshift で SYS_QUERY_HISTORY の execution_time は queue_time/lock_wait_time/planinng_time/compile_time を含まない。 [クエリの詳細] ページには、次のコンポーネントがあります。 上部ペイン - ページの上部ペインには、ステータスやタイプなど、ク…

Redshift で非アクティブなセッションのタイムアウト時間を設定する

SESSION TIMEOUT limit | RESET SESSION TIMEOUT セッションが非アクティブまたはアイドル状態を維持する最大時間 (秒) です。指定できる範囲は 60 秒 (1 分) から 1,728,000 秒 (20 日) です。ユーザーに対しセッションタイムアウトが設定されていない場合…

Redshift で非 ASCII 文字をフィルタする

Redshift で非 ASCII 文字をフィルタする。 テーブルを作成する。 CREATE TABLE source_table ( col1 VARCHAR(100) ); CREATE TABLE target_table ( col1 VARCHAR(100) ); 非 ASCII 文字を含むレコードを insert する。 insert into source_table values('as…

Redshift でユーザー別のデータベース接続数の推移を調べる

Redshift でユーザー別のデータベース接続数の推移を調べる。 調査クエリ WITH RECURSIVE time_series(time_value) AS ( /* Recursive CTE で過去 7 日間の 1 分ごとの時間を生成 */ -- 開始時点(7日前) SELECT date_trunc('minute', dateadd(day, -7, GET…

Redshift の Multi-AZ で参照可能なシステムテーブル・ビュー

調査クエリ SELECT relname FROM PG_CLASS_INFO WHERE (upper(relname) LIKE 'STL_%' OR upper(relname) LIKE 'SVCS_%' OR upper(relname) LIKE 'SVL_%' OR upper(relname) LIKE 'SVV_%' OR upper(relname) LIKE 'STV_%' OR upper(relname) LIKE 'SYS_%') AN…

Redshift で WLM キューが溜まった状態から Concurrency scaling を有効化後に Scaling cluster でクエリが実行されるまでの時間

Redshift で WLM キューが溜まった状態から Concurrency scaling を有効化後に Scaling cluster でクエリが実行されるまでの時間を検証してみた。環境セットアップ手順は以下参照。 Amazon Redshift に重いクエリを同時多重実行しながら性能情報を見る - abl…

Redshift のシステムビューの定義を確認する

Redshift のシステムビューの定義を確認する。 # show view svv_table_info; ↓整形済み SELECT btrim(((stvp.datname) :: character varying) :: text) AS "database", btrim( ( (nvl2(mvi.mv_id, mvi.mv_schema, pgn.nspname)) :: character varying ) :: t…

Amazon Redshift でロックを保持しているクエリを調査する

AWS

問題となるクエリを検出する 特定のテーブルでロックの問題が頻繁に発生する場合は、SYS_QUERY_HISTORY を参照し、問題の原因となっているクエリを確認してください。 SELECT * FROM SYS_QUERY_HISTORY WHERE transaction_id = transaction ID; Amazon Redsh…

Trusted Advisor の「S3 の不完全なマルチパートアップロードの中止設定」

なお、マルチパートアップロードは7日以上掛かるものに関してライフサイクルルールを設定することが推奨されており、Trusted Advisorでも検知されます。以下のブログもご参考ください。 dev.classmethod.jp [小ネタ] Amazon S3 マルチパートアップロードの状…

SYSLOG ACCESS UNRESTRICTED 権限があってもメタデータビューは自分以外の行を参照できない

Amazon Redshift で SYSLOG ACCESS UNRESTRICTED 権限があっても SVV_USER_INFO などのメタデータビューは自分以外の行を参照できない。 メタデータビューの場合、Amazon Redshift は SYSLOG ACCESS UNRESTRICTED が許可されているユーザーには表示を許可し…

Amazon Redshift の SYS_QUERY_HISTORY の username 列でユーザー名を取得する

SYSLOG ACCESS UNRESTRICTED 権限を付与したユーザーで SYS_QUERY_HISTORY を参照すると、自分以外が発行したクエリとその username を参照することができる。 ユーザークエリーの詳細表示には、SYS_QUERY_HISTORY を使用します。いくつかのフィールドに関す…

Amazon Redshift のテーブルのリストアに必要な IAM 権限は RestoreTableFromClusterSnapshot

Amazon Redshift のテーブルのリストアに必要な IAM 権限は RestoreTableFromClusterSnapshot である。 IAM ポリシー例 { "Sid": "VisualEditor4", "Effect": "Allow", "Action": [ "redshift:RestoreTableFromClusterSnapshot" ], "Resource": "arn:aws:red…

Elastic resize 時のデータスライス

エラスティックリサイズの操作では、データスライスの分散が不均一であることが原因で、ノード間でデータの偏りが発生する可能性があります。クラスターでデータに偏りが生じた場合は、従来のサイズ変更を実行してください。 Amazon Redshift でエラスティッ…

Amazon Redshift で Late Binding View から通常 View を参照している場合、通常 View を Drop & Create することができる

Amazon Redshift で Late Binding View から通常 View を参照している場合、通常 View を Drop & Create することができることを確認した。 通常 View から通常 View を参照している場合は、依存関係があるため、参照元 View を Drop できない(CASCADE オプ…

Amazon Redshift で View にクエリの射影が Push down されるか検証してみた

AWS

Amazon Redshift で View にクエリの射影が Push down されることを検証した。参照元テーブルの全カラムにアクセスする View(select * form ...)に対して、select 句で特定カラムのみ指定するクエリを実行すると、指定したカラムのブロックのみ読込むこと…

Redshift で SELECT が順次実行される中で DDL を発行した場合の実行順を確認した

Redshift で SELECT を順次実行中に、DDL(ALTER TABLE) を発行した場合、DDL 実行後に発行した SELECT は DDL を待機することを確認した。 SQL スクリプト lineorder.sql(SELECT) \timing on \pset pager --\set FETCH_COUNT 1000 set enable_result_cache…

Redshift のスナップショットから View を復元できるか試してみた

AWS

View は復元できなかった(想定通り)

Redshift でデータシェアリングで共有されたテーブルが View で参照されている場合にテーブルを Drop できるか

Redshift でデータシェアリングで共有されたテーブルに対して、Consumer 側から View を作成した場合、Producer 側のテーブルを Drop できるか。 検証手順 [Producer側]スキーマとテーブルを作成する CREATE SCHEMA IF NOT EXISTS share_schema; CREATE TABL…

AWS ML Engineer Associate 勉強

AWS

SageMkader でデータセットを取り込むモード ファイル ファイルモードでは、トレーニングデータは、トレーニングを開始する前に、まずトレーニングインスタンスに添付された暗号化された EBS ボリュームにダウンロードされます。 Amazon SageMaker でより速…

Amazon Redshift でクエリモニタリングの参照に必要な IAM ポリシー

AWS マネジメントコンソールで Amazon Redshift のクエリモニタリングを参照するために必要な IAM ポリシー。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:Describe*" ], "Resource": "*" }, { "Effect": "Allow…

時系列テーブルを UNION ALL した View を結合する際のオペレーション

Amazon Redshift で View に対するクエリのフィルタ条件の push down について検証してみた - ablog と関連して、時系列テーブルを UNION ALL した View 経由で他のテーブルと結合した場合と View 内のテーブルを直接結合した場合のオペレーションを比較して…

Amazon Redshift でテーブルの分散スタイルが AUTO の場合、ALL / EVEN / KEY 分散がどのように決まるか

Amazon Redshift でテーブルの分散スタイルが AUTO の場合に、ALL / EVEN / KEY 分散のいずれになるかデータを Insert or Copy しながら検証してみた。 AUTO 分散 AUTO 分散では、Amazon Redshift はテーブルデータのサイズに基づいて最適な分散スタイルを割…

Amazon Redshift で View に対するクエリのフィルタ条件の push down について検証してみた

English: Similarly, as you load new time periods into new tables, add the new tables to the view. To signal the optimizer to skip the scan on tables that don't match the query filter, your view definition filters for the date range that co…

Redshift クラスターを "Resize schedules" で classic resize を実行すると "Unable to resize encrypted cluster. The key '...' is inaccessible"

AWS

事象 Redshift で "Resize schedules" で classic resize を実行すると、以下のエラーが発生する。 The scheduled action '...' at YYYY-MM-DD HH:MM UTC finished with 'FAILED' status: Unable to resize encrypted cluster. The key '...' is inaccessibl…

Amazon 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 に CREATE がないのはなぜか?

Amazon Redshift で HAS_TABLE_PRIVILEGE の privilege に CREATE がないのはなぜか?というと、CREATE TABLE 権限はスキーマに対しての権限であり、テーブルに対しての権限ではないため。 ユーザーが、指定されたテーブルに対して指定された権限を持ってい…