Datastream、Dataflow、BigQuery ML、Looker を使用して需要予測を構築、可視化する

Last reviewed 2022-05-04 UTC

このドキュメントでは、Oracle データベースから Google Cloud にオペレーション データをリアルタイムでレプリケートして処理する方法について説明します。チュートリアルはまた、将来の需要をどのように予測するか、そしてこの予測データが得られた際にどのように可視化するかについても示しています。

このチュートリアルの対象は、オペレーション データを使用するデータ エンジニアとアナリストです。SQL クエリとユーザー定義関数(UDF)の両方の作成に精通していることを前提としています。

このチュートリアルでは、FastFresh という名前の架空の店舗を使用して、そのコンセプトを説明します。FastFresh は生鮮食品の販売を専門としており、食品廃棄物を最小限に抑え、すべての店舗間で在庫数を最適化したいと考えています。チュートリアルでの運用データとしては、FastFresh の模擬販売トランザクションを使用します。

アーキテクチャ

次の図は、Google Cloud を介した運用データのフローを示しています。

FastFresh の運用データのフロー(次のテキストを参照)。

上の図に示されている運用フローは次のとおりです。

  • Oracle のソースから受信したデータが、Datastream を通じて Cloud Storage にキャプチャされ、複製されます。

  • このデータを Dataflow テンプレートによって処理、拡充してから、BigQuery に送ります。

  • BigQuery ML はデータの需要予測に使用され、Looker で可視化されます。

Google では、Oracle ワークロードのライセンスを提供していません。Google Cloud 上で実行することを選択した Oracle ワークロードのライセンスの調達と、これらのライセンスの条件の遵守は、お客様の責任で行っていただく必要があります。

目標

  • Oracle のデータを BigQuery にリアルタイムで複製して処理します。

  • BigQuery で Oracle から複製して処理されたデータに対して需要を予測します。

  • Looker の予測需要データとオペレーション データをリアルタイムに可視化します。

料金

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトで課金が有効になっていることを確認します

  3. Compute Engine, Datastream, Dataflow, and Pub/Sub API を有効にします。

    API を有効にする

  4. デベロッパーとして Looker インスタンスにアクセスできることを確認します。独自の Looker モデルとダッシュボードを設定するには、このアクセス権が必要です。

    トライアルをリクエストするには、Looker の無料トライアルデモをご覧ください。

    また、プロジェクト オーナーまたは編集者のロールが付与されている必要があります。

環境を準備する

  1. Cloud Shell で、以下の環境変数を定義します。

    export PROJECT_NAME="YOUR_PROJECT_NAME"
    export PROJECT_ID="YOUR_PROJECT_ID"
    export PROJECT_NUMBER="YOUR_PROJECT_NUMBER"
    export BUCKET_NAME="${PROJECT_ID}-oracle_retail"
    

    次のように置き換えます。

    • YOUR_PROJECT_NAME: プロジェクトの名前
    • YOUR_PROJECT_ID: オブジェクトの ID
    • YOUR_PROJECT_NUMBER: プロジェクトの数
  2. 次のように入力します。

    gcloud config set project ${PROJECT_ID}
    
  3. このチュートリアルで使用するスクリプトやユーティリティを含む、GitHub のチュートリアル リポジトリのクローンを作成します。

    git clone \
    https://github.com/caugusto/datastream-bqml-looker-tutorial.git
    
  4. Oracle に読み込むサンプル トランザクションを含んだカンマ区切りファイルを抽出します。

    bunzip2 \
    datastream-bqml-looker-tutorial/sample_data/oracle_data.csv.bz2
    
  5. 以下のようにして、Compute Engine にサンプルの Oracle XE 11g の Docker インスタンスを作成します。

    1. Cloud Shell で、ディレクトリを build_docker に変更します。

        cd datastream-bqml-looker-tutorial/build_docker
      
    2. 次の build_orcl.sh スクリプトを実行します。

       ./build_orcl.sh \
       -p YOUR_PROJECT_ID \
       -z GCP_ZONE \
       -n GCP_NETWORK_NAME \
       -s GCP_SUBNET_NAME \
       -f Y \
       -d Y
      

      次のように置き換えます。

      • YOUR_PROJECT_ID: Google Cloud プロジェクト ID
      • GCP_ZONE: Compute インスタンスが作成されるゾーン
      • GCP_NETWORK_NAME= VM とファイアウォールのエントリを作成するネットワーク名
      • GCP_SUBNET_NAME= VM とファイアウォールのエントリを作成するネットワーク サブネット
      • Y or N= FastFresh スキーマと ORDERS テーブルを作成するための選択肢(Y または N)。このチュートリアルでは、Y を使用します。
      • Y or N= Datastream で使用するために Oracle データベースを構成するための選択肢(Y または N)。このチュートリアルでは、Y を使用します。

      このスクリプトは次のことを行います。

      • Google Cloud Compute のインスタンスを新規作成する。
      • Oracle 11g XE の docker コンテナを構成する。
      • FastFresh スキーマと Datastream の前提条件をプリロードする。

    スクリプトの実行後、build_orcl.sh スクリプトによって接続の詳細と認証情報(DB Host、DB Port、SID)が表示されます。このチュートリアルの後半で使用するため、これらの詳細のコピーを作成します。

  6. 複製したデータを保存するための Cloud Storage バケットを作成します。

    gsutil mb gs://${BUCKET_NAME}
    

    バケット名は後のステップで使用するため、コピーを作成します。

  7. オブジェクトの変更に関する通知を Pub/Sub トピックに送信するようにバケットを構成します。この構成は、Dataflow テンプレートで必要となります。手順は次のとおりです。

    1. oracle_retail という名前の新しいトピックを作成します。

      gsutil notification create -t projects/${PROJECT_ID}/topics/oracle_retail -f \
      json gs://${BUCKET_NAME}
      

      このコマンドは、オブジェクトの変更に関する通知を Pub/Sub トピックに送信する oracle_retail という新しいトピックを作成します。

    2. oracle_retail トピックに送信されるメッセージを受信するための Pub/Sub サブスクリプションを作成します。

      gcloud pubsub subscriptions create oracle_retail_sub \
      --topic=projects/${PROJECT_ID}/topics/oracle_retail
      
  8. retail という名前の BigQuery データセットを作成します。

    bq mk --dataset ${PROJECT_ID}:retail
    
  9. Compute Engine のサービス アカウントに BigQuery の Admin ロールを割り当てます。

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
    --role='roles/bigquery.admin'
    

Datastream で Oracle データを Google Cloud に複製する

Datastream は、MySQL や Oracle などのソースから Google Cloud データベースやストレージ ソリューションへのデータ同期をサポートしています。

このセクションでは、Datastream を使用して Oracle FastFresh スキーマをバックフィルし、Oracle データベースから Cloud Storage にリアルタイムで更新を複製する方法を説明します。

ストリームの作成

  1. Google Cloud コンソールで、Datastream に移動して [ストリームの作成] をクリックします。フォームが表示されます。

    次のようにフォームに入力し、[続行] をクリックします。

    • ストリーム名: oracle-cdc

    • ストリーム ID: oracle-cdc

    • Source type: Oracle

    • 宛先の種類: Cloud Storage

    • 他のすべてのフィールド: デフォルト値を保持する

  2. [ソースの定義とテスト] セクションで、[新しい接続の作成] プロファイルを選択します。フォームが表示されます。

    次のようにフォームに入力し、[続行] をクリックします。

    • 接続プロファイルの名前: orcl-retail-source

    • 接続プロファイル ID: orcl-retail-source

    • ホスト名: <db_host>

    • ポート: 1521

    • ユーザー名: datastream

    • パスワード: tutorial_datastream

    • システム ID(SID): XE

    • 接続方法: IP allowlisting を選択します。

  3. [テストを実行] をクリックして、移行元データベースと Datastream が相互に通信できることを確認します。その後、[作成して続行] をクリックします。

    複製するオブジェクト、特定のスキーマ、テーブル、列を定義し、包含または除外する [含めるオブジェクトを選択] ページが表示されます。

    テストが失敗した場合は、フォームのパラメータに必要な変更を加えてから、再度テストを実行します。

  4. 以下のイメージにあるように、[FastFresh] > [Orders] を選択します。

    [**FastFresh**] と [**Orders**] が選択されているチェックボックス

  5. 既存のレコードを読み込むには、バックフィル モードを [自動] に設定し、[続行] をクリックします。

  6. [宛先の定義] セクションで [新しい接続プロファイルの作成] を選択します。フォームが表示されます。

    以下のようにフォームに記入し、[作成して続行] をクリックします。

    • 接続プロファイルの名前: oracle-retail-gcs

    • 接続プロファイル ID: oracle-retail-gcs

    • バケット名: 環境を準備するで作成したバケットの名前。

  7. ストリームのパス接頭辞は空白にしておき、出力フォーマットに JSON を選択します。[続行] をクリックします。

  8. [新しい接続プロファイルを作成] ページで、[検証を実行] をクリックし、[作成] をクリックします。

    出力は次のようになります。

    検証の詳細を出力する。

Datastream to BigQuery テンプレートを使用して Dataflow ジョブを作成する

このセクションでは、Dataflow の Datastream to BigQuery ストリーミング テンプレートをデプロイし、Datastream で取得した変更を BigQuery に複製します。

また、UDF を作成して使用することで、このテンプレートの機能を拡張します。

受信データを処理するための UDF を作成する

バックフィルされたデータと新しい受信データの両方に対して、以下の処理を実行する UDF を作成します。

  • お客様の支払方法などの機密情報を削除します。

  • データ系列と検出の目的で、Oracle ソーステーブルを BigQuery に追加します。

このロジックは、Datastream が生成する JSON ファイルを入力パラメータとする JavaScript ファイルにキャプチャされます。

  1. Cloud Shell セッションで、次のコードをコピーして retail_transform.js という名前のファイルに保存します。

    function process(inJson) {
    
       var obj = JSON.parse(inJson),
       includePubsubMessage = obj.data && obj.attributes,
       data = includePubsubMessage ? obj.data : obj;
    
       data.PAYMENT_METHOD = data.PAYMENT_METHOD.split(':')[0].concat("XXX");
    
       data.ORACLE_SOURCE = data._metadata_schema.concat('.', data._metadata_table);
    
       return JSON.stringify(obj);
    }
    
  2. retail_transform.js file を保存する Cloud Storage バケットを作成し、この新しく作成したバケットに JavaScript ファイルをアップロードします。

    gsutil mb gs://js-${BUCKET_NAME}
    
    gsutil cp retail_transform.js \
    gs://js-${BUCKET_NAME}/utils/retail_transform.js
    

Dataflow ジョブを作成する

  1. Cloud Shell で、デッドレター キュー(DLQ)バケットを作成します。

    gsutil mb gs://dlq-${BUCKET_NAME}
    

    このバケットは Dataflow によって使用されます。

  2. Dataflow 実行用のサービス アカウントを作成し、アカウントに Dataflow WorkerDataflow AdminPub/Sub AdminBigQuery Data EditorBigQuery Job UserDatastream Admin のロールを割り当てます。

    gcloud iam service-accounts create df-tutorial
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/dataflow.admin"
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/dataflow.worker"
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/pubsub.admin"
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/bigquery.dataEditor"
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/bigquery.jobUser"
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/datastream.admin"
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/storage.admin"
    
  3. 下りファイアウォール ルールを作成して、自動スケーリングが有効になっている場合に Dataflow VM が TCP ポート 12345 と 12346 でネットワーク トラフィックと通信、送信、受信を行うようにします。

    gcloud compute firewall-rules create fw-allow-inter-dataflow-comm \
    --action=allow \
    --direction=ingress \
    --network=GCP_NETWORK_NAME  \
    --target-tags=dataflow \
    --source-tags=dataflow \
    --priority=0 \
    --rules tcp:12345-12346
    
  4. Dataflow ジョブを作成して実行します。

    export REGION=us-central1
    gcloud dataflow flex-template run orders-cdc-template --region ${REGION} \
    --template-file-gcs-location "gs://dataflow-templates/latest/flex/Cloud_Datastream_to_BigQuery" \
    --service-account-email "df-tutorial@${PROJECT_ID}.iam.gserviceaccount.com" \
    --parameters \
    inputFilePattern="gs://${BUCKET_NAME}/",\
    gcsPubSubSubscription="projects/${PROJECT_ID}/subscriptions/oracle_retail_sub",\
    inputFileFormat="json",\
    outputStagingDatasetTemplate="retail",\
    outputDatasetTemplate="retail",\
    deadLetterQueueDirectory="gs://dlq-${BUCKET_NAME}",\
    autoscalingAlgorithm="THROUGHPUT_BASED",\
    mergeFrequencyMinutes=1,\
    javascriptTextTransformGcsPath="gs://js-${BUCKET_NAME}/utils/retail_transform.js",\
    javascriptTextTransformFunctionName="process"
    

    Dataflow コンソールを確認し、新しいストリーミング ジョブが開始されたことを確認します。

  5. Cloud Shell で、以下のコマンドを実行し、Datastream のストリームを開始します。

    gcloud datastream streams update oracle-cdc \
    --location=us-central1 --state=RUNNING --update-mask=state
    
  6. Datastream ストリームのステータスを確認します。

    gcloud datastream streams list \
    --location=us-central1
    

    状態が「Running」と表示されていることを確認します。新しい状態の値が反映されるまで、数秒かかる場合があります。

    Datastream コンソールをチェックして、ORDERS テーブルのバックフィルの進捗を確認します。

    出力は次のようになります。

    **実行中** アイコンが表示されたオブジェクトのステータス。

    このタスクは初期ロードであるため、Datastream は ORDERS オブジェクトから読み取ります。ストリーム作成時に指定した Cloud Storage バケットにある JSON ファイルに全レコードを書き込みます。バックフィル作業には 10 分程度かかります。

BigQuery でデータを分析する

数分後、バックフィルされたデータが BigQuery に複製されます。新着データは、ほぼリアルタイムでデータセットにストリーミングされます。各レコードは、Dataflow テンプレートの一部として定義した UDF ロジックで処理されます。

Dataflow のジョブにより、データセット内に以下の 2 つのテーブルが新たに作成されます。

  • ORDERS: この出力テーブルは Oracle テーブルのレプリカで、Dataflow テンプレートの一部としてデータに適用された変換を含みます。

    出力は次のようになります。

    データに適用される変換。

  • ORDERS_log: このステージング テーブルには、Oracle ソースからのすべての変更が記録されます。テーブルはパーティション分割され、更新されたレコードと、その変更が更新、挿入、削除のいずれなのかというメタデータの変更情報が格納されます。

    出力は次のようになります。

    データに適用される変換。

BigQuery を使えば、業務データをリアルタイムに見ることができます。また、特定の商品の売上を店舗間でリアルタイムに比較する、または、売上と顧客データを組み合わせて特定の店舗でのお客様の消費傾向を分析するなどのクエリを実行できます。

業務データに対してクエリを実行する

  1. BigQuery で、以下の SQL を実行し、売れ筋上位の 3 商品をクエリします。

    SELECT product_name, SUM(quantity) as total_sales
    FROM `retail.ORDERS`
    GROUP BY product_name
    ORDER BY total_sales desc
    LIMIT 3
    

    出力は次のようになります。

    売上が高まっている 3 つの商品の合計売上高の高い順に並べられます。

  2. BigQuery で、次の SQL ステートメントを実行して、ORDERS テーブルと ORDERS_log テーブルの両方の行数をクエリします。

    SELECT count(*) FROM `hackfast.retail.ORDERS_log`
    SELECT count(*) FROM `hackfast.retail.ORDERS`
    

    バックフィルが完了すると、どちらのステートメントも数字 520217 を返します。

BigQuery ML で需要予測モデルをビルドする

BigQuery ML では、ARIMA_PLUS アルゴリズムを使用して需要予測モデルをビルド、デプロイできます。このセクションでは、BigQuery ML を使用して、店舗内の商品の需要を予測するモデルをビルドします。

トレーニング データを準備する

バックフィルしたデータのサンプルを使用して、モデルをトレーニングします。この場合、1 年間のデータを使用します。トレーニング データの内容は次のとおりです。

  • 商品名(product_name
  • 各商品の販売数(total_sold
  • 1 時間あたりの販売商品数(hourly_timestamp

手順は次のとおりです。

  1. BigQuery で次の SQL を実行し、トレーニング データを作成して training_data という名前の新しいテーブルに保存します。

    CREATE OR REPLACE TABLE `retail.training_data`
    AS
       SELECT
           TIMESTAMP_TRUNC(time_of_sale, HOUR) as hourly_timestamp,
           product_name,
           SUM(quantity) AS total_sold
       FROM `retail.ORDERS`
           GROUP BY hourly_timestamp, product_name
           HAVING hourly_timestamp BETWEEN TIMESTAMP_TRUNC('2021-11-22', HOUR) AND
    TIMESTAMP_TRUNC('2021-11-28', HOUR)
    ORDER BY hourly_timestamp
    
  2. 次の SQL を実行して、training_data テーブルを確認します。

    SELECT * FROM `retail.training_data` LIMIT 10;
    

    出力は次のようになります。

    1 時間ごとのタイムスタンプ、商品名、販売合計数を示すクエリの出力。

需要を予測する

  1. BigQuery で次の SQL を実行し、ARIMA_PLUS アルゴリズムを使用する時系列モデルを作成します。

    CREATE OR REPLACE MODEL `retail.arima_plus_model`
           OPTIONS(
             MODEL_TYPE='ARIMA_PLUS',
             TIME_SERIES_TIMESTAMP_COL='hourly_timestamp',
             TIME_SERIES_DATA_COL='total_sold',
             TIME_SERIES_ID_COL='product_name'
           ) AS
    SELECT
       hourly_timestamp,
       product_name,
       total_sold
    FROM
     `retail.training_data`
    

    ML.FORECAST 関数は、n 時間にわたって見込まれる需要を予測するために使用します。

  2. 次の SQL を実行して、今後 30 日間の有機バナナの需要を予測します。

    SELECT * FROM ML.FORECAST(MODEL `retail.arima_plus_model`,  STRUCT(720 AS horizon))
    

    出力は次のようになります。

    タイムスタンプごとに分類されたバナナのバッグの予測値を表す ML.FORECAST クエリからの出力。

    トレーニング データは 1 時間ごとであるため、ホライズン値は予測時に同じ時間単位(時間)を使用します。ホライズン値を 720 時間に設定すると、今後 30 日間の予測結果が返されます。

    このチュートリアルでは小規模なサンプル データセットを使用するため、モデルの精度についてさらに詳しく調べることはしません。

Looker で可視化用のビューを作成する

  1. BigQuery で、次の SQL クエリを実行して、有機バナナの実際の売上と予測された売上を結合するビューを作成します。

    CREATE OR REPLACE VIEW `retail.orders_forecast` AS (
    SELECT
    timestamp,
    product_name,
    SUM(forecast_value) AS forecast,
    SUM(actual_value) AS actual
    from
    (
    SELECT
       TIMESTAMP_TRUNC(TIME_OF_SALE, HOUR) AS timestamp,
       product_name,
       SUM(QUANTITY) as actual_value,
       NULL AS forecast_value
       FROM `retail.ORDERS`
       GROUP BY timestamp, product_name
    UNION ALL
    SELECT
           forecast_timestamp AS timestamp,
           product_name,
           NULL AS actual_value,
           forecast_value,
               FROM ML.FORECAST(MODEL `retail.arima_plus_model`,
                   STRUCT(720 AS horizon))
           ORDER BY timestamp
    )
    GROUP BY timestamp, product_name
    ORDER BY timestamp
    )
    

    このビューにより、Looker は実際のデータと予測データを調査する際に関連データを照会できます。

  2. 次の SQL を実行してビューを検証します。

    SELECT * FROM `retail.orders_forecast`
    WHERE PRODUCT_NAME='Bag of Organic Bananas'
    AND TIMESTAMP_TRUNC(timestamp, HOUR) BETWEEN TIMESTAMP_TRUNC('2021-11-28', HOUR) AND TIMESTAMP_TRUNC('2021-11-30', HOUR)
    LIMIT 100;
    

    出力は次のようになります。

    Looker クエリ出力。

    BigQuery ビューの代わりに、Looker の組み込みの派生テーブル機能を使用することもできます。これには、組み込みの派生テーブルと SQL ベースの派生テーブルが含まれます。詳しくは、Looker の派生テーブルをご覧ください。

Looker で運用データと予測データを可視化する

このセクションでは、Looker でグラフを作成して orders_forecast ビューの内容を可視化します。

BigQuery の接続を設定する

  1. Cloud Shell で、BigQuery データ編集者と BigQuery ジョブユーザーのロールを持つサービス アカウントを作成します。

    gcloud iam service-accounts create looker-sa
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:looker-sa@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/bigquery.dataEditor"
    
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member="serviceAccount:looker-sa@${PROJECT_ID}.iam.gserviceaccount.com" \
    --role="roles/bigquery.jobUser"
    
    gcloud iam service-accounts keys create looker_sa_key.json \
    --iam-account=looker-sa@${PROJECT_ID}.iam.gserviceaccount.com
    
  2. キーを JSON 形式でダウンロードします。キーが Cloud Shell ディレクトリにダウンロードされます。

  3. Looker を開き、[Admin] > [Database] > [Connections] > [Add Connections] に移動します。

  4. [接続設定] フォームに次のように入力します。

    • 名前: rds_cdc_retail
    • 言語: Google BigQuery 標準 SQL
    • プロジェクト名: your_project_name
    • データセット: retail
    • サービス アカウントのメールアドレス: 前の手順で作成したアカウントの名前。
    • 永続的な派生テーブル: この機能を有効にするには、チェックボックスをオンにします。
  5. ダウンロードしたサービス アカウントキーを Service Account JSON/P12 File フィールドにアップロードします。

  6. [Test These Settings] をクリックして接続を検証し、[Create Connection] をクリックします。

新しい LookML プロジェクトを作成する

LookML は、データのモデルのビルドに使用できる軽量なモデリング言語です。これらのモデルを使用して、Looker にデータのクエリ方法を指示します。このセクションでは、このチュートリアルで使用する BigQuery データセット スキーマを反映して LookML モデルをビルドします。Looker はこの BigQuery データセットに対して SQL クエリを作成し、モデルに関連するデータを抽出します。

  1. Looker コンソールで、[Go to Develop] > [Manage LookML Projects] > [New LookML Project] をクリックします。

  2. 次のようにフォームに入力します。

    • Starting point: [Database Schema] で [Generate Model] を選択します。

    • Connection: rds_cdc_retail

    • Build views from: [All Tables] を選択します。

    このプロジェクトでは、前のセクションで作成した BigQuery 接続を使用してクエリを生成します。

  3. [プロジェクトを作成] をクリックします。[Explore] ページが開きます。プロジェクトの作成の一環として、BigQuery テーブルを表すモデルファイルとビューファイルが作成されます。

    出力は次のようになります。

    orders_forecast.view の出力。

    モデルファイルには、使用するテーブルとそのテーブル間の関係が記述されます。

    ビューファイルでは、テーブル内のフィールドにアクセスする方法を示し、カスタム ディメンション、集計、データ全体の関係を作成できます。

  4. 次のコードを orders_forecast.view ファイルにコピーし、新しい measure を追加します。

     measure: actual_sum {
          type: sum
          sql: ${TABLE}.actual ;;
        }
     measure: forecast_sum {
         type: sum
         sql: ${TABLE}.forecast ;;
         }
    

    この measure は、BigQuery テーブルのそれぞれの actual_sum フィールドと forecast_sum フィールドを要約します。

  5. [Save Changes] をクリックします。

Looker Explore を作成する

このセクションでは、Looker ML プロジェクトの可視化のタイプを選択します。

Explore を使用して、クエリを実行し、データモデルで定義されたディメンションと測定に対する可視化を行うことができます。Looker Explore の詳細については、Explore パラメータをご覧ください。

  1. Looker コンソールで、[orders_forecast.view] プルダウン メニューから [Explore Orders Forecast] を選択します。

    これを選択すると、有機バナナの予測される売上と実際の売上を一定期間にわたって調査、比較できます。

  2. Explore の [All Fields] タブで以下を選択します。

    1. Actual Sum フィルタと Forecast Sum フィルタを選択します。

    2. [Product Name] の横にあるフィルタ アイコン を選択し、次のように設定します。

      • Orders Forecast Timestamp Date: is equal to: Bag of Organic Bananas

      次のようなフィルタが表示されます。

      商品をフィルタします。

    3. [Timestamp] フィールドを展開し、[Time] ディメンションを選択します。

    4. [Timestamp] フィールドで、[Date] の横にあるフィルタ アイコン を選択し、[Orders Forecast Timestamp Date] フィールドで次のフィルタを設定します。

      • is in range: 2021-11-28
      • until (before): 2021-11-30
  3. [実行] をクリックします。BigQuery の結果は列形式で表示されます。

    出力は次のようになります。

    BigQuery の結果の出力。

  4. 結果を可視化するには、[Visualization] をクリックしてから [Line Chart] をクリックします。

  5. 右上の設定アイコン をクリックし、[Save to Dashboard] をクリックします。

  6. タイルに「Forecasted Data」という名前を付けて、[New Dashboard] を選択します。

    出力は次のようになります。

    「有機バナナ 1 袋」の実際の注文数と予測注文数を比較した折れ線グラフ

  7. プロンプトが表示されたら、ダッシュボードに「FastFresh Retail Dashboard」という名前を付けます。

  8. [FastFresh Retail Dashboard] リンクテキストをクリックして、新しいダッシュボードに移動します。

    次の出力が表示されます。

    Looker で新しく作成されたダッシュボード。

FastFresh ダッシュボードにタイトルを追加して、引き続き Looker を探索できます。

Looker ダッシュボードはフィルタリングとアラートをサポートし、組織全体で共有することも、特定のチームに定期的に送信するようにスケジュールすることもできます。組織内の他のユーザーがダッシュボードを使用できるようにするには、LookML モデルを本番環境に push する必要がありますが、このチュートリアルでは説明しません。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ