ストリームのオブジェクトのバックフィルを管理する

Datastream のバックフィルを使用すると、進行中の変更データ キャプチャとともに、ソース オブジェクトから宛先に過去のデータのスナップショットを読み込むことができます。ソースを構成するときに [過去のデータをバックフィルする] を選択しなかった場合は、完全バックフィルまたは部分バックフィルを手動で開始できます。バックフィルを開始すると、データが誤って削除された場合に宛先オブジェクトを再同期することもできます。

ストリームの実行中に、オブジェクトのステータスをモニタリングし、アクティブなバックフィルをいつでも停止できます。オペレーションを停止すると、破損したスキーマやデータが複製されなくなり、並列タスクを 1 つずつ実行してソースの負荷を軽減できます。

オブジェクトのステータス

オブジェクトのバックフィルの開始と停止のライフサイクルには、次のようなステータスがあります。

  • ステータスなし(UI では - と表示): オブジェクトがこのステータスを受け取る理由は次のとおりです。

    • ストリームはまだ開始していません。
    • [バックフィル過去のデータ] チェックボックスがオンになっていません(そのため、バックフィルが手動として定義されています)。
    • このオブジェクトは、自動的にバックフィルから明示的に除外されています。
    • ストリームは、将来のテーブルを含むように構成されています。この場合、新しいテーブルがソースに追加されても、自動バックフィル タスクは作成されません(通常、新しいテーブルにはバックフィルする過去のデータがないため)。
  • Pending: オブジェクトのバックフィルがまだ開始されていません。

  • Active: オブジェクトのバックフィルが進行中です。

  • Completed: オブジェクトのバックフィルが完了しました。

  • Stopped: オブジェクトのバックフィルが停止しています。オブジェクトのバックフィルが再度開始されると、Datastream はオブジェクトに関連付けられている既存のデータをすべてソースから宛先にストリーミングします。

  • Failed: オブジェクトのバックフィルが失敗したため、バックフィルを再度開始する必要があります。

バックフィルを開始

  1. Google Cloud コンソールの [ストリーム] ページに移動します。

    [ストリーム] ページに移動

  2. バックフィルを開始するオブジェクトを含むストリームをクリックします。

  3. [オブジェクト] タブをクリックします。

  4. バックフィルを開始する各オブジェクトのチェックボックスをオンにします。

  5. [バックフィルを開始] をクリックします。

  6. オブジェクトを 1 つだけ選択した場合は、ダイアログで [オブジェクトのバックフィルを開始] をクリックします。複数のオブジェクトを選択した場合は、[オブジェクトのバックフィルを開始] をクリックします。

    Datastream が選択したオブジェクトのバックフィルを開始し、各オブジェクトのステータスが Pending から Active、Completed に変わります。オブジェクトのステータスが Completed の場合、Datastream がオブジェクトのすべてのデータを読み取ったことを意味しますが、データが宛先に読み込まれている可能性があります。

部分的なバックフィルを開始する

完全なバックフィルに加えて、部分的なバックフィルを実行して、ソースから宛先に特定のデータのサブセットを読み込むことができます。これを行うには、カスタム フィルタとして SQL WHERE 句を指定します。

Datastream は、次のソースの部分バックフィルをサポートしています。

  • SQL Server
  • Spanner
  • Oracle
  • PostgreSQL
  • MySQL

部分的なバックフィルを開始するには:

  1. Google Cloud コンソールの [ストリーム] ページに移動します。

    [ストリーム] ページに移動

  2. バックフィルを開始するオブジェクトを含むストリームをクリックします。

  3. [オブジェクト] タブをクリックします。

  4. バックフィルを開始するオブジェクトを選択します。

  5. [バックフィルを開始] をクリックします。

  6. 表示されたパネルで、[カスタム フィルタを有効にする] チェックボックスをオンにします。

  7. SQL の WHERE 句を入力します。例: product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'

  8. [バックフィルを開始] をクリックします。

Datastream がフィルタを検証します。検証に失敗すると、エディタの上にエラー メッセージが表示されます。検証が成功すると、Datastream はバックフィル ジョブを開始します。

サポートされているカスタム フィルタの構文

カスタム フィルタを指定すると、Datastream は SQL WHERE 句構文の基本的なサブセットをサポートします。サポートされている要素は次のとおりです。

  • 論理演算子: AND、OR
  • 比較演算子: =、<、>、<=、>=、!=
  • 条件: IN、NOT IN、IS NULL、IS NOT NULL
  • グループ化: 条件グループを定義するための括弧 ()
  • 値:

    • 文字列: 一重引用符で囲まれたテキスト(例: 'value')。
    • 数値: 整数(123)、小数(123.45)、負の数(-10)、指数付きの数値(1.2e3)。
    • ブール値: TRUE または FALSE。大文字と小文字を区別するキーワード。
  • ID:

    • 修飾: 列名は、ドットを使用してスキーマまたはテーブルを指定することで完全修飾できます(例: myColumn、myTable.myColumn、mySchema.myTable.myColumn)。
    • 引用符なしの識別子: 英数字とアンダースコアを使用できます。先頭は英字またはアンダースコアにする必要があります。列名またはテーブル名の大文字と小文字の区別は、ターゲット データベースによって異なります。
    • 二重引用符で囲まれた識別子: 二重引用符(")で囲む必要があります。

部分的なバックフィルの制限

特定のステートメント、演算子、キーワードは明示的に禁止されており、使用するとエラーが発生します。たとえば、次のようなものが挙げられます。

  • コメント(--、/* */ など)。
  • 関数(UPPER(column)、NOW() など)。
  • 算術式(例: column + 1 > 10)。
  • LIKE 演算子。LIKE では、% や _ などのワイルドカードはサポートされていません。
  • BETWEEN 演算子。代わりに >= と <= を使用してください。
  • サブクエリ(WHERE 句内の (SELECT ...) など)。
  • CASE ステートメント(例: CASE WHEN ... END)。
  • 列の比較(column1 = column2 など)。比較はリテラルに対して行う必要があります。
  • DATE と TIME の特定の型または関数。
  • 配列または JSON 固有の演算子。
  • 明示的なキャスト(例: CAST(column AS INT))。

バックフィルを停止

  1. Google Cloud コンソールの [ストリーム] ページに移動します。

    [ストリーム] ページに移動

  2. バックフィルを停止するオブジェクトを含むストリームをクリックします。

  3. [オブジェクト] タブをクリックします。

  4. バックフィルを停止する各オブジェクトのチェックボックスをオンにします。

  5. [バックフィルを停止] をクリックします。

  6. オブジェクトを 1 つだけ選択した場合は、ダイアログで [オブジェクトのバックフィルを停止] をクリックします。複数のオブジェクトを選択した場合は、[オブジェクトのバックフィルを停止] をクリックします。

    Datastream が選択したオブジェクトのバックフィルを停止し、各オブジェクトのステータスが Stopped に変わります。

    オブジェクトがこのステータスになると、オブジェクトのバックフィルは停止しています。オブジェクトのバックフィルが再度開始されると、Datastream はオブジェクトに関連付けられている既存のデータをすべてソースから宛先にストリーミングします。

次のステップ