Dataflow SQL の使用

このページでは、Dataflow SQL の使用方法と Dataflow SQL ジョブの作成方法について説明します。

Dataflow SQL ジョブを作成するには、Dataflow SQL クエリを作成して実行します。

Dataflow SQL UI の使用

Dataflow SQL UI は、Dataflow SQL ジョブを作成するための BigQuery ウェブ UI です。

Dataflow SQL UI には BigQuery ウェブ UI からアクセスできます。

  1. BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. Cloud Dataflow エンジンに切り替えます。

    a. [展開] プルダウン メニューを開いて、[クエリの設定] を選択します。

    BigQuery ウェブ UI の [展開] プルダウン メニュー。クエリ設定オプションが選択されています。

    a. [クエリの設定] メニューで [Dataflow エンジン] を選択します。

    a. Dataflow API と Data Catalog API が有効でない場合、プロンプトが表示されます。このプロンプトで [API を有効にする] をクリックします。

    [API を有効にする] プロンプトが表示された [クエリの設定] メニュー

    a. [保存] をクリックします。

    [API を有効にする] プロンプトが表示された [クエリの設定] メニュー。[Dataflow エンジン] ラジオボタンが選択されています。

Dataflow モニタリング インターフェースから Dataflow SQL UI にアクセスすることもできます。

  1. Dataflow モニタリング インターフェースに移動します。

    Dataflow モニタリング インターフェースに移動

  2. [SQL からジョブを作成] をクリックします。

Dataflow SQL クエリの作成

Dataflow SQL クエリは Dataflow SQL クエリ構文を使用します。Dataflow SQL クエリ構文は BigQuery の標準 SQLに似ています。

Dataflow SQL ストリーミング拡張機能を使用すると、Pub/Sub などの Dataflow ソースを継続的に更新し、データを集約できます。

たとえば、次のクエリは、タクシー乗車データの Pub/Sub ストリームで乗客数を 1 分ごとカウントします。

SELECT
  TUMBLE_START('INTERVAL 1 MINUTE') as period_start,
  SUM(passenger_count) AS pickup_count
FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime`
WHERE
  ride_status = "pickup"
GROUP BY
  TUMBLE(event_timestamp, 'INTERVAL 1 MINUTE')

Dataflow SQL クエリの実行

Dataflow SQL クエリを実行すると、Dataflow はクエリを Apache Beam パイプラインに変換し、パイプラインを実行します。

Dataflow SQL クエリを実行するには、Cloud Console または gcloud コマンドライン ツールを使用します。

Console

Dataflow SQL クエリを実行するには、Dataflow SQL UI を使用します。

  1. Dataflow SQL UI に移動します。

    Dataflow SQL UI に移動

  2. クエリエディタに Dataflow SQL クエリを入力します。

  3. [Cloud Dataflow ジョブを作成] をクリックして、ジョブ オプションのパネルを開きます。

  4. (省略可)[オプション パラメータを表示] をクリックし、Dataflow パイプライン オプションを設定します。

  5. パネルの [送信先] セクションで [出力タイプ] を選択します。

  6. [作成] をクリックします。

gcloud

Dataflow SQL クエリを実行するには、gcloud dataflow sql query コマンドを実行します。

gcloud dataflow sql query \
  --job-name=job-name \
  --region=region \
  --bigquery-table=table-name \
  --bigquery-dataset=destination-dataset \
'query'

データのクエリと Dataflow SQL クエリ結果の作成方法については、データソースと宛先の使用をご覧ください。

パイプライン オプションの設定

Dataflow SQL ジョブに Dataflow パイプライン オプションを設定できます。Dataflow パイプライン オプションは、Dataflow SQL クエリの実行方法と場所を構成する実行パラメータです。

Dataflow SQL ジョブに Dataflow パイプライン オプションを設定するには、Dataflow SQL クエリの実行時に次のパラメータを指定します。

Console

パラメータ 説明 デフォルト値
リージョン エンドポイント String クエリを実行するリージョン。Dataflow SQL クエリは、Dataflow リージョン エンドポイントのあるリージョンで実行できます。 設定しない場合、us-central1. がデフォルトになります。
最大ワーカー数 int 実行中にパイプラインで使用できる Compute Engine インスタンスの最大数。 指定しない場合、Dataflow は適切なワーカー数を自動的に設定します。
ワーカー リージョン String ワーカー インスタンスを起動してパイプラインを実行するための Compute Engine のリージョン。Compute Engine ワーカー リージョンが、Dataflow リージョン エンドポイントとは異なるリージョンにある可能性があります。 設定されていない場合、指定された Dataflow リージョン エンドポイントがデフォルトになります。
ワーカーゾーン String ワーカー インスタンスを起動してパイプラインを実行するための Compute Engine のゾーン。Compute Engine ゾーンは、Dataflow リージョン エンドポイントとは異なるリージョンに存在できます。

設定されていない場合、ワーカー リージョンのゾーンがデフォルトになります。

ワーカー リージョンが設定されていない場合、Dataflow リージョン エンドポイントのゾーンがデフォルトになります。

サービス アカウントのメールアドレス String パイプラインを実行するコントローラ サービス アカウントのメールアドレス。メールアドレスは my-service-account-name@<project-id>.iam.gserviceaccount.com の形式にする必要があります。 設定しない場合、Dataflow ワーカーは、現在のプロジェクトの Compute Engine サービス アカウントをコントローラ サービス アカウントとして使用します。
マシンタイプ String

Dataflow がワーカーの起動時に使用する Compute Engine のマシンタイプ。使用可能な任意の Compute Engine マシンタイプ ファミリーまたはカスタム マシンタイプを使用できます。

n1 マシンタイプを使用すると最適な結果が得られます。f1g1 シリーズのワーカーなどの共有コア マシンタイプは、Dataflow のサービスレベル契約ではサポートされません。

ワーカーの vCPU の数およびメモリ量(GB)に基づいて料金が請求されます。請求はマシンタイプ ファミリーとは独立しています。

設定しない場合、Dataflow は自動的にマシンタイプを選択します。
追加テスト String 有効にするテスト。テストには、enable_streaming_engine などの値や、shuffle_mode=service などの Key-Value ペアを指定できます。テストはカンマ区切りのリストで行う必要があります。 指定しない場合、テストは有効になりません。
ワーカー IP アドレスの構成 String

Dataflow ワーカーでパブリック IP アドレスを使用するかどうかを指定します。

この値を Private に設定すると、Dataflow ワーカーではすべての通信にプライベート IP アドレスが使用されます。指定する Network または Subnetwork限定公開の Google アクセスが有効になっている必要があります。

値を Private に設定し、Subnetwork オプションを指定した場合、Network オプションは無視されます。

設定しない場合、Public がデフォルトになります。
ネットワーク String ワーカーが割り当てられている Compute Engine ネットワーク 設定しない場合、ネットワーク default がデフォルトになります。
サブネットワーク String ワーカーが割り当てられている Compute Engine サブネットワーク。サブネットワークは regions/region/subnetworks/subnetwork の形式にする必要があります。 設定しない場合、Dataflow は自動的にサブネットワークを決定します。

gcloud

フラグ 説明 デフォルト値
‑‑region String クエリを実行するリージョン。Dataflow SQL クエリは、Dataflow リージョン エンドポイントのあるリージョンで実行できます。 設定されていない場合は、エラーがスローされます。
‑‑max‑workers int 実行中にパイプラインで使用できる Compute Engine インスタンスの最大数。 指定しない場合、Dataflow は適切なワーカー数を自動的に設定します。
‑‑num‑workers int パイプラインの実行時に使用する Compute Engine インスタンスの初期の数。このパラメータにより、ジョブの開始時に Dataflow が起動するワーカー数が決まります。 指定しない場合、Dataflow は適切なワーカー数を自動的に設定します。
‑‑worker‑region String

ワーカー インスタンスを起動してパイプラインを実行するための Compute Engine のリージョン。Compute Engine ワーカー リージョンは、Dataflow リージョン エンドポイントとは異なるリージョンに存在できます。

‑‑worker‑region または ‑‑worker‑zone のいずれかを指定できます。

設定されていない場合、指定された Dataflow リージョン エンドポイントがデフォルトになります。
‑‑worker‑zone String

ワーカー インスタンスを起動してパイプラインを実行するための Compute Engine のゾーン。Compute Engine ゾーンは、Dataflow リージョン エンドポイントとは異なるリージョンに存在できます。

‑‑worker‑region または ‑‑worker‑zone のいずれかを指定できます。

設定しない場合、指定した Dataflow リージョン エンドポイントのゾーンがデフォルトになります。
‑‑worker‑machine‑type String

Dataflow がワーカーの起動時に使用する Compute Engine のマシンタイプ。使用可能な任意の Compute Engine マシンタイプ ファミリーまたはカスタム マシンタイプを使用できます。

n1 マシンタイプを使用すると最適な結果が得られます。f1g1 シリーズのワーカーなどの共有コア マシンタイプは、Dataflow のサービスレベル契約ではサポートされません。

ワーカーの vCPU の数およびメモリ量(GB)に基づいて料金が請求されます。請求はマシンタイプ ファミリーとは独立しています。

設定しない場合、Dataflow は自動的にマシンタイプを選択します。
‑‑service‑account‑email String パイプラインを実行するコントローラ サービス アカウントのメールアドレス。メールアドレスは my-service-account-name@<project-id>.iam.gserviceaccount.com の形式にする必要があります。 設定しない場合、Dataflow ワーカーは、現在のプロジェクトの Compute Engine サービス アカウントをコントローラ サービス アカウントとして使用します。
‑‑disable‑public‑ips boolean

Dataflow ワーカーでパブリック IP アドレスを使用するかどうかを指定します。

true に設定した場合、Dataflow ワーカーはすべての通信にプライベート IP アドレスを使用します。

設定しない場合、false がデフォルトになり、Dataflow ワーカーはパブリック IP アドレスを使用します。
‑‑network String ワーカーが割り当てられている Compute Engine ネットワーク 設定しない場合、ネットワーク default がデフォルトになります。
‑‑subnetwork String ワーカーが割り当てられている Compute Engine サブネットワーク。サブネットワークは regions/region/subnetworks/subnetwork の形式にする必要があります。 設定しない場合、Dataflow は自動的にサブネットワークを決定します。
‑‑dataflow‑kms‑key String 保存データの暗号化に使用する顧客管理の暗号鍵(CMEK)。暗号鍵は Cloud KMS で制御できます。鍵はジョブと同じ場所に置く必要があります。 指定しない場合、CMEK の代わりにデフォルトの Google Cloud 暗号化が使用されます。

詳細については、gcloud dataflow sql query コマンド リファレンスをご覧ください。

Dataflow SQL ジョブの停止

Dataflow SQL ジョブを停止するには、キャンセル コマンドを使用します。ドレインで Dataflow SQL ジョブを停止することはできません。

料金

Dataflow SQL では標準の Dataflow 料金を使用します。別の料金体系はありません。SQL ステートメントに基づいて作成した Dataflow ジョブが使用するリソースは課金対象となります。vCPU、メモリ、Persistent Disk、Streaming Engine、Dataflow Shuffle などのリソースに対して Dataflow の標準料金が適用されます。

Dataflow SQL ジョブで Cloud Pub/Sub や BigQuery などの追加リソースが使用される可能性があり、その場合はそれぞれ固有の料金で課金されます。

Dataflow の料金の詳細については、Dataflow の料金ページをご覧ください。

次のステップ