
SNOWFLAKE ストリーム作成時のカラム
❓ 質問
テーブルに対してストリームを作成するときに、以下のどのカラムが追加されますか?(3つ選択してください):
METADATA$ACTION
METADATA$ISINSERT
METADATA$ISUPDATE
METADATA$ISDELETE
METADATA$ROW_ID
✅ 正しい答え
1. METADATA$ACTION
3. METADATA$ISUPDATE
5. METADATA$ROW_ID
📝 解説
Snowflakeのストリームをテーブルに作成すると、テーブルのデータ変更(INSERT、UPDATE、DELETE)を追跡するために特定のメタデータカラムが自動的に追加されます。これらのカラムは、データの変更内容を理解しやすくするために役立ちます。
追加されるメタデータカラム:
METADATA$ACTION
内容: 行に対して行われたDML操作の種類を示します。
値: 'INSERT', 'UPDATE', 'DELETE' のいずれか。
METADATA$ISUPDATE
内容: 行がUPDATE操作の一部であるかどうかを示すブール値。
値: TRUE(更新された行)、FALSE(それ以外)。
METADATA$ROW_ID
内容: 変更された各行に対する一意の識別子。
用途: データの変更を正確に追跡し、重複を防ぐため。
選択肢にないカラム:
METADATA$ISINSERT と METADATA$ISDELETE
理由: これらのカラムは自動的には追加されません。METADATA$ACTIONカラムを使用して、操作がINSERTやDELETEであるかを判断できます。
💡 試験準備のアドバイス
1. 覚え方
キーワードで覚える: 「アクション(ACTION)」「更新フラグ(ISUPDATE)」「行ID(ROW_ID)」
頭文字で覚える: Action, IsUpdate, Row_ID → AIR
2. 理解を深めるポイント
METADATA$ACTION
イメージ: このカラムは「何が起きたか」を示します。行が挿入されたのか、更新されたのか、削除されたのかを教えてくれます。
METADATA$ISUPDATE
イメージ: これは「これは更新ですか?」という質問に答えるフラグです。
METADATA$ROW_ID
イメージ: 各行に貼られた「名前タグ」のようなものです。一意に行を識別します。
3. サンプルクエリで理解
sql
SELECT
*,
METADATA$ACTION,
METADATA$ISUPDATE,
METADATA$ROW_ID
FROM
my_stream;
説明: ストリームmy_streamからデータとメタデータカラムを取得します。
4. 誤答を防ぐポイント
METADATA$ISINSERT や METADATA$ISDELETE は存在しないことを覚えておく。
METADATA$ACTION を使って、挿入や削除の操作を判断します。