Share
Embed
Transcript
30 slides
-
サーバレス化によるデータ連携 9 アーキテクチャ データ収集 データ可視化 GCPのサーバレスアーキテクチャなどでBigQueryへのデータ蓄積部分は自動化しつつ Looker Studioからカスタムクエリで独自データソースを作成することで生産性を向上 データ蓄積 BigQuery
Cloud Run functions Cloud Scheduler -
どこでデータ加工するのが正解なのか? 11 新規でデータ蓄積が 必要か? SQLで 加工可能か? YES YES NO BI上で動的な変更が
あるか? GAS YES NO Dataform カスタムSQL YES 冗長な収集が必要か? (アカウント違いなど) スケジュール実行が 必要か? NO NO Google Colaboratory BigQueryの既存デー タを加工するか? サービスアカウント 認証は必要か? NO NO Cloud Run functions Workflows NO YES BigQuery YES -
Looker Studioを仮想的にAPI化 20 アーキテクチャ ページ内表示 パラメータをクエリストリングで連携することで、Looker Studioのカスタムクエリの集計条件 を描画前に調整し、ユーザーがみたい閾値で可視化が可能 BigQuery ページ参照
https://lookerstudio.google.com/u/0/reporting/54f a38e1-b459-4606-9a20-d86359802901/page/p_mnpnn34y nd?params={"ds76.roas_times_param":"0.5"} 表示要素演算 ユーザー フィルタ結果 -
イメージ 21 https://lookerstudio.google.com/u/0/r eporting/54fa38e1-b459-4606-9a20-d863 59802901/page/p_mnpnn34ynd?params={"d s76.roas_times_param":"0.5"} SELECT campaign_id, campaign_name, ad_group_id,
ad_group_name, impressions, clicks, cost, revenue, revenue / NULLIF(cost, 0) AS roas FROM your_dataset.your_table WHERE revenue / NULLIF(cost, 0) >= @roas_times_param ORDER BY roas DESC ROASはデフォルト値 クエリストリングでデ フォルト値を更新 データソースを再集計 -
SQLで複雑な処理をUDFでjavascriptで書いてしまう 25 アーキテクチャ ページ内表示 計算フィールドやカスタムクエリ内でのメンテナンス性を考慮し、集計や分岐条件のコアロ ジックをUDFに切り出しつつ、結果のみを動的に可視化できるようにする BigQuery ページ参照 https://lookerstudio.google.com/u/0/reporting/54fa38e1-b4 59-4606-9a20-d86359802901/page/p_mnpnn34ynd?params
={"ds76.roas_times_param":"0.5"} 表示要素演算 ユーザー フィルタ結果 UDF(ユーザー定義関数の呼び出し) -
イメージ 26 CREATE OR REPLACE FUNCTION `your-project.your_dataset.label_roas` (roas_time s_param FLOAT64,
roas FLOAT64) RETURNS STRING LANGUAGE js AS R""" if (roas < roas_times_param ) { return `ROAS < ${Math.round( roas_times_param * 100)}%`; } else if (roas >= roas_times_param ) { return `ROAS ≧ ${Math.round( roas_times_param * 100)}%`; } else { return '不明'; } """; ルーティーンのクエリ BigQuery カスタムクエリ パラメータ閾値更新 SELECT campaign_id, campaign_name, ad_group_id, ad_group_name, impressions, clicks, cost, revenue, revenue / NULLIF(cost, 0) AS roas, `your-project.your_dataset.label_roas`( @roas_ times_param, revenue / NULLIF(cost, 0)) AS roas_label FROM your_dataset.your_table ORDER BY roas DESC