Snowflake

【Snowflake】ストアド ~ ステージ内でデータ0件の場合エラーにする ~

■ はじめに ステージからS3にファイルを読み込んで、 そのファイルデータをSnowflakeにロードするって処理がある。 その際にファイルがなかったら、意図的にエラーにして処理を 中断させることを考える (なんかオプションがあればいいんだけど、探したけど…

【Snowflake】ストアド ~ S3内にパーティション構成でUnloadする ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/12/11/202904 https://dk521123.hatenablog.com/entry/2022/12/16/143349 https://dk521123.hatenablog.com/entry/2022/12/26/211349 などで、何回か渡って、 Snowflake の ストアドプロシージャにつ…

【Snowflake】ストアド ~ 基本編 / 条件分岐 ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/12/23/223345 で、IF文を使ったが、 どうせなら、Snowflake の 条件分岐 をまとめておけば ストアドの基本的なことは、網羅されると思うので 今回でメモっておく。 目次 【0】Snowflake での条件分…

【Snowflake】ストアド ~ クエリ結果を受け取る ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/12/23/223345 のサンプルで、 ストアド内で Countの結果を使って処理したが 詳細は、あんまりよく分からず作った。 そこで、今回は、クエリ結果を受け取り処理することを 深堀りしてみた。 目次 【0…

【Snowflake】ストアド ~ 例外 / EXCEPTION ~

■ はじめに Snowflake でデータがなかったら エラーを発生させる必要が出てきたので ストアドの例外について調べてみた 目次 【1】例外の宣言 【2】例外発生 【3】EXCEPTION ブロック 使用上の注意 【4】サンプル 例1:0件だったら独自の例外を発生さ…

【Snowflake】【トラブル】COPY INTO したがデータが格納されていない

■ はじめに Snowflake でCOPY INTO <TABLE> した際のトラブルをメモっておく。 目次 【1】トラブル概要 1)SQL文例 【2】原因 【3】解決案 案1:データロードの際に「FORCE=TRUE」を指定 案2:Tempテーブル経由でINSERTする 【1】トラブル概要 COPY INTO <TABLE> で</table></table>…

【Snowflake】Snowflake ~ トランザクション ~

■ はじめに 業務作業で、でかいデータを使っていて、 途中で止めなくてはいけない(Abort)場合に、 トランザクションを張っていたら、 ちゃんとロールバックしているかが気になったので Snowflake の トランザクションについて調べてみた。 => 結論からいう…

【Snowflake】ストアド ~ デバッグログについて ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/12/11/202904 https://dk521123.hatenablog.com/entry/2022/12/16/143349 https://dk521123.hatenablog.com/entry/2022/12/17/000217 で、 Snowflake の ストアドプロシージャ(Stored Procedure) …

【Snowflake】ストアド ~ EXECUTE IMMEDIATE ~

■ はじめに EXECUTE IMMEDIATE文についてメモしておく。 目次 【1】EXECUTE IMMEDIATE 1)使いどころ 【2】サンプル 【3】その他のTips 1)二重ドル記号($$) 【1】EXECUTE IMMEDIATE * 指定されたSQL文の文字列を即時実行する https://docs.snowflak…

【Snowflake】ストアド ~ 基本編 / ループ ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/12/11/202904 の続き。 ストアド で ループする処理を学ぶ。 今回で、大分便利に使えるようになりそう、、、 目次 【1】Snowflakeのストアドのループ操作 1)FOR 2)WHILE 3)REPEAT 4)LOOP 【…

【Snowflake】ストアド ~ 入門編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/12/09/152837 で、Snowflakeには、Timerみたいに疑似的な処理がなさそうで その代替え案としてストアドプロシージャを軽く触ったのを きっかけに調べてみた。 目次 【1】ストアドプロシージャ (Stor…

【Snowflake】Snowflake ~ クエリの中断 ~

■ はじめに 小ネタ、、、 だと思ったが、実験などして意外と実りがあった。 クエリを中断(Abort; アボート)する必要があり 長時間掛かるクエリの場合、 Web UI上でできないこともあるので調べてみた 目次 【1】クエリの中断の仕方 1)実行クエリがWebUI…

【Snowflake】Snowflake ~ ネットワークポリシー ~

■ はじめに Snowflake の ネットワークポリシー(Network policy)について 触れたので、メモ。 難しいのかなっと思ったが、シンプルで結構簡単に理解できた。 目次 【1】ネットワークポリシー 【2】SQL文 1)CREATE NETWORK POLICY 2)ALTER ACCOUNT 3…

【Snowflake】Snowflake ~ データロードのパフォーマンス ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/11/15/221245 の続き。 データロードが時間が掛かるので、 データロードのパフォーマンスについて調べてみた。 目次 【0】データロードのパフォーマンス 補足:公式ドキュメントより 【1】ウェアハ…

【Snowflake】Snowflake ~ ウェアハウス負荷監視 ~

■ はじめに Snowflake で時間が掛かる処理があるため そのボトルネックの原因を知りたいのだが そもそも、どう調査していいものかが分からず そっから調査したのでメモ。 目次 【1】ウェアハウス負荷監視 1)ドキュメントについて 補足:リソースモニター…

【Snowflake】Snowflake ~ ウェアハウス / Warehouse ~

■ はじめに Snowflake の ウェアハウス(Warehouse、仮想ウェアハウスも同じ意味) について、こつこつまとめていく 目次 【1】ウェアハウス (Warehouse) 【2】SQL文 / コマンド 1)CREATE WAREHOUSE 2)ALTER WAREHOUSE 3)DROP WAREHOUSE 4)SHOW WA…

【Snowflake】Snowflake ~ リソースモニター ~

■ はじめに Snowflake における リソースモニター(Resource monitor)について メモしておく 目次 【1】リソースモニター(Resource monitor) 補足:Snowflakeクレジット 【2】SQL文 / コマンド 1)CREATE RESOURCE MONITOR 2)SHOW RESOURCE MONITORS…

【Snowflake】【トラブル】エラー「Error assuming AWS_ROLE」時の対応

■ はじめに 長い間、よくわからなかったSnowflakeの接続問題について やっと原因が理解できたので、メモする。 目次 【1】トラブル概要 【2】エラー内容 【3】原因 1)確認方法 【4】解決案 【1】トラブル概要 Snowflakeから、Integration(ストレージ…

【Snowflake】Snowflake ~ テーブルの簡易バックアップを考える ~

■ はじめに 念のために、Snowflakeの既存のテーブルをバックアップとる って作業が発生しそうなので、簡単な方法でできないか調べてみた => 結論としては、原始的にSQLでやることになりそうだが その経過で調べた「CREATE CLONE」についても触れる => あと、…

【Snowflake】Snowflake ~ ユーザ/ロールあれこれ ~

■ はじめに ユーザ操作について、 今までコマンド実行は知っていて使っていたのだが、 Web UIでのGUI操作(DROPなど)があるのを 知ったのでメモ。 目次 【1】コマンド操作 1)SHOW ROLES/USERS 2)DESCRIBE USER 【2】GUI操作 1)ユーザ削除の場合 2…

【Snowflake】Snowflake ~ Partition構成のデータを取り込む ~

■ はじめに パーティション (Partition) のようなパス構成 (e.g. s3://your-s3-bucket/test/demo/date=20221028/)のデータを Snowflake で取り込む必要がでてきそうだったので その方法についてまとめる。 後日談 * 色々調べてみると、同じようなことを公…

【Snowflake】【トラブル】エラー「Failure using stage area. ... AccessDenied」時の対応

■ はじめに Snowflake で エラー「Failure using stage area. ... AccessDenied」が 発生したので、メモ。 目次 【1】トラブル概要 【2】エラー内容 【3】原因 【4】解決案 【1】トラブル概要 以下の「エラーになったSQL文」を実行したところ、 以下の…

【Snowflake】Snowflake ~ SHOW GRANT ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/02/24/231532 を分冊。 SnowflakeのDBアクセス権限に関する調査において、 「SHOW GRANTS TO USER <user_name>」や 「SHOW GRANTS TO ROLE <role_name>」を使った。 個人的に結構よく使うので、まとめておく。 目次 【0】S</role_name></user_name>…

【Snowflake】Snowflake ~ 基本編 / View ~

■ はじめに Snowflake の View を調べたので、メモっとく。 目次 【1】View 【2】関連するSQL文 1)CREATE VIEW 【3】その他コマンド 1)SHOW VIEWS 2)DESCRIBE VIEW 【1】View https://docs.snowflake.com/ja/user-guide/views-introduction.html …

【Snowflake】Snowflake ~ Dynamic masking ~

■ はじめに 個人情報の扱いが厳しくなった昨今。 そこで、Snowflake におけるデータをマスキングする方法を 調べてみた。 目次 【1】ダイナミックマスキング 【2】適用方法 1)使用上の注意 【3】サンプル 例1:Hello world 例2:条件付きのマスキング…

【Snowflake】Snowflake ~ Replication ~

■ はじめに Snowflake の レプリケーション (Replication) について扱う。 なお、レプリケーション 自体については、 以下の関連記事を参照のこと 【DB】 レプリケーション https://dk521123.hatenablog.com/entry/2014/03/09/000100 目次 【0】公式ドキュ…

【SQL】SQLでマスキングを実装

■ はじめに SQLで個人情報保護のためのマスキングを実装する 可能性がでてきたので、予習。 なお、実行環境は、PostgreSQL。 目次 【1】電話番号をマスキング 【2】Emailをマスキング 【1】電話番号をマスキング -- 出力結果:01-2345-**** SELECT RPAD(S…

【Snowflake】Snowflake ~ 文字列操作関連 ~

■ はじめに Snowflake の 文字列操作関連 の関数を少しづつ書いていく。 目次 【1】RPAD / LPAD 【2】SUBSTR / SUBSTRING 【3】LEN / LENGTH 【4】REPLACE 【5】CHARINDEX 【6】SPLIT_PART 【1】RPAD / LPAD * RPAD = Right PADding? / Left PADding …

【Snowflake】Snowflake ~ Removeコマンド ~

■ はじめに https://dk521123.hatenablog.com/entry/2022/07/04/172738 の続き。 Snowflakeで実行に失敗した場合、 再度実行するのに、冪等性(べきとうせい)を保ちたい。 で、Data Unload する際に、前の実行結果を削除するために 使用する Removeコマンド…

【Snowflake】Snowflake ~ 基本編 / CREATE・ALTER TABLE ~

■ はじめに Snowflake の Table定義 (具体的には default値を変更) を変更する 必要ができたので、予習をしておく。 => 調べた結果、SnowflakeのALTER TABLEでは、 default値を変更は対象外だった、、、(後述参照) => OR REPLACE 使ってお茶を濁そうかなっ…