メイン コンテンツをスキップする

変更処理を使用した Snowflake ストレージ データ アセットの作成

ナビゲーション バーからアクセスできる データサービス ホームにストレージ データアセットを作成します。ストレージ データ アセットは、Snowflake ランディング エリアからデータをピックアップし、データを分析用のテーブルに変換します。データは、CDC (データ キャプチャの変更) を使用して、入力データ アセットの変更から定期的にテーブルに適用されます。ビューは、格納されたテーブルのデータへのより用途の広いアクセスを提供するためにも作成されます。

はじめに

Snowflake でデータを生成すると、ストレージ テーブル、変更テーブル、ビューが生成されます。データを消費する場合のベスト プラクティスは、ビューを使用することです。ビューにはデータの同時実行性の向上など、テーブルに比べていくつかの利点があります。使用するビューがわからない場合は、最初にテーブルの標準ビューを試してください。

変更処理を使用して、ランディング データ アセットから読み込んだストレージ データ アセットによって生成される Snowflake テーブルとビュー

次のテーブルとビューが常に作成されます。

  • テーブル

    テーブルには、保存されている物理データが含まれています。

  • テーブルの標準ビュー

    テーブルの標準ビューでは、テーブルに適用されているデータのみを表示できます。これは、まだ適用されていない最新の変更テーブル データが含まれていないことを意味します。待機時間よりも一貫性を優先する場合は、標準ビューを使用できます。

  • 変更テーブル ビュー

    これは、ランディング スキーマの変更テーブルのビューです。

次の詳細ビューの作成を選択することもできます。

  • ヘッダー付きの標準ビュー

    これは、ストレージ データ アセットによって生成される追加のヘッダー項目を持つテーブルの標準ビューです。

  • ライブ ビュー

    ライブ ビューには、まだ適用されていない変更テーブルのデータが含まれます。これにより、変更されたデータを頻繁に適用しなくても、待機時間の短いデータを表示できます。ライブ ビューは標準ビューよりも効率が低く、より多くのリソースを必要とします。

生成されるテーブルとビューの詳細については、Snowflake で生成される テーブルとビューの構造 を参照してください。

Snowflake ストレージ データ アセットの作成

  1. Data Integration ホーム で [新規追加] をクリックし、[データアセットの作成] を選択します。
  2. [データアセットの作成] ダイアログで、次のフィールドに入力します:

    • 名前:データアセットの名前。

    • スペース:データアセットの保存先スペースを指定します。

    • アセット タイプ:[ストレージ (Snowflake)] を選択します。

    • [開く] を選択して、作成されたときに、データアセットを開きます。

    準備ができたら、[作成] をクリックします。

  3. [ソース データの選択] をクリックします。

  4. ストレージデータアセットのソースとして使用するランディングデータアセットを選択し、 [選択] をクリックします。タスク タイプが [フル ロード + CDC] のランディング データ アセットを選択します。タスク タイプがリスト ビューに表示されます。

    [設定] ダイアログが表示されます。

  5. [ストレージ] の設定の構成

    • 接続

      ストレージ Snowflake データベースへの書き込み権限と、ランディング データ アセットで使用される Snowflake データベースへの読み取り権限を持つデータ接続を選択します。データ接続が無い場合、作成する必要があります。

      注: OAuth 認証はハイブリッド データ配信ではサポートされていません。

      詳細については、[Snowflake 接続の作成 (英語のみ)] を参照してください。

    • 内部スキーマ

      これは、テーブルが作成されるスキーマの名前です。

    • データ アセット スキーマ

      これは、ビューが作成されるスキーマの名前です。

    注: [内部スキーマ] と [データ アセット スキーマ] と同じスキーマを使用できますが、それらを分離しておくと、スキーマへの異なるアクセスを設定できます。例えば、[内部スキーマ] へのアクセスを制限し、すべてのコンシューマーに [データ アセット スキーマ] へのアクセスを許可できます。
  6. [テーブルとビュー] の設定の構成

    以下は常に作成されます。

    • テーブル

    • テーブルの標準ビュー

    • 変更テーブルの標準ビュー

    次のビューの作成を選択することもできます。

    • ヘッダー付きの標準ビュー

    • ライブ ビュー

  7. [プレフィックスとサフィックス] の設定の構成

    このデータ アセットによって生成されたリソースを識別するためにプレフィックスを設定できます。これにより、テーブルとビューをプレフィックスで区別できるため、複数のデータ アセットで同じスキーマを再利用することもできます。

    生成されるビューにサフィックスを設定することもできます。

  8. [実行時間] の設定の構成

    • [間隔の適用] は分単位で設定できます。

      これにより、変更されたデータがストレージ テーブルに適用される頻度が設定されます。間隔の範囲は 1 分から 1440 分 (7 日) です。

      この間隔は、関連する Qlik Replicate タスクの更新頻度よりも低く設定しないことをお勧めします。データをより頻繁に適用すると、Snowflake リソースのコストも高くなります。

      別の方法として、低レイテンシーのデータがときどき必要な場合は、[間隔の適用] を高く保ち、ライブ ビューを使用できます。

    • [並列実行] でのデータベース接続の最大数を設定することができます。

    [実行時間] パラメータは、データ アセットがカタログ化されて実行された後に変更できます。この変更は、次の実際の処理に影響を与えます。

  9. [OK] をクリックして設定を確認します。データセットの生成を開始する前に、テーブル構造をプレビューできるようになりました。

  10. [保存] をクリックしてデータアセットを保存します。

  11. [実行] をクリックして、データセットの生成を開始します。

ランディング データのフルロードを既に実行している場合は、Snowflake テーブルが生成され、データが入力されます。

テーブルの生成のモニタリング

[モニター] をクリックすると、テーブルの生成のステータスと進行状況を監視することができます。最初のロードが実行されているときは、[フル ロード ステータス] で進行状況を表示できます。変更が処理されると、[変更の最後のバッチ] のステータスと進行状況を表示することもできます。

各テーブルまたは変更について、次の詳細を表示できます。

  • 状態

    これは、このテーブルまたは変更の現在の状態を示しています。

    • 完了 - ロードまたは変更が正常に完了しました。

    • ロード中 - テーブルまたは変更が処理されています。

    • キューに登録済み - テーブルまたは変更が処理されるのを待機しています

    • エラー - テーブルまたは変更の処理中にエラーが発生しました。

  • 開始

    ロードまたは変更処理が開始された時間。

  • 終了

    ロードまたは変更処理が終了した時間。

  • 期間

    hh:mm:ss の形式でのロードまたは変更処理の期間。

  • 処理済みレコード

    ロードまたは変更で処理されたレコードの数。

  • スループット (記録/秒)

    ロードが完了するまで、スループットは更新されません。

  • メッセージ

    ロードまたは変更が正常に処理されなかった場合にエラー メッセージを表示します。

複製タスクによってランディング エリアが更新されると、テーブルは新しいデータで継続的に更新されます。各バッチは、特定の期間のレコードに関連しています。最新のバッチの期間は [変更の最後のバッチ] で確認できます。

また、データ資産カードは データサービス ホームで確認することもできます。[データは次のように更新されます] が最終更新日時を表示する際に、分析ハブの [データ] の下にテーブルが表示されます。

[データ アセットは次のように更新されます] に示されている時点までのすべてのソース トランザクションからのデータは、このデータ アセットから利用できます。この情報は、すべてのテーブルがロードされ、最初の変更セットが適用されると、データ アセットで利用できるようになります。 ライブ ビューを生成することを選択した場合は、ライブ ビューが更新されたときに表示することもできます。

初回のロードが完了する前の変更バッチがある場合は、初回のロードが完了して変更の最初のバッチが適用されるまで、アセットカード内のデータは更新されません。例えば、100 万件の注文を含む注文テーブルと 1,000 万件の注文詳細を含む注文詳細テーブルを含むデータ アセットをロードするとします。テーブルは、フルロードを実行するのにそれぞれ 10 分と 20 分かかります。注文テーブルが最初にロードされ、次に注文の詳細テーブルがロードされます。注文テーブルのロード中に、新しい注文が挿入されました。そのため、注文の詳細がロードされると、注文テーブルにまだ存在しない新しい注文の詳細が含まれている可能性があります。注文と注文の詳細テーブルは同期され、変更の最初のバッチが適用された後、同時に完全に更新されます。

注: テーブルの生成を開始したときに、設定を変更したり、含まれるデータセットの設定を変更することはできません。

ストレージ データ アセットの操作

データサービス ホームのアセット メニューからストレージ データ アセットに対して以下の操作を行うことができます。

  • 開く

    これにより、ストレージ データ アセットが開きます。データ アセットに関するテーブル構造と詳細を表示し、変更の全ロードとバッチのステータスを監視できます。

  • 編集

    アセットの名前と説明を編集したり、タグを追加したりできます。

  • [停止]

    データ アセットの操作を停止できます。データ アセットはテーブルを更新し続けません。

  • 再開

    データ アセットは停止した時点から操作を再開できます。

  • 削除

    データ アセットを削除できます。

テーブルのリロード

開いていてアプリが実行されているストレージ データ アセットのテーブルをリロードできます。次の変更バッチが処理されると、リロードが開始されます。

ランディング データが 96 時間より古い場合は、このデータ アセットを実行する前に、このデータ アセットをフィードするランディング データ アセットのテーブルをリロードする必要があります。

  • すべてのテーブルをリロードするには:

    をクリックしてから、[リロード] します。

  • 特定のテーブルをリロードするには:

    1. [モニター] タブを開きます。

    2. リロードするテーブルを選択します。

    3. [テーブルのリロード] をクリックします。

Replicate タスクでエラーが発生した場合は、ストレージ データ アセットでリロードを実行する前に、Replicate タスクからランディング データ アセットをリロードする必要があります。

Snowflake で生成される テーブルとビューの構造

このセクションでは、データ アセット スキーマと内部スキーマで生成されるテーブルとビューの構造について説明します。

すべてのテーブルとビューは Qlik データサービス によって管理されます。他のツールを使用してデータを変更しないでください。

テーブル

テーブルは内部スキーマで生成されます。

名前付け: <INTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME><suffix for tables>

次のヘッダー項目がテーブル構造に追加されます。

テーブル ヘッダー項目
項目 タイプ 説明
hdr__key_hash varbinary(20)

すべてのレコードのプライマリ キーのハッシュ。

ハッシュ形式は SHA1 です。項目はバックスペース文字で区切られます。

hdr__timestamp 日付と時刻

UTC のタイムスタンプ

  • フル ロードから取得したデータの場合、フル ロード開始時間になります。

  • 変更テーブルを介して行われる変更の場合、それはレコードのタイムスタンプ項目になります。

hdr__operation varchar(1)

このレコードの最新の操作。

  • U - 変更テーブルから更新済み。

  • I - 変更テーブルから挿入済み

  • L - フル ロード タスクによって挿入済み。

ランディング データの削除は、ハード削除に変換されます。

アセット状態テーブル

アセット状態テーブルは、内部スキーマで生成されます。これは、トランザクションの一貫性のために、Qlik Replicate によって報告された最後に適用されたシーケンスと最後のシーケンスを維持するために使用されます。データ アセット内のすべてのオブジェクトは、同じアセット状態テーブルを使用します。

名前付け: <INTERNAL_SCHEMA>.[<PREFIX>]ASSET_STATE__<DATA_ASSET_ID>

アセット状態テーブル項目
項目 タイプ 説明
hdr__dataset_id varbinary(20)

データ セット ID。

hdr__change_seq varchar(35)

最後の変更シーケンスが適用されました。

hdr__timestamp 日付と時刻

UTC で適用された最後にコミットされたトランザクション時間。

テーブルの標準ビュー

ヘッダー付きの標準ビューは、選択した各ソース テーブルののデータ アセット スキーマで生成されます。このビューには、テーブル構造のすべての元の項目が含まれますが、内部スキーマのテーブルに追加されるヘッダー項目は含まれません。

Naming: <DATA_ASSET_SCHEMA>.[<PREFIX>]<TABLE_NAME>< Suffix for standard views for tables>

ヘッダー付きの標準ビュー

ヘッダー付きの標準ビューは、オプションで、選択した各ソース テーブルのデータ アセット スキーマで生成されます。このビューには、テーブルに追加されるヘッダー項目が含まれます。

名前付け: <DATA_ASSET_SCHEMA>.[<PREFIX>]<TABLE_NAME>< ヘッダー付きの標準ビューの拡張子>

ライブ ビュー

ライブ ビューには、テーブルを変更テーブルからの変更とマージする選択した各ソース テーブルのビューが表示されます。これにより、次の適用サイクルを待たずに、クエリにデータのライブ ビューが提供されます。変更テーブル ビューからマージされた変更は、Replicate からのイベントを使用してテーブル間でトランザクション整合性があります。ライブ ビューはデータ アセット スキーマで生成されます。

ライブ ビュー データ アセットは、変更がある場合、既定で 1 分ごとに Snowflake 操作を実行します。これは Qlik Replicate で変更できます。

名前付け: <DATA_ASSET_SCHEMA>.[<PREFIX>]<TABLE_NAME><ライブ ビューの拡張子>

変更テーブル ビュー

これは、選択した各ソース テーブルのランディング スキーマの変更テーブルのビューです。

名前付け: <DATA_ASSET_SCHEMA>.[<PREFIX>]<TABLE_NAME>< 変更テーブル ビューの拡張子>

次のヘッダー項目がテーブル構造に追加されます。

変更テーブル ヘッダー項目
項目 タイプ 説明
hdr__change_seq varchar(35) シーケンスを Qlik Replicate から変更します。
hdr__operation varchar(1)

このレコードの最新の操作。

  • U - 更新済み。

  • I - 挿入済み。

  • D - 削除済み。

hdr__timestamp 日付と時刻

Qlik Replicate からの UTC のタイムスタンプ。

hdr__key_hash varbinary(20)

Qlik Replicate 変更テーブルからのすべてのレコード プライマリ キーのハッシュ。