見出し画像

Looker Q&A:BigQuery編

BigQueryの関数をすべて利用できる?

基本的にすべて利用できる。LookML中のsqlパラメータ中に記載したSQL文は自動生成されるSELECT内でそのまま発行される。ただし、LookMLの要素との対応関係を意識する必要がある(例 : 集約関数はmeasureフィールドのsqlパラメータで用いるなど)

BigQueryの複数プロジェクトをまたげる?

またげる。Lookerに[Connections]で登録したサービスアカウントが接続可能なすべてのプロジェクトに対して、同時にクエリ発行できる。ただし当然ながらBigQueryが対応していない、複数リージョンへのクエリ発行はできない。

ユーザ定義関数(UDF)を利用できる?

2つ方法がある。1つは、explore内でsql_preamble というパラメータを利用する方法。もう1つは、BigQueryの利用プロジェクト内に永続的なUDFとして保存しておく方法。

PARTITIONやCLUSTERでスキャン量を制限できる?

できる。LookerにはBigQueryのWHERE句でフィルターをかけるための方法がたくさんある。

・ダッシュボードでのフィルター
・view - derived_table - sql 
・model - explore - always_filter / access_filter / conditionally_filter
など。そのどこかで指定すれば制限可能。例えばこうする

また、予めBigQuery側のデータセットやプロジェクトを分けておけば、ユーザー属性を設定してLooker利用者に応じて出し分けることも可能。

window関数使える?

使える。view - derived_table - sql で直接SQL文を書くか、view - derived_table - explore_source - derived_column - sql で書けばよい。

ただし、ユーザーIDなど細かい粒度に対してwindow関数の結果が必要な場合に、Lookerでカバーしようとすると、計算時間が肥大化しやすく、Lookerでのテーブル加工も複雑化しやすい。僕はwindow関数が必要な処理は、基本的にデータマート作成のワークフローに組み込むようにしている。

集計結果に対して、window関数使いたいときはどうする?

window関数を基本Lookerで使わない方針にした場合に、前日比や前月同日比の計算をどうするか? 「集計値に対してwindow関数を使えば一発で済むのに!」という場面である。

このときは、可視化時の表計算の関数でカバーする。Lookerでは可視化時にスプレッドシートのような要領で関数計算を追加できる。その中にoffset関数や、index関数などがある。序列を基準に計算したい場合は基本対応できるだろう。


サポートされた者たちから受け継いだものはさらに『先』に進めなくてはならない!!