# SQLクエリ
主要な分析モデルを使用するだけでなく、別途SQLを使用することにより通常の機能では実現が難しい高度な分析も実行できます。現状のクラスター配下のプロジェクトデータをクエリすることもできます。 SQL クエリで価値のある問題点を見つけた際は、レポート作成後、他のレポートと同様にダッシュボードへ設置することもできます。
# 入力ボックスでSQLコードを編集
TEはTrinoクエリエンジンを使用しており、標準SQLを使用してクエリコードを実行できます。以下は簡単な例です。
SELECT
"$part_date"
, count(DISTINCT "#user_id")
FROM
ta.v_event_1
WHERE ("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login')
GROUP BY "$part_date"
ORDER BY "$part_date" ASC
編集する際は、次の点に注意する必要があります。
- フィールド名を二重引用符
" "
でつけてください。省略することも可能ですが、照会するフィールド名に特殊記号 ($,#
など) が含まれている場合は、二重引用符を使用する必要があります。 - 文字列は一重引用符
' '
で囲む必要があります。 SELECT
またはWITH
を利用してください。
クエリコードを作成する過程で「テーブル構造」の情報を参照し、テーブル名またはテーブル内のフィールド名をコピーしたり、「テーブル解析」を通じてすべてのフィールドを含むクエリコードを入力ボックスへ自動的に挿入も可能です。
編集中の内容が失われないように、ブックマークとして保存することもできます。保存されたものは「ブックマーク」タブを開くと確認できます。
クエリコードで動的時間を使用する必要がある場合または他のメンバーがクエリコードの一部を動的に調整する必要がある場合は、動的パラメーターを追加して実現できます。
他の分析モデルとは異なり、SQLクエリで権限を持つすべてのプロジェクトのデータを使用できます。例えば、プロジェクト1とプロジェクト2のDAUを同時に参照できます。
SELECT
a."$part_date"
, "Project_1_DAU"
, "Project_2_DAU"
FROM
((
SELECT
"$part_date"
, count(DISTINCT "#user_id") "Project_1_DAU"
FROM
ta.v_event_1
WHERE (("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login'))
GROUP BY "$part_date"
) a
INNER JOIN (
SELECT
"$part_date"
, count(DISTINCT "#user_id") "Project_2_DAU"
FROM
ta.v_event_2
WHERE (("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login'))
GROUP BY "$part_date"
) b ON (a."$part_date" = b."$part_date"))
ORDER BY a."$part_date" ASC
イベントテーブル、ユーザーテーブルに加え、クエリコードで次のデータを使用することもできます。
- タグ・コホートテーブル:ta.user_result_cluster_{project_id}
- 履歴タグテーブル:ta.user_result_cluster_{project_id}
- 履歴為替レート:ta_dim.ta_exchange
- 参照テーブル
- 臨時テーブル
クエリコードで次のデータを使用する必要がある場合は、具体的な使用方法について事前に弊社スタッフへお問い合わせください。
- 毎日0時にユーザーのデイリーシリアルテーブルを保存。(当時ユーザーの状態を記録・保存)
- 二次開発ツールを使用してカスタムテーブルをインポート
- Trino Connectorを使用して外部データソースをリンク
# クエリ結果を表示し、レポートとして保存
SQLクエリ画面右側の「計算」ボタンをクリックすると、該当SQLコードの実行結果が表示され最大1,000行の詳細データが表示されます。すべてのデータを表示する場合は、CSVファイルをダウンロードしてください(最大100万行のデータ)。このクエリの結果を「臨時テーブル」として保存し、後続のクエリで使用することもできます。
データの詳細を直接表示するだけでなく、可視化モジュールで提供されている折れ線グラフや円グラフなど、多様なグラフの種類を介してデータを可視化することもできます。該当のクエリコードと可視化の構成をレポートとして保存し、他のメンバーと共有することもできます。
図1:
注意:
他の分析レポートと同様に異なるメンバーがSQLレポートで表示できるデータもデータ権限の影響を受けるのでご注意ください。例えば、iOS チャネル権限のみを持つメンバーが表示する結果にはiOSチャネルユーザーの行動データのみが含まれます。
補足:
データ権限に加え、SQLレポートのイベント権限も設定できます。指定したイベントを使用する権限がメンバーにない場合、レポートにはデータが表示されません (図 1)。
クエリコードで他のプロジェクトのデータが使用されているか否かに関係なく、レポートは該当プロジェクト下にのみ保存されることにご注意ください。該当プロジェクトに属していないテーブルがクエリコードに表示される場合は、閲覧者がクエリに関連するすべてのプロジェクト権限を持っている必要があるか否かも確認する必要があります (図 2)。
SQLレポートのクエリコードは複雑なことが多いため、表示キャッシュを設定できます (図 3)。計算が完了するとデータの結果がキャッシュされ、同じレポートがクエリされるとキャッシュされたデータの結果が直接読み込まれます。次回は再計算せずにクラスタリソースを節約できます。
ダッシュボードの定期更新は、設定内容に関係なく全てのSQLレポートに対して有効です。ダッシュボードが定期的に更新されるときに計算されます。非T+1レポートのキャッシュを 24 時間に設定し、ダッシュボードが1日1回だけ計算するようにできます。
クエリコードの実行時間が300秒を超える場合、レポートにダッシュボードキャッシュを設定する必要があります。尚、レポートを手動で更新することはできません (ダッシュボードの定期更新は引き続き有効です)。また、このレポートの探索モジュールにも利用できなくなり、クエリコードを調整するか、クエリデータ範囲を縮めてみてください。
# 権限説明
ルートアカウント | 管理者 | アナリスト | メンバー | |
---|---|---|---|---|
SQLクエリ | ◎ | ◎ | △ | △ |
権限説明:
◎ 付与されている
○ デフォルトで設定されているが、除外可能
△ デフォルトで設定されていないが、付与可能
× 付与されていない
※アナリストロールには「SQLクエリを利用」権限がデフォルトで設定されていません。利用する必要がある場合は、権限の新規作成機能を使ってSQL利用権限を付与(カスタマイズ)してください。