BigQuery チームは、Google スプレッドシートをデータベース内のテーブルのように扱う機能を開発しました。つまり、10 億行の BigQuery テーブルを、単一のクエリでスプレッドシートに入力した 100 行のマッピング テーブルと結合できます。
この機能では、データモデルの構成、アドホック データ用のデータ パイプラインの作成、最新の数値と最新の目標および予測との比較が可能です。
例
たとえば、Google フォームを使用して収集した Looker のユーザー名をモデル化したいとします。
Looker で情報を収集してモデル化する手順は次のとおりです。
- Google フォームを使用して、データを Google スプレッドシートに収集します。送信するごとにシートに行が追加されます。
- Looker への接続に使用するサービス アカウントとスプレッドシートを共有するか、リンクを使用してユーザーにアクセス権を付与します(表示のみ)。
- プロジェクトで Drive API と Sheets API が有効になっていることを確認します。
- スプレッドシートからコンテンツを取得する BigQuery インターフェースからテーブルを作成します。
- Looker プロジェクトで、すでに収集している他のユーザーデータ(ユーザーの場所など)とスプレッドシート テーブルを結合するデータモデルを生成します。SQL を使用して、データベースから取得した名前を正規化することもできます。BigQuery にデータをキャッシュすると、スプレッドシートに高い負荷がかかるのを回避できます。
結果の LookML の例は次のようになります。
explore: names_sheet {
persist_for: "60 seconds"
join: names_facts {
sql_on: ${names_sheet.normalized_name} = ${names_facts.normalized_name} ;;
sql_where: ${names_facts.city} ;;
relationship: one_to_one
}
view_name: names_sheet {
derived_table: {
persist_for: "2 minutes"
sql:
SELECT row_number() OVER() as id, name, UPPER(CASE WHEN REGEXP_MATCH(name, r'\,')
THEN REGEXP_EXTRACT(name, r', (\w+)')
ELSE REGEXP_EXTRACT(name, r'^(\w+)')
END
) as normalized_name FROM namesheet.names ;;
}
dimension: id {
type: number
}
dimension: name {
order_by_field: id # keep the rows in the original order
}
dimension: normalized_name {
}
measure: count {
type: count
drill_fields: [id, name, names_facts.city]
}
measure: count_from_new_york_city {
type: count
filters: [names_facts.city: "New York City"]
}
measure: percentage_from_new_york_city {
type: number
sql: ${count_from_new_york_city}/${count} ;;
value_format_name: percent_2
}
measure: average_age_median {
type: average
sql: ${names_facts.age_median} ;;
value_format: "0000"
}
}
}
このモデルから、データを使用して Explore を作成し、Look とダッシュボードを構築して、Google フォームから収集してGoogle スプレッドシートに入力したすべてのユーザー名に関する指標や、個々のユーザーに関するその他の情報を表示できます。