0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【データ分析基盤】SnowflakeのCoreProを受けての後学のための振り返り〜

Posted at

SnowflakeCoreProを受験

snowflakeの認定試験の登竜門であるSnowPro Coreを受けてきた際の後学の為の備忘メモを残しておきます。

振り返りが必要な項目について

フェデレーション認証とは?

定義:
SAML/OAuth 経由で Okta, Azure AD など IdP と Snowflake を連携する方式
特徴:
ユーザー認証は Snowflake ではなく IdP が行う
ログイン時は IdP の認証画面に遷移する(SSO、外部ブラウザ認証など)
SnowSQL では --authenticator externalbrowser を指定して起動

セキュアビューとは?

意図:
データのロジックやメタデータを秘匿化
ビューの中身を他ユーザーが確認できない(EXPLAIN でも不可)

違い:
通常ビューは内部構造や参照テーブルが見える
セキュアビューはセキュリティ上安全なマスキングの一種

PUT / COPY INTO / GET の違い

コマンド 用途
PUT ローカル → ステージ(アップロード)
COPY INTO ステージ → テーブル or テーブル → ステージ
GET ステージ → ローカル(ダウンロード)

Snowflakeからのアンロード/エクスポート
COPY INTO @stage FROM table_name を使用

例:

sql.sql
COPY INTO @my_stage/data_ 
FROM my_table 
FILE_FORMAT = (TYPE = 'CSV');
GET でローカルにダウンロード可能

OPERATE と USAGE の違い

権限 内容
USAGE オブジェクトの「存在確認・参照」が可能。操作はできない
OPERATE Warehouse や Task などの実行操作(Resume/Suspend や開始/停止)が可能

FLATTEN と LATERAL の使い方

FLATTEN:ARRAY や VARIANT のネストデータを行単位に展開

LATERAL:FLATTEN した行を他の列と一緒に結合するために使う

SELECT id, f.value
FROM json_table,
LATERAL FLATTEN(input => json_table.data) f;

浮動小数が扱えるフォーマット

Parquet, Avro, ORC
Snowflake が扱うデータ形式のうち、浮動小数点数に適した形式
アンロード時の FILE_FORMAT に指定可能

クエリプロファイルの見方(重要)

項目 内容
Time (ms) ステップごとの処理時間(遅延特定に重要)
Rows 処理された行数(大量に処理される箇所を特定)
Bytes scanned スキャンされたデータ量(マイクロパーティションの無駄確認)
Partitions scanned クラスタリングとフィルタの効き具合の指標

VARIANT の最大値

1セルあたり最大 16MB(非圧縮)
深いネストは最大 100 階層まで

ドライバーのバージョン確認方法

snowflakeのバージョンを格にする方法もあるので、下記に整理しておく。

ツール 方法
SnowSQL snowsql -v
JDBC SnowflakeDriver.class.getVersion() など Java コードで確認
Web UI Snowsight > Help > About(バージョン確認)

仮想ウェアハウスが詰まる原因と対処法

症状:
複数プロセスが同時に実行 → キューが溜まり遅くなる
時間が経てば自然回復することもあるが、それは一時的な対応に過ぎない

正しい対応方法:

対処方法 推奨度
JOINの見直し・クエリ最適化
ウェアハウスのサイズを上げる
マルチクラスターを設定しクラスター追加
SELECT句の最適化(不要列削除)
放置して時間解決を待つだけ

非相関・相関のサブクエリ

Snowflakeにおいてもサブクエリ発行時に非相関・相関のサブクエリの考え方がもちろんあるのでサブクエリの考え方は押さえておきたい。
簡単にイメージで説明すると
非相関サブクエリは、呼び出し元とサブクエリ内で参照しあっていない(=相関がない)、一方で相関サブクエリは、サブクエリ内で呼び出し元のテーブルなどが参照されている(=相関しあっている)と言うイメージになるかと思う。

下記がわかりやすくまとめられている。

タグについて

snowflakeには、スキーマレベルのオブジェクトとしてタグをつけることができるとのことで、概念については覚えておきたい。
https://docs.snowflake.com/ja/user-guide/object-tagging

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?