パーソナライズのための ML 対応データの準備

このチュートリアルでは、Google アナリティクス 360(GA360)や顧客管理(CRM)システムなどのビジネスツールに保存されたデータから機械学習(ML)データセットを作成することを目的に、特定の順序で実行する一連の Dataflow パイプラインについて説明します。

企業は洗練された ML モデルの価値に気づき始めています。傾向モデル、顧客のライフタイム バリューモデル、Recommender システム、レスポンス / アップリフト モデル、ネクストベスト アクション モデルは、お客様の獲得と維持に利用できます。

ただし、GA360 や CRM システムなどのツールに保存されたデータからこのようなモデルを構築するには、多くの場合、追加の作業が必要です。これらのツールは、ビジネス目標に合わせ集合レベルでデータを整理、変換するのに利用できますが、通常は ML モデリング用にデータを再設計する必要があります。

このチュートリアルで紹介するシステムを使用すると、次のことができます。

  • データを ML 処理用の汎用形式に構造化する。
  • データを分析して ML 処理の準備ができていることを確認する。
  • 傾向モデル、レスポンス / アップリフト モデル、Recommender システムなどのバイナリ分類 ML モデルの構築に使用できるデータセットを作成する。

このチュートリアルでは、Dataflow を設定して、日付が一定の間隔でスライドする ML 対応のデータ スナップショットを作成します。それぞれのデータ スナップショットは次の要素で構成されます。

  • 事前定義された履歴ウィンドウ(ルックバック ウィンドウ)における(スナップショットの日付を基準とした)過去の出来事を反映する ML 対応のトレーニング機能。
  • 事前定義された予測ウィンドウで(スナップショットの日付を基準とした)未来の出来事を反映する ML 対応のバイナリ トレーニング ラベル。

このチュートリアルは、Dataflow パイプラインの実行に関する標準的な知識と ML の原則に関する基本的な知識を持つデータ エンジニアとデータ サイエンティストを対象としています。

アーキテクチャ

次の図は、このチュートリアルで説明する設定のアーキテクチャを示しています。

ML データセットを出力するパイプラインのアーキテクチャ

このプロセスには次の手順が含まれます。

  • ステップ 1: GA360 または CRM データを Cloud Storage に読み込みます。
  • ステップ 2(省略可): BigQuery でデータセットを探索します。
  • ステップ 3: データセットを Cloud Storage にウィンドウ処理します。
  • ステップ 4: ML 対応のデータセットを BigQuery で出力する機能を生成します。

これらの手順により、ML モデルのトレーニングに使用できる ML 対応データセットが生成されます。データセットには、AutoML Tables、TensorFlow、または優先的に使用する ML モデリング ツールなどが含まれます。

目標

費用

このチュートリアルでは、Google アナリティクス 360 のサンプル データセットを使用するための費用を最小限に抑えています。このソリューションを本番環境で実装する費用は、データセットのサイズによって異なります。このチュートリアルのパイプラインをできるだけ効率化するため、パイプラインは標準の Dataflow VM マシンを使用します。詳しくは、Dataflow の料金をご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Dataflow API と Cloud Storage API を有効にします。
  5. API を有効にする

環境の準備

このチュートリアルでは、Cloud Shell でコマンドを実行します。

  1. Cloud Console で Cloud Shell を開きます。

    Cloud Shell を開く

    Cloud Shell を使用すると、Google Cloud のコマンドラインにアクセスできます。Google Cloud 開発に必要な Cloud SDK などのツールが含まれています。Cloud Shell の初期化には数分かかることがあります。

  2. デフォルト変数を以下のように設定します。

    export PROJECT_ID=$(gcloud config get-value project)
    export BUCKET_NAME=${PROJECT_ID}-mldwp
    export REGION=YOUR_REGION
    export ZONE=YOUR_ZONE
    export DATASET=mldwp_dataset
    

    以下を置き換えます。

    • YOUR_REGION: 選択したリージョン(例: us-west1
    • YOUR_ZONE: 選択したゾーン(例: us-west1-b

      詳細については、地域、リージョン、ゾーンをご覧ください。

  3. 作業用バケットを作成します。

    gsutil mb -p ${PROJECT_ID} -l ${REGION} gs://${BUCKET_NAME}
    
  4. 関連する BigQuery データセットを作成します。

    bq mk ${DATASET}
    
  5. ML データ ウィンドウ処理パイプライン オープンソース プロジェクトのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/cloud-for-marketing
    
  6. cloud-for-marketing/tree/master/marketing-analytics/predicting/ml-data-windowing-pipeline に移動します。

Apache Maven をインストールする

  1. Java Development Kit(JDK)バージョン 9 以降をダウンロードしてインストールします。JAVA_HOME 環境変数が設定され、ご使用の JDK インストールをポイントしていることを確認します。
  2. Cloud SDK をダウンロードしてインストールします。
  3. お客様のオペレーティング システムに対応する Maven のインストール ガイドに従い、Apache Maven をダウンロードしてインストールします。

ステップ 1: BigQuery テーブルから AVRO ファイルを作成する

ML データ ウィンドウ処理パイプライン プロジェクトでは、UserSessionPipeline.java パイプラインは、指定された一連の日付間で Google アナリティクス 360 BigQuery 出力テーブルから直接データを読み取るように最適化されています。このステップでは、UserSessionPipeline.java パイプラインを実行して GA360 データを AVRO ファイルにダイジェストして、ステップ 2(省略可)とステップ 3 で使用します。

Cloud Shell で UserSessionPipeline.java パイプラインを呼び出すときは、次のテーブルの引数を使用します。

フラグ 説明 引数の例

--inputBigQuerySQL

BigQuery の Google アナリティクス テーブルからデータを選択するときに使用する SQL クエリ。パイプラインがデータセットとテーブルにアクセスできることを確認します。

SELECT * FROM bigquery-public-data.google_analytics_sample.ga_sessions_*

--predictionFactName

予測対象の値(ML データセットのラベル)を含む BigQuery 列の名前。

hits.eventInfo.eventAction

--predictionFactValues

予測対象の正のラベルを表す BigQuery 列の値。複数の値をカンマで区切って、正のラベルを定義できます。

Add to Cart

--outputSessionsAvroPrefix

AVRO ファイルの出力先となる Cloud Storage 上の場所。この親バケットは、このチュートリアルの前項の環境の準備で作成しています。

gs://${BUCKET_NAME}/usersession-output/

  1. Cloud Shell で、Dataflow を使用して UserSessionPipeline.java パイプラインを実行します。

    export RUN_ID=`date -I`/`date +%s`
    
    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=UserSessionPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project='${PROJECT_ID}' \
        --inputBigQuerySQL='SELECT * FROM \`bigquery-public-data.google_analytics_sample.ga_sessions_*\`' \
        --predictionFactName='hits.eventInfo.eventAction' \
        --predictionFactValues='Add to Cart' \
        --outputSessionsAvroPrefix='gs://${BUCKET_NAME}/usersession-output/${RUN_ID}'"
    

    このコマンドを実行すると、出力用に一意の RUN_ID フォルダが作成され、パイプラインが以前の実行のファイルを上書きできなくなります。

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

    [INFO] --------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] --------------------------------------------------------------------
    [INFO] Total time:   19.760 s
    [INFO] Finished at:  2020-02-19T10:50:57+11:00
    [INFO] --------------------------------------------------------------------
    
  2. ジョブによって Cloud Storage フォルダ gs://${BUCKET_NAME}/usersession-output/ にステージング ファイルが作成されたことを確認します。

    gsutil ls gs://${BUCKET_NAME}/usersession-output/${RUN_ID}*
    

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

    gs://mldatawindowingpipeline/usersession-output/
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00000-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00001-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00002-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00003-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00004-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00005-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00006-of-00025.avro
    

ステップ 2(省略可): データを BigQuery に保存して確認する

このパイプライン(DataVisualizationPipeline.java)は省略可能ですが、実行すれば処理を先に進める前にデータを出力して確認できます。ステップ 1 のデータから次の BigQuery テーブルが生成されます(すでに存在する場合は更新されます)。これらのテーブルを使用してデータをプロットすれば、時系列での整合性を確認できます。

  • ファクト テーブル。このテーブルには、ユーザーごとのアクティビティ時間の変数と値のリストが含まれています(オリジナル データに基づきます)。
  • インスタンス テーブル。このテーブルには、スナップショットの日付(発効日とも呼ばれます)ごとに選択した ML インスタンスが含まれています。つまり、スナップショットの日付ごとに、その日付以前にアクションを実行した既存のすべてのユーザーのデータが出力されます。これには次の情報も含まれます。
    • 事前定義された予測ウィンドウ(hasPositiveLabel 列)内のラベル
    • 使用可能な最初のアクティビティとスナップショットの日付の間の日数(daysSinceFirstActivity 列)
    • 使用可能な最後のアクティビティからスナップショットの日付までの日数(daysSinceLatestActivity 列)

ユーザーとスナップショットの日付の組み合わせにより、インスタンスのスナップショットが定義されます。次の図に示すように、スナップショットの日付は事前定義されたスライド時間により移動されます。

特定の日付のルックバックと予測ウィンドウを表示するスナップショット インスタンス。

snapshotStartDatesnapshotEndDate は、抽出する最初と最後のスナップショットの日付を定義し、maximumLookaheadTimeminimumLookaheadTime は、現在のスナップショットの日付に関する予測ウィンドウを定義します。このステップでは、これらのパラメータの引数を入力として指定します。これらの引数については、次のテーブルで詳しく説明します。

Cloud Shell で DataVisualizationPipeline.java パイプラインを呼び出すときは、次のテーブルの引数を使用します。

フラグ 説明 引数の例
--inputAvroSessionsLocation ステップ 1 の AVRO ファイルの場所 gs://${BUCKET_NAME}/usersession-output/
--snapshotStartDate 検討するスナップショットの最初の日付(dd/mm/yyyy 形式)

31/01/2017

--snapshotEndDate

検討するスナップショットの最後の日付(dd/mm/yyyy 形式)

31/01/2018

--slideTimeInSeconds

スナップショットの日付をスライドする時間間隔(秒単位) 604800(7 日間)

--minimumLookaheadTimeInSeconds

現在のスナップショットの日付から開始する予測ウィンドウの時間(秒単位)。 86400(現在のスナップショットの日付から 86,400 秒後、つまり翌日、に始まる予測ウィンドウの場合)

--maximumLookaheadTimeInSeconds

現在のスナップショットの日付から予測ウィンドウが終了するまでの時間(秒単位)。予測ウィンドウの長さは、maximumLookaheadTimeInSecondsminimumLookaheadTimeInSeconds の差です。 1209600(14 日間の予測ウィンドウの場合)

--stopOnFirstPositiveLabel

後続のスナップショットで正のラベルが付いたら、そのユーザーの検討を停止します。

true

--outputBigQueryFactsTable

BigQuery ファクト テーブルの場所。引数の形式に注意してください。

${PROJECT_ID}.${DATASET}.TABLE_ID

以下を置き換えます。
  • ${DATASET}: BigQuery データセットの ID
  • TABLE_ID : BigQuery ファクト テーブルの ID

${PROJECT_ID}.${DATASET}.ga_facts_table

--outputBigQueryUserActivityTable

BigQuery インスタンス テーブルの場所。引数の形式に注意してください。

${PROJECT_ID}.${DATASET}.INSTANCE_ID

以下を置き換えます。
  • ${DATASET}: BigQuery データセットの ID
  • INSTANCE_ID: BigQuery インスタンス テーブルの ID

${PROJECT_ID}.${DATASET}.ga_instance_table

  1. Cloud Shell で、Dataflow を使用して DataVisualizationPipeline.java パイプラインを実行します。

    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=DataVisualizationPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project=${PROJECT_ID} \
        --inputAvroSessionsLocation='gs://${BUCKET_NAME}/usersession-output/${RUN_ID}*' \
        --snapshotStartDate='31/01/2017' \
        --snapshotEndDate='31/01/2018' \
        --slideTimeInSeconds='604800' \
        --minimumLookaheadTimeInSeconds='86400' \
        --maximumLookaheadTimeInSeconds='1209600' \
        --stopOnFirstPositiveLabel='true' \
        --outputBigQueryFactsTable='${PROJECT_ID}:${DATASET}.ga_facts_table' \
        --outputBigQueryUserActivityTable='${PROJECT_ID}:${DATASET}.ga_instance_table'"
    
  2. Dataflow が 2 つの BigQuery テーブルを作成したことを確認します。

    bq ls ${PROJECT_ID}:${DATASET}
    

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

          tableID         Type     Labels      Time Partitioning      Clustered Fields
    ------------------- -------- ----------  -------------------  --------------------
     ga_facts_table      TABLE
     ga_instance_table   TABLE
    

Dataflow がテーブルを作成したら、データの整合性と完全性を分析できます。次の分析は、時間経過に伴うデータのランダム スパイク、整合性のないデータ傾向とデータポイントを確認するのに利用できます。

  • インスタンスのサイズと予測ラベルの分布を時系列で分析します。
  • daysSinceFirstActivitydaysSinceLastActivity データを分析してルックバック ウィンドウ期間を理解し、意味のある期間を定義します。
  • 予測ラベルの不均衡、ラベル値、または daysSinceLastActivity に基づいてインスタンスをフィルタリングして、モデル構築のためのアクティブ インスタンスを選択します。

ステップ 3: データのウィンドウを作成する

ステップ 1 の AVRO ファイルと WindowingPipeline.java パイプラインを使用して、スナップショットの日付が設定した間隔でスライドするスナップショットを作成できます。次の図に示すように、このパイプラインは、スナップショットの日付のタイムラインに従ってスライドする、指定のルックバック ウィンドウと予測ウィンドウに基づいてデータをウィンドウ処理します。

設定した間隔でスライドするスナップショットの日付。

図で使用されている用語は、このステップの以下の引数テーブルで定義されています。これで、データセットをステップ 4 の特徴に集約する準備が整いました。

また、WindowingPipeline.java パイプラインはスナップショットの日付ではなく、一般提供のセッションごとにウィンドウ処理したデータを出力します。このデータは、一般提供のセッション レベルで特徴を生成する場合に利用できます。

Cloud Shell で WindowingPipeline.java パイプラインを呼び出すときは、次のテーブルの引数を使用します。

フラグ 説明 引数の例

--inputAvroSessionsLocation

ステップ 1 の AVRO ファイルの場所

gs://${BUCKET_NAME}/usersession-output/

--snapshotStartDate

検討するスナップショットの最初の日付(dd/mm/yyyy 形式)

31/01/2017

--snapshotEndDate

検討するスナップショットの最後の日付(dd/mm/yyyy 形式)

31/01/2018

--slideTimeInSeconds

スナップショットの日付をスライドする時間間隔(秒単位) 604800(7 日間)

--minimumLookaheadTimeInSeconds

現在のスナップショットの日付から開始する予測ウィンドウの時間(秒単位)。 86400(現在のスナップショットの日付から 86,400 秒後、つまり翌日、に始まる予測ウィンドウの場合)

--maximumLookaheadTimeInSeconds

現在のスナップショットの日付から予測ウィンドウが終了するまでの時間(秒単位)。予測ウィンドウの長さは、maximumLookaheadTimeInSecondsminimumLookaheadTimeInSeconds の差です。 1209600(14 日間の予測ウィンドウの場合)

--stopOnFirstPositiveLabel

後続のスナップショットで正のラベルが付いたら、そのユーザーの検討を停止します。

true

--lookbackGapInSeconds

現在のスナップショットのルックバック日付とウィンドウ間に追加する間隔(秒単位)。データラグなどの実際の採点シナリオをシミュレートするため、この設定は通常 1 日に設定します。 86400(1 日の場合)

--windowTimeInSeconds

ルックバック ウィンドウのサイズ(秒単位) 7776000(90 日の場合)

--outputSlidingWindowAvroPrefix

指定したスライド量に基づく日付間隔でウィンドウ処理したデータの AVRO ファイルを出力する先となる Cloud Storage 上の場所。

gs://${BUCKET_NAME}/windowing-output/

--outputSessionBasedWindowAvroPrefix

Google アナリティクス セッションに基づく日付間隔でウィンドウ処理したデータの AVRO ファイルを出力する先となる Cloud Storage 上の場所。このデータでは、セッションごとに 1 つのウィンドウが出力されます。

gs://${BUCKET_NAME}/windowing-session-output/

  1. Cloud Shell で、Dataflow を使用して WindowingPipeline.java パイプラインを実行します。

    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=SlidingWindowPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project=${PROJECT_ID} \
        --inputAvroSessionsLocation='gs://${BUCKET_NAME}/usersession-output/${RUN_ID}*' \
        --snapshotStartDate='31/01/2017' \
        --snapshotEndDate='31/01/2018' \
        --slideTimeInSeconds='604800' \
        --minimumLookaheadTimeInSeconds='86400' \
        --maximumLookaheadTimeInSeconds='1209600' \
        --stopOnFirstPositiveLabel='true' \
        --lookbackGapInSeconds='86400' \
        --windowTimeInSeconds='7776000' \
        --outputSlidingWindowAvroPrefix='gs://${BUCKET_NAME}/windowing-output/${RUN_ID}'"
    
  2. ジョブによって Cloud Storage フォルダ gs://${BUCKET_NAME}/usersession-output/ にステージング ファイルが作成されたことを確認します。

    gsutil ls gs://${BUCKET_NAME}/windowing-output/${RUN_ID}*
    

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

    gs://mldatawindowingpipeline/windowing-session-output/
    gs://mldatawindowingpipeline/windowing-session-output/-00000-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00001-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00002-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00003-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00004-of-00052.avro
    

ステップ 4: ウィンドウ処理されたデータを集計して特徴を作成する

ステップ 3 の AVRO ファイルを使用して、GenerateFeaturesPipeline.java パイプラインは、ユーザーのすべてのスナップショットの特徴を含み、ML 処理の準備が整った BigQuery テーブルを出力します。この特徴は、先に作成したルックバック ウィンドウで発生した、別の種類の集約イベントに基づいています。

次の 2 種類の特徴を作成できます。

  • 数値。これらの特徴には、合計、カウント、平均などの測定値としての意味があります。
  • カテゴリ。これらの特徴は、最も頻度が高いものや最新のものなどの特性を表します。

数値またはカテゴリのいずれの特徴を作成した場合でも、GenerateFeaturesPipeline.java パイプラインには次のテーブルに示す引数が必要です。Cloud Shell でパイプラインを呼び出せば、これらの引数が渡されます。

フラグ 説明 引数の例

--windowedAvroLocation

ステップ 3 のスライディングまたはセッション ウィンドウの AVRO ファイルの場所

gs://${BUCKET_NAME}/windowing-output/

--featureDestinationTable

BigQuery 特徴テーブルの場所

'${PROJECT_ID}':${DATASET}.ga_features_table

--trainMode

出力に predictionLabel を含めるには、true に設定します。

true

--showEffectiveDate

出力に発効日(スナップショットの日付)を含めるには、true に設定します。

true

--showStartTime

その時点からデータを検討する開始時刻を出力に含めるには、true に設定します。

true

--showEndTime

その時点からデータを検討する終了時刻を出力に含めるには、true に設定します。

true

--showEffectiveDateWeekOfYear

出力に発効日(スナップショットの日付)の年の週を含めるには、true に設定します。

true

--showEffectiveDateMonthOfYear

出力に発効日(スナップショットの日付)の年の月を含めるには、true に設定します。

true

--showUserTenure

出力に userTenuredaysSinceFirstActivity)を含めるには、true に設定します。

true

数値またはカテゴリの特徴を作成するには、GenerateFeaturesPipeline.java パイプラインに他の引数が必要です。

数値特徴の引数

数値特徴を作成するには、GenerateFeaturesPipeline.java パイプラインには次のテーブルに示す引数も必要です。

フラグ 説明 引数の例

--sumValueFromVariables

この特徴は、ルックバック ウィンドウ内で特定の変数を持つすべての数値の合計を計算します。入力には少なくとも 1 つのアイテム、または 2 つ以上のアイテムのカンマ区切りリストが必要です。

totals.hits, totals.pageviews, totals.timeOnSite

--averageByTenureValueFromVariables

この特徴は、ルックバック ウィンドウ内で特定の変数を持つすべての数値(またはルックバック ウィンドウ サイズよりも小さい場合は数値の存続期間内)の 1 日あたりの平均を計算します。入力には少なくとも 1 つのアイテム、または 2 つ以上のアイテムのカンマ区切りリストが必要です。

totals.hits, totals.pageviews, totals.timeOnSite

--averageValueFromVariables

この特徴は、ルックバック ウィンドウ内の任意の変数の値の平均値を計算します。入力には少なくとも 1 つのアイテム、または 2 つ以上のアイテムのカンマ区切りリストが必要です。

totals.hits, totals.pageviews, totals.timeOnSite

カテゴリ特徴の引数

カテゴリ特徴を作成するには、GenerateFeaturesPipeline.java パイプラインに次のテーブルに示す引数が必要です。

フラグ 説明 引数の例

--countValueFromVariables

この特徴は、ルックバック ウィンドウ内の値の発生回数をカウントします。入力には、列名をカンマ区切りしたリストとカウントする値のリストが必要です。値が送信された値のリストにない場合、その値はデフォルト値の [Others] 以下とみなされます。

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

--mostFreqValueFromVariables

この特徴は、ルックバック ウィンドウ内でアクティブな最も頻度の高い値を計算します。入力には、列名のカンマ区切りリストと、そこから最も頻度の高い値を抽出する値のリストが必要です。値が送信された値のリストにない場合、その値はデフォルト値の [Others] 以下とみなされます。

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

--proportionsValueFromVariables

この特徴は、ルックバック ウィンドウ内でアクティブな値のセットの割合を計算します。入力には、コンマ区切りした列名のリストと割合を計算する値のリストが必要です。値が送信された値のリストにない場合、その値はデフォルト値の [Others] 以下とみなされます。

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

--recentValueFromVariables

この特徴は、ルックバック ウィンドウで使用された最新の値を抽出します。入力には、コンマ区切りした列名のリストと値のリストが必要です。値が送信された値のリストにない場合、その値はデフォルト値の [Others] 以下とみなされます。

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

  1. Cloud Shell で、Dataflow を使用して GenerateFeaturesPipeline.java パイプラインを実行します。

    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=GenerateFeaturesPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project='${PROJECT_ID}' \
        --windowedAvroLocation='gs://${BUCKET_NAME}/windowing-output/${RUN_ID}*.avro' \
        --featureDestinationTable='${PROJECT_ID}:${DATASET}.ga_features_table' \
        --recentValueFromVariables='' \
        --averageByTenureValueFromVariables='' \
        --sumValueFromVariables='totals.hits,totals.pageviews,totals.timeOnSite' \
        --countValueFromVariables='' \
        --proportionsValueFromVariables='channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]' \
        --averageValueFromVariables='' \
        --mostFreqValueFromVariables=''"
    
  2. Cloud Console で、[Dataflow] ページに移動します。

    [Dataflow] ページに移動

  3. ジョブのステータスが最初に Running で、次に Succeeded であることを確認します。

    ジョブのステータスは成功と表示します。

  4. Cloud Console で、[BigQuery] ページに移動します。

    [BigQuery] ページに移動

  5. ga_features_table がリストされていることを確認します。

    BigQuery 特徴テーブルのリスト

クリーンアップ

このチュートリアルで使用したリソースのために Google Cloud アカウントに課金されることを防ぐには、このチュートリアル用に作成した Google Cloud プロジェクトを削除するか、このチュートリアルに関連付けられたリソースを削除します。

Google Cloud プロジェクトを削除する

課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

  1. Cloud Console で [リソースの管理] ページに移動します。

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

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

リソースを削除する

このチュートリアルで使用した Google Cloud プロジェクトを残しておく場合は、個々のリソースを削除します。

Cloud Storage リソースを削除する

  1. Cloud Console で、[Cloud Storage] ページに移動します。

    [Cloud Storage] ページに移動

  2. 削除するバケットのチェックボックスをオンにします。

  3. [削除] をクリックします。

BigQuery リソースの削除

  1. Cloud Console で、[BigQuery] ページに移動します。

    [BigQuery] ページに移動

  2. 削除するテーブルを選択します。

  3. [削除] をクリックします。

次のステップ