見出し画像

SNOWFLAKE ストリーム作成時のカラム


❓ 質問

テーブルに対してストリームを作成するときに、以下のどのカラムが追加されますか?(3つ選択してください):

  1. METADATA$ACTION

  2. METADATA$ISINSERT

  3. METADATA$ISUPDATE

  4. METADATA$ISDELETE

  5. METADATA$ROW_ID


✅ 正しい答え

  • 1. METADATA$ACTION

  • 3. METADATA$ISUPDATE

  • 5. METADATA$ROW_ID


📝 解説

Snowflakeのストリームをテーブルに作成すると、テーブルのデータ変更(INSERT、UPDATE、DELETE)を追跡するために特定のメタデータカラムが自動的に追加されます。これらのカラムは、データの変更内容を理解しやすくするために役立ちます。

追加されるメタデータカラム:

  1. METADATA$ACTION

    • 内容: 行に対して行われたDML操作の種類を示します。

    • 値: 'INSERT', 'UPDATE', 'DELETE' のいずれか。

  2. METADATA$ISUPDATE

    • 内容: 行がUPDATE操作の一部であるかどうかを示すブール値。

    • 値: TRUE(更新された行)、FALSE(それ以外)。

  3. METADATA$ROW_ID

    • 内容: 変更された各行に対する一意の識別子。

    • 用途: データの変更を正確に追跡し、重複を防ぐため。

選択肢にないカラム:

  • METADATA$ISINSERTMETADATA$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$ISINSERTMETADATA$ISDELETE は存在しないことを覚えておく。

  • METADATA$ACTION を使って、挿入や削除の操作を判断します。


いいなと思ったら応援しよう!