ablog

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

2022-01-01から1年間の記事一覧

Redshift のDATE型の暗黙的キャストについて

AWS

テーブル作成 create table public.test1( date_col date ); データ挿入 insert into test1(date_col) values('2022-01-01'); insert into test1(date_col) values('2022-02-01'); insert into test1(date_col) values('2022-03-01'); insert into test1(dat…

Redshiftでクエリの中間結果が書き出された箇所を調べる

AWS

Redshift で TEMP TABLE を作成して、中間結果をディスクに書き出す。 dev=# CREATE TEMP TABLE TEST1 DISTSTYLE EVEN SORTKEY(lo_orderkey) AS SELECT * FROM lineorder; 実行中のクエリのクエリIDを調べる dev=# select trim(u.usename) as user, s.pid, q…

Redshift で列長に合わせて文字列を切詰める

AWS

You can't use SUBSTRING to predictably extract the prefix of a string that might contain multi-byte characters because you need to specify the length of a multi-byte string based on the number of bytes, not the number of characters. To ext…

Redshift でセッションレベルで変更可能なパラメータ

AWS

SET サーバー設定パラメータの値を設定します。SET コマンドを使用して、現在のセッションまたはトランザクションのみの期間の設定をオーバーライドします。 SET - Amazon Redshift SET コマンドを使用して、現在のセッションの期間だけ設定をオーバーライド…

Redshift における aws_teradata_ext の挙動を確認したメモ

AWS

Redshift における AWS Schema Conversion Tool(SCT) の extension pack の aws_teradata_ext の挙動を確認したメモ。 sample=# select aws_teradata_ext.TRUNC('20220818', 'RM'); trunc ------------ 2022-08-01 (1 row) sample=# select aws_teradata_ext…

VSCode でスペルチェックを使う

拡張機能 Code Spell Checker をインストールする。 スペルチェックの対象とするファイルの拡張子は [Code Spell Checker]-[拡張機能の設定]-[C Spell: Enabled Language Ids] で [項目の追加] で追加できる。 参考 VSCode に Code Spell Checker を導入して…

Redshift でオブジェクト権限を持つグループ・ユーザーを確認する

AWS

select a.relname, b.nspname, a.relacl from pg_class a, pg_namespace b where a.relnamespace = b.oid and a.relacl is not null and b.nspname not like 'pg_%';

Redsfhit でユーザーとグループの一覧を確認する

AWS

select usename, usesysid, usesuper, useconfig, groname, grosysid, grolist from pg_user, pg_group where pg_user.usesysid = any(pg_group.grolist); 参考 amazon web services - Redshift: How to list all users in a group - Stack Overflow

Redshift クラスターに awslabs - amazon-redshift-utils の AdminViews を作成する

AWS

Redshift クラスターに awslabs - amazon-redshift-utils の AdminViews を作成する。 % git clone https://github.com/awslabs/amazon-redshift-utils.git % cd amazon-redshift-utils/src/AdminViews % ls -1 *.sql > run_all.sql % perl -i -pe 's/^/\\i …

Github に push すると "Support for password authentication was removed on August 13, 2021. Please use a personal access token instead." と怒られる

Github に push すると "Support for password authentication was removed on August 13, 2021. Please use a personal access token instead." と怒られる。 事象 % git push origin master Username for 'https://github.com': yoheia Password for 'http…

Amazon Managed Grafana で Redshift のクエリをモニタリングする

AWS

Amazon Managed Grafana(AMG) で Redshift のクエリをモニタリングしてみた。ダッシュボードの定義(JSON)をインポートすると以下のようなダッシュボードを作成できる。 ダッシュボードの見た目 Redshift の設定 Redshift クラスターを選択し、[Actions]-[M…

SCT で Teradata の拡張パックを Redshift にインストールする

AWS

SCTインストール SCT 1.0 Build 655 をダウンロードして、インストールする。 AWS SCT のインストール、検証、更新 - AWS Schema Conversion Tool JDBC 4.2–compatible driver version 2.1 (without the AWS SDK) をダウンロードする。 Amazon Redshift JDBC…

SCT on EC2 Windows から Redshift に接続する

AWS

macOS版 SCT がなくなったので、SCT on EC2 Windows で使う手順。 macOS へアプリケーションインストール AWS CLI v2 Session Manager Plugin Microsoft Remote Desktop EC2インスタンス作成 EC2(Windows)インスタンス作成 AMI: Microsoft Windows Server …

Redshift に import した UDF を確認する

AWS

Redshift に import した UDF を確認する。 sample=# select * from pg_library a, pg_language b where a.language_oid = b.oid; name | language_oid | file_store_id | owner | lanname | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl…

Redshift で特定スキーマの持つファンクションを調べる

AWS

SQL select a.proname, a.proacl, a.pronamespace, b.nspname from pg_proc a, pg_namespace b where b.nspname = 'aws_teradata_ext' and a.pronamespace = b.oid order by a.proname; 実行結果 proname | proacl | pronamespace | nspname ---------------…

Redshift で毎日決まった時間に一時停止する

AWS

IAMロールを作成する IAMロール RedshiftPauseResumeRole を作成 Permissions policies IAMポリシー RedshiftPauseResumeRolePolicy を作成してアタッチ { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action":…

Redshift で COPY コマンド実行時の query_temp_blocks_to_disk を調べる

AWS

Redshift で COPY コマンド実行時に query_temp_blocks_to_disk が使われることがあることを確認した。 QMR(Query Monitoring Rule) で query_temp_blocks_to_disk > 1MB のクエリを中止するよう設定した上で、分散キー・ソートキーが指定されたテーブルに非…

Redshift のデータシェアリング設定手順

AWS

producer 側 create datashare test_db; alter datashare test_db set publicaccessible = true; alter datashare test_db add schema sample1, sample2; -- consumer 側で "select current_namespace;" を実行し、以下のクエリの <name space> に指定する grant usage o</name>…

Redshift で CREATE TEMP TABLE は QMR の Memory to disk (1 MB blocks) にひっかかる

AWS

Redshift で CREATE TEMP TABLE は QMR(Query Monitoring Rule) の Memory to disk (1 MB blocks) の制限にひっかかることを確認した。 準備 QMR の設定 テーブルを作成する CREATE TABLE lineorder ( lo_orderkey INTEGER NOT NULL, lo_linenumber INTEGE…

psql の変数にクオーテーションをつける方法

:'変数名' とすればよい。 dev=# SELECT current_database() AS database_name; database_name --------------- dev (1 row) dev=# \gset dev=# select :'database_name'; ?column? ---------- dev (1 row) 参考 psqlの変数にクォーテーションをつける方法 -…

Redshift を時限で一時停止・起動する設定

AWS

Redshift クラスターを土日&夜間に一時停止しコストを削減する - サーバーワークスエンジニアブログ

Redshift で分散スタイル変更時の VACUUM 要否

AWS

Redshift で分散スタイル変更時の VACUUM 要否を確認してみた。 EVEN分散->KEY分散に変更した場合 テーブル作成 dev=# drop table public.customer cascade; dev=# create table public.customer ( c_custkey integer not null, c_name varchar(25) not null…

Redshift で SPLIT_TO_ARRAY 関数でデリミタ区切りのリストを横縦変換する

AWS

テーブルのフィールドにカンマ区切りのデータを登録する。 dev=# create table pivot_test (id int, txt varchar); CREATE TABLE dev=# insert into pivot_test values (1,'AZ, Sidmar,1'),(2,'Kaihatsu,Suarez,9'),(3,'Azuma,Neymar,11'),(4,'OZ,Iniesta,8'…

Redsfhit でどのグループにユーザーが所属しているか確認する

AWS

クエリ select pg_user.usename, pg_user.usesysid, pg_group.groname, pg_group.grolist from pg_user,pg_group; 実行結果 usename | usesysid | groname | grolist ------------------------------+----------+----------------------------+--------- rds…

AWS CLI v2 のページャーを無効化する

AWS

Config で設定 恒久的にページ分割を無効化したい場合は、~/.aws/config ファイルに以下のように書きます。 ~/.aws/config [default] cli_pager= export コマンドで設定 一時的にページ分割を無効化したい場合は、export や setx コマンドで以下のように設定…

Redshift のパラメータグループを AWS CLI で設定する

AWS

マネコンでパラメータグループやワークロード設定を行う。 設定したパラメータを表示する % aws redshift describe-cluster-parameters --parameter-group-name poc-auto-wlm (中略) { "ParameterName": "max_concurrency_scaling_clusters", "ParameterVa…

git rm で fatal: pathspec did not match any files と怒られる

git

事象 git rm でファイルを削除しようとすると、"fatal: pathspec 'ファイルパス' did not match any files" と怒られる。 % git rm ./.DS_Store fatal: pathspec './.DS_Store' did not match any files 原因 Gitに登録していないファイルのため。普通にファ…

GitHub から clone しようとすると、"Permission denied (publickey). fatal: Could not read from remote repository." と怒られる

事象 GitHub から clone しようとすると、"Permission denied (publickey). fatal: Could not read from remote repository." と怒られる。 % git clone git@github.com:yoheia/redshift_concurrent_query_executer.git Cloning into 'redshift_concurrent_q…

Redshift でテーブルにアクセス権があるのに "permission denied for schema ..." と怒られる

事象 ユーザーにテーブルに対する権限を付与しているのに "permission denied for schema ..." と怒られる。 こんな感じでアクセス権を付与しているが、 % psql "host=redshift-cluster-poc.********.ap-northeast-1.redshift.amazonaws.com user=awsuser db…

よく使う pgbench のオプション

ベンチマーク用オプション -t: 指定した回数トランザクションを実行する (回数を指定) -T: 指定した秒数トランザクションを実行する(期間を指定) -c: データベースセッション数 -j: ワーカースレッド数 -f : 実行するSQLスクリプトファイル名 -r: コマン…