|BigQueryOF|の設定

注釈

このコネクタは、 Snowflakeコネクタ規約 に従うものとします。

このトピックでは、|BigQueryOF|を設定する手順について説明します。

前提条件

  1. Openflow Connector for Google BigQuery について を確認します。

  2. ランタイムのデプロイメントを設定します。

  3. |OFSFSPCS-plural|を使用する場合、:doc:`必要なドメインの構成</user-guide/data-integration/openflow/setup-openflow-spcs-sf-allow-list>`を精査し、コネクタに必要な:ref:`ドメイン<label-of_bq_req_domains>`へのアクセス許可を付与していることを確認します。

  4. Openflow管理者ロール、またはOpenflowの管理に使用する類似のロールへのアクセス権があることを確認します。

  5. コネクタを管理するSnowflakeサービスユーザーを作成する場合は、キーペア認証を作成していることを確認します。詳細については、 :doc:` キーペア認証 </user-guide/key-pair-auth>` をご参照ください。

必要なエンドポイント

コネクタが機能するためには、以下のエンドポイントが必要です。

  • bigquery.googleapis.com:443

  • bigquerystorage.googleapis.com:443

  • oauth2.googleapis.com:443

Openflow - BYOCを使用している場合は、上記のエンドポイントへのTLS443アクセスを許可するために、クラウドネットワークエグレスを構成する必要があります。|OFSFSPCS-plural|を使用している場合は、ネットワークルールと外部アクセス統合(EAI)を作成する必要があります。次に、SnowflakeロールにEAIに対する使用権限を付与します。

BigQuery を設定する

  1. Google Cloudサービスアカウントを作成し、BigQueryデータの読み取りに必要な権限を付与します。コネクタは認証にこのアカウントを使用します。

    このアカウントには次の権限が必要です。

重要

``BigQuery Data Editor``は個々のデータセットではなく、**プロジェクトレベル**で付与される必要があります。コネクタは``{project}.{region}.INFORMATION_SCHEMA.TABLES``に対してクエリを実行し、構成されたすべてのリージョンのテーブルを検出します。これはプロジェクトレベルのアクセスが必要なリージョンスコープビューです。コネクタは``{project}.{dataset}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE``に対してもクエリを実行し、複製された各テーブルの主キーを特定します。プロジェクトレベルのアクセス権がないと、クエリは``Access Denied``エラーで失敗し、コネクタは正しく動作しません。

  1. サービスアカウントに対応するJSONキーファイルを生成してダウンロードします。コネクタの構成には、このファイルの全内容が必要です。

  2. 各ソーステーブルの変更履歴を有効にして、コネクタが増分複製を実行できるようにします。この機能により、BigQueryは行レベルの変更(挿入、更新、削除)を追跡できるようになります。コネクタはこれを使用して、データを効率的に同期します。

    各テーブルについて、BigQueryコンソールで次のクエリを実行します。

    ALTER TABLE `project.dataset.table`
    SET OPTIONS (enable_change_history = TRUE);
    

Snowflakeアカウントをセットアップする

Openflow管理者として、以下のタスクを実行してSnowflakeアカウントを設定します。

  1. Snowflakeサービスユーザーを作成します。

    USE ROLE USERADMIN;
    CREATE USER <openflow_service_user>
      TYPE=SERVICE
      COMMENT='Service user for Openflow automation';
    
  2. ユーザーの秘密キーをファイルに格納して、コネクタの構成に提供します。詳細については、 :doc:` キーペア認証 </user-guide/key-pair-auth>` をご参照ください。

    ALTER USER <openflow_service_user> SET RSA_PUBLIC_KEY = '<pubkey>';
    
  3. 複製されたデータを格納するデータベースを作成し、USAGEおよびCREATE SCHEMA権限を付与することで、Snowflakeユーザーがそのデータベースにオブジェクトを作成するための権限を設定します。

    USE ROLE ACCOUNTADMIN;
    CREATE DATABASE IF NOT EXISTS <destination_database>;
    GRANT USAGE ON DATABASE <destination_database> TO USER <openflow_service_user>;
    GRANT CREATE SCHEMA ON DATABASE <destination_database> TO USER <openflow_service_user>;
    
  4. コネクタ用に新しいウェアハウスを作成するか、既存のウェアハウスを使用します。

    新しいウェアハウスを作成するには、次の操作を行います。

    CREATE WAREHOUSE <openflow_warehouse>
    WITH
       WAREHOUSE_SIZE = 'MEDIUM'
       AUTO_SUSPEND = 300
       AUTO_RESUME = TRUE;
    GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO USER <openflow_service_user>;
    

    で開始する MEDIUM ウェアハウスのサイズから、レプリケートされるテーブルの量とデータの転送量に応じてサイズを実験します。

    サイズを増やす必要があるかどうかを判断するには、データ複製の進行中にコネクタとデータベースをモニターします。増分複製中に大幅な遅延が発生する場合は、より大きなウェアハウスサイズを試してください。ただし通常、テーブル数が多い場合は、ウェアハウスサイズを増やす代わりに:doc:`マルチクラスターウェアハウス</user-guide/warehouses-multicluster>`を使用する方が適切にスケールできます。

  5. 外部アクセス統合を作成して、Snowflake外部へのネットワークアクセスを有効にします。

    注意

    ランタイムがOpenflow - BYOCで実行される場合、外部アクセス統合(EAI)を作成する必要はありません。代わりに、クラウドネットワークのエグレスを構成して、以下のエンドポイントへのTLS 443アクセスを許可します。

    必要なhost:portエンドポイントは:ref:`label-of_bq_req_domains`にリストされています。

    コネクタが必要なGoogle APIsをSnowflakeがホストするランタイムから呼び出せるようにするには、ネットワークルールと外部アクセス統合(EAI)を作成する必要があります。次に、SnowflakeロールにEAIの使用権限を付与します。

    外部アクセス統合とネットワークルールを作成し、アクセス権を付与するには、次の手順を実行します。

    1. コネクタから必要なGoogle APIsへのアクセスを可能にするネットワークルールを作成します。

      USE ROLE ACCOUNTADMIN;
      USE DATABASE <openflow_network_db>;
      
      CREATE OR REPLACE NETWORK RULE openflow_<runtime_name>_network_rule
        TYPE = HOST_PORT
        MODE = EGRESS
        VALUE_LIST = (
          'bigquery.googleapis.com:443',
          'bigquerystorage.googleapis.com:443',
          'oauth2.googleapis.com:443'
        );
      
    2. ネットワークルールを参照する外部アクセス統合を作成します。

      CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION openflow_<runtime_name>_eai
        ALLOWED_NETWORK_RULES = (openflow_<runtime_name>_network_rule)
        ENABLED = TRUE;
      
    3. 統合に対するSnowflakeロールUSAGEを付与します。

      GRANT USAGE ON INTEGRATION openflow_<runtime_name>_eai
        TO ROLE openflow_runtime_role_<runtime_name>;
      

コネクタをインストールする

コネクタをインストールするには、データエンジニアとして次を実行します。

  1. Openflow概要ページに移動します。Featured connectors セクションで、 View more connectors を選択します。

  2. Openflowのコネクタページでコネクタを探し、 Add to runtime を選択します。

  3. Select runtime ダイアログで、Available runtimes ドロップダウンリストからランタイムを選択して Add をクリックします。

    注釈

    コネクタをインストールする前に、コネクタが取り込んだデータを格納するためのデータベースとスキーマをSnowflakeで作成したことを確認します。

  4. Snowflakeアカウント認証情報でデプロイメントを認証し、Snowflakeアカウントへのランタイムアプリケーションのアクセスを許可するよう求められたられたら、 Allow を選択します。コネクタのインストールプロセスは数分で完了します。

  5. Snowflakeアカウント認証情報でランタイムを認証します。

コネクタプロセスグループが追加されたOpenflowキャンバスが表示されます。

コネクタを構成する

コネクタを構成するには、次のステップを実行します。

  1. 追加されたランタイムを右クリックし、:ui:`Parameters`を選択します。

  2. フローパラメーターの指定 の説明に従って、必要なパラメーター値を入力します。

フローパラメーターの指定

このセクションでは、以下のパラメーターコンテキストに基づいて構成できるフローパラメーターについて説明します。

  • `BigQueryソースパラメーター`_BigQueryからデータを読み込むための構成の定義に使用されます。

  • `BigQuery宛先パラメーター`_Snowflakeとの接続を確立するために使用します。

  • `BigQuery取り込みパラメーター`_複製するテーブルとビューの指定に使用されます。

BigQueryソースパラメーター

パラメーター

説明

BigQueryプロジェクト名

BigQueryのデータセットとテーブルを含むGoogle Cloudプロジェクトの一意の識別子。

確認場所:BigQuery Studio(Google Cloud Console > BigQuery)を開き、左側のExplorerペインでプロジェクトにカーソルを合わせてProject IDを確認します。

example-team-gcp

GCP サービスアカウント JSON

認証に使用されるGoogle Cloud PlatformサービスアカウントのJSONキーファイルの内容全体。サービスアカウントに、BigQuery Job UserやBigQuery Data ViewerロールなどのBigQuery操作を実行するために必要なIAM権限があることを確認します。

入手場所:Google Cloud Console > IAM & Admin > Service Accounts > サービスアカウントを選択 > Keysタブ > Add key > Create new key > JSON。これにより.jsonファイルがダウンロードされます。ファイルを開き、ファイルの内容全体(中括弧を含む)をこのフィールドに貼り付けます。

BigQuery宛先パラメーター

パラメーター

説明

Snowflake認証ストラテジー

SPCS を使用する場合は、認証戦略の値として SNOWFLAKE_SESSION_TOKEN を使用します。BYOC を使用する場合は、認証戦略の値として KEY_PAIR を使用します。

KEY_PAIR

Snowflakeアカウント識別子

以下を使用する場合:

  • セッショントークン認証ストラテジー空白にする必要があります。

  • KEY_PAIR:データを永続化するSnowflakeアカウント名。

宛先データベース

複製先のデータベース名。大文字と小文字の混在がサポートされています。

Snowflake秘密キーファイル

以下を使用する場合:

  • セッショントークン認証ストラテジー:プライベートキーファイルは空白である必要があります。

  • KEY_PAIR:Snowflakeへの認証に使用される RSA プライベートキーを含むファイルをアップロードします。これは、 PKCS8 標準に従ってフォーマットされ、標準の PEM ヘッダーとフッターを含んでいる必要があります。ヘッダー行は で始まります -----BEGIN PRIVATE.秘密キーファイルをアップロードするには、Reference assetチェックボックスをオンにします。

Snowflake秘密キーパスワード

以下を使用する場合:

  • セッショントークン認証ストラテジー空白にする必要があります。

  • KEY_PAIR:Snowflakeプライベートキーファイルに関連付けられたパスワードを提供します。

Snowflakeロール

以下を使用する場合:

  • セッショントークン認証ストラテジーSnowflakeロールを使用します。Openflow UIでランタイムの「詳細を表示」に移動すると、Snowflakeロールが見つかります。

  • KEY_PAIR認証ストラテジーサービスユーザーのために構成された有効なロールを使用します。

Snowflakeのユーザー名

以下を使用する場合:

  • セッショントークン認証ストラテジー空白にする必要があります。

  • KEY_PAIR:Snowflakeインスタンスへの接続に使用するユーザー名を提供します。

Snowflakeウェアハウス

コネクタが使用するウェアハウスの名前。

BigQuery取り込みパラメーター

パラメーター

説明

BigQuery リージョン

BigQueryデータセットをクエリする場所のコンマ区切りリストを指定します。同じリスト内で、リージョンとマルチリージョンの場所を組み合わせることができます。

us,eu,us-west1

含まれるデータセット名

複製するデータセットのコンマ区切りリスト(選択したすべてのリージョンでクエリされます)。

sales_data,marketing_leads

含まれるデータセット名正規表現

複製するデータセット名を指定する正規表現(選択したすべてのリージョンでクエリされます)。含まれるデータセット名と組み合わせて、一致するすべてのデータセットを含めます。注:REGEXP表現はGoogleのRE2構文と一致している必要があります。

^sales_.*

含まれるテーブル名

データセット間で複製するテーブルのコンマ区切りリスト。

transactions,customers

含まれるテーブル名正規表現

データセット間で複製するテーブル名を指定するための正規表現。含まれるテーブル名と組み合わせて、一致するすべてのテーブルを含めます。注:REGEXP表現はGoogleのRE2構文と一致している必要があります。

^revenue_.*

含まれるビュー名

データセット間で複製するビューのコンマ区切りリスト。

customer_summary,revenue_report

含まれるビュー名正規表現

データセット間で複製するビュー名を指定するための正規表現。含まれるビュー名と組み合わせて、一致するすべてのビューを含めます。注:REGEXP表現はGoogleのRE2構文と一致している必要があります。

^report_.*

増分同期の頻度

コネクタが各テーブルに対して増分同期を実行する頻度。サイクルの実行時間が設定された間隔よりも長い場合でも、実行が重複することはありません。次の実行は、前の実行が終了するのを待ちます。BigQueryはウィンドウの最大サイズを24時間に制限しているため、スケジュールはこの値より頻繁にする必要があります。

10m

ビュー同期頻度

各ビューに対してコネクタが同期を実行する頻度。サイクルの実行時間が設定された間隔よりも長い場合でも、実行が重複することはありません。次の実行は、前の実行が終了するのを待ちます。ビューの取り込みはCDCをサポートしていません。単純に切り捨ててロードされます。

1h

仮テーブルデータセット

CDCジャーナルテーブルや、ビュー取り込み用の仮テーブルなど、必要な仮テーブルが作成されるデータセット。Snowflakeでは、取り込まれたデータセットはこの目的のために使用せず、仮テーブルには別のデータセットを使用することをお勧めします。

openflow_temp

フローを実行する

  1. プレーンを右クリックし、 Enable all Controller Services を選択します。

  2. インポートしたプロセスグループを右クリックし、 Start を選択します。コネクタがデータの取り込みを開始します。

次のステップ

  • コネクタのインストール後に実行できるタスクについて詳しくは、:doc:`コネクタを使用する<use>`を参照してください。

  • フローの監視について詳しくは、:doc:`フローをモニターする</user-guide/data-integration/openflow/monitor>`を参照してください。