Google Cloud BigQuery へのレポート自動出力

Google Cloud BigQuery(以下、BigQuery)へレポートデータを自動出力するために必要な設定事項を記載します。

glu から BigQuery へレポートデータを出力するために必要なこと

  1. Google Cloud コンソール上の準備
  2. glu 管理画面上の準備
  3. BigQuery 上の出力状況を確認

[参考情報]

1. Google Cloud コンソール上の事前準備

・プロジェクト
貴社 Google Cloud コンソール上に出力先となるプロジェクトをご用意ください。
詳細は こちら を参照してください。
※ 複数のプロジェクトへ出力する際は、アタラ サポートチームへお知らせください。glu の「レポート作成条件」でプロジェクトの指定が可能です。

・データセット
貴社 Google Cloud コンソール上に出力先とするデータセットをご用意ください。
データセットの指定は、ダイスまたはレポートテンプレートで調整可能です。
※ ダイスにデータセット名の入力欄を設けることで同一レポートテンプレートでもダイスごとに出力先データセットを指定可能です。

・テーブル
glu 側でテーブルを自動作成することが可能です。
テーブルの指定は、ダイスまたはレポートテンプレートで調整可能です。
ダイスにテーブル名の入力欄を設けることで同一レポートテンプレートでもダイスごとに出力先テーブルを指定可能です。

・フィールド
ご希望のフィールド名でご用意可能です。
種類(データ型)は glu 側に近しいものでご用意いたします。
※ ご希望のフィールド名、種類(データ型)があればお聞かせください。

以下は、キャンペーン別レポート出力時の一例です。

フィールド名(field name) 種類(type) 備考
Date DATE
Media STRING
Account STRING
AccountID STRING
Campaign STRING
CampaignID STRING
CampaignType STRING
Impressions INTEGER
Clicks INTEGER
Cost NUMERIC
Conversions NUMERIC

2. glu 管理画面上の準備

・認証コードを設定
glu 管理画面へログインして API を利用するための認証コードを設定します。
詳細は こちら を参照してください。

・アカウント接続
メディア・ツールと接続するための情報を設定します。
詳細は こちら から各メディアの「詳細」ページへ入り「アカウント接続」を参照してください。

・レポートテンプレートを作成
初回連携時は 5 つまでご要望の内容に併せたレポートテンプレートを アタラ サポートチーム が作成します。
レポート項目や出力イメージをお知らせください。(例:日付、キャンペーン、表示回数、クリック数、ご利用金額、コンバージョン)

・ダイスを作成
[レポート案件]フォルダにダイスを作成します。
初回連携時は アタラ サポートチーム にて対応可能です。
ユーザ様側で作成したい場合は こちら を参照してください。

・アカウントをリンク
ダイスへアカウントをリンクします。
初回連携時は アタラ サポートチーム にて対応可能です。
ユーザ様側で作成したい場合は こちら を参照してください。

・レポートテンプレートをリンク
ダイスへレポートテンプレートをリンクします。
初回連携時は アタラ サポートチーム にて対応可能です。
ユーザ様側でリンクしたい場合は こちら を参照してください。

BigQuery 上の出力状況を確認

ダイスのタスクが正常終了すると glu から BigQuery へのレポートデータ出力が完了です。
BigQuery 上の出力状況を確認してください。

ダイスのタスクは以下で確認します。

  1. [レポート案件]フォルダの[ダイス]を選択
  2. [タスク]タブを選択
  3. [登録日時]を選択
  4. [再表示]を選択
  5. [状態]が[正常終了]になっていることを確認
タスク とは
レポート自動作成、通知など glu の出力操作です。
タスクの状況についてお困りの際は アタラ サポートチームへお知らせください。
例)
– [状態]が「エラー終了」になっている
– [状態]は「正常終了」だが BigQuery 上の内容に異常がある

[参考情報]

・レポートテンプレートのイメージ

CREATE 文

テーブルを作成してフィールドを設定

${IMC_BEGIN_TAG}
# CREATE

GROUP=report_group_default
PERIOD_START=from,month,1,1
PERIOD_END=from,month,0,-1

ASPECT=report_aspect_none

SEGMENT=
SELECTOR=
FROM_LEVEL=campaigns
DAILY_LEVEL=any
SHOW_HEADER=report_show_header_none
SHOW_ALL_ASPECT_ROWS=false
SUM=report_sum_none
OUTPUT_FORMAT=sql
OUTPUT_CODE=utf8
FLAT=false

TEXT_BODY=${
CREATE TABLE IF NOT EXISTS
`#{@node.bq_dataset_name}.campaigns_daily`
(
Date DATE,
Media STRING,
Account STRING,
AccountID STRING,
Campaign STRING,
CampaignID STRING,
CampaignType STRING,
Impressions INT64,
Clicks INT64,
Cost NUMERIC,
Conversions NUMERIC,
)
PARTITION BY `Date`
CLUSTER BY `Client_ID`
;
}
${IMC_END_TAG}

DELETE 文

過去 30 日分のデータを削除

${IMC_BEGIN_TAG}

# DELETE

GROUP=report_group_default
PERIOD_START=from,day,29,0
PERIOD_END=from,day,0,0

ASPECT=report_aspect_daily
SERIES=report_series_none
SEGMENT=report_segment_none
SELECTOR=
FROM_LEVEL=campaigns
DAILY_LEVEL=any
ANTE_FILTER=report_ante_filter_none
MEDI_FILTER=report_medi_filter_none
POST_FILTER=report_post_filter_none
ROUND_UP=report_round_up_none
SHOW_HEADER=report_show_header_none
SHOW_SEGMENT=report_show_segment_none_by_aspect
SHOW_SERIES=report_show_series_none
SHOW_ALL_ASPECT_ROWS=false
SHOW_SUM=report_show_sum_none
WRAP_ROWS=false
FLAT=false

OUTPUT_FORMAT=sql
OUTPUT_CODE=utf8
CHUNK_ROWS=1000

TEXT_HEAD=${
DELETE from `#{@node.bq_dataset_name}.campaigns_daily` where date in (
}
TEXT_BODY=${
PARSE_DATE(‘%Y/%m/%d’, #{t @data[0]})
}
TEXT_BCAT=,
TEXT_FOOT=${
);
}
${IMC_END_TAG}

INSERT 文

過去 30 日分のデータを挿入

${IMC_BEGIN_TAG}

# INSERT

GROUP=report_group_default
PERIOD_START=from,day,29,0
PERIOD_END=from,day,0,0

ASPECT=report_aspect_campaigns
SERIES=report_series_daily

SEGMENT=report_segment_none
SELECTOR=
DAILY_LEVEL=any
FROM_LEVEL=campaigns
ANTE_FILTER=report_ante_filter_none
MEDI_FILTER=report_medi_filter_none
POST_FILTER=report_post_filter_custom:”(SUM(report_imps)>0 OR SUM(report_clicks)>0 OR SUM(report_cost)>0 OR SUM(report_conv_t)>0)”
ROUND_UP=report_round_up_none
SHOW_SEGMENT=report_show_segment_none
SHOW_SERIES=report_show_series_none
SHOW_ALL_ASPECT_ROWS=false
SHOW_SUM=report_show_sum_none
SHOW_HEADER=report_show_header_none
WRAP_ROWS=false

FLAT=true

OUTPUT_FORMAT=sql
OUTPUT_CODE=utf8
CHUNK_ROWS=1000

TEXT_HEAD=${
INSERT `#{@node.bq_dataset_name}.campaigns_daily` (Date,Media,Account,AccountID,Campaign,CampaignID,CampaignType,Impressions,Clicks,Cost,Conversions) VALUES
}
TEXT_BODY=${
(#{t @data[:bq_report_date]},#{t @data[:media_type]},#{t @data[:bq_ac_name]},#{t @data[:account_id]},#{t @data[:bq_cp_name]},#{t @data[:campaign_id]},#{t @data[:cp_type]},#{t @data[:report_imps]},#{t @data[:report_clicks]},#{t @data[:report_cost]},#{t @data[:report_conv_t]})
}
TEXT_BCAT=,
TEXT_FOOT=${
;
}
${IMC_END_TAG}

・BigQuery の出力イメージ

例)
データセットをクライアントごとに作成

client

例)
一つのデータセットへ全てのクライアントのデータを入れる

allclient