Google Data Studioを使用するために使ったSQL


SQL

SELECT:テーブルの中から必要なデータを抽出する(*で全部)

SELECT id, cost

FROM:データ元

FROM `test.test_report`

※FROMで長い名前の時などASで名前をつけると便利

FROM `test.test_report` AS test

WHERE:条件

WHERE DATE(_PARTITIONTIME) BETWEEN "2022-01-01" AND DATE_SUB(current_date('Asia/Tokyo'), INTERVAL 1 DAY)

※よく日付指定でWHERE使います。2022-01-01~昨日まで

GROUP BY:グループ化(Data Studioでディメンションに置くもの)

GROUP BY id,date,gender

WITH:中間テーブル(このSQL文の中で使えるテーブル)

WITH  test1 AS(
SELECT * FROM `test.test_report`
),
test2 AS (
SELECT * FROM `test.test2_report`
)
SELECT * FROM test2

※上記のように最後のSELECT * FROMtest2からtest1にすると1つ目のテーブルを出力できます。
データを調べる時やJOINする時などSQLが見やすくなるので非常に使いやすいです。

LEFT JOIN:テーブルの右に追加される

LEFT JOIN `test.teste_report` AS test2

USING:別のテーブルと カラム名 を紐付ける(Key)

USING(account_id)

ON:別のテーブルと 別のカラム名 で紐付ける(Key)

ON account_id = test_id

CAST:型を変更 SAFE-CAST:型変更できない時 null にする。書き方は CAST と同じ

CAST(id AS STRING) AS id

SUM:合計

SUM(cost) AS cost

MAX:最大値

MAX(cost) AS cost

※よくJOINする時はMAXを使ってます(メトリクス)

UNNEST:ネストされていたクエリを平たくできる

UNNEST(action) AS id

SUBSTRING:文字の切り取り

SUBSTRING(id,1,2) AS sub_id

EXCEPT:除外する

SELECT * EXCEPT(id) FROM `test.test_report`

distinct:重複削除 

SELECT DISTINCT id from `test.test_report`

UNION ALL:テーブルを統合

SELECT * FROM `test1`
UNION ALL
SELECT * FROM `test2`

COALESCE:NULLでない最初の引数を返す

COALESCE(NULL, 'B', 'C')

※結果はBになるが、もしBがNULLの場合はCとなる

IF:第1引数がTrueの時は第2引数を、そうでない時には第3引数を返す

IF( A=B, cost1, cost2) as cost

IFNULL:第1引数が NULL でなければ1つ目を、そうでなければ第2引数を返す

IFNULL(cost, 0) AS cost

※メトリクスになるようなcostとかは上記のような書き方をよくします。計算させる時にNULLであると結果がNULLになってしまうので0にして計算させます。

NULLIF:第1引数 = 第2引数がTrueの時はNULL、そうでない時には第1引数を返す

NULLIF(cost,0) AS cost

FORMAT_DATE:指定した日付の形に変更

FORMAT_DATE("%d", DATE "2022-01-01") AS day

※第一引数はこちらを参考に設定

ROUND:数値を指定された小数点以下の桁数に丸める

ROUND(SUM(cost)/SUM(clicks),0)

ROUNDはData Studio内でフィールドを追加し、そのフィールドに記載して使用することが多いです。

最後に

現状で使っているSQLはこのくらいです。
また新しく覚えたことがあれば、追加していきます。

何をGROUP BYにすれば良いのか参考になったサイト