メインコンテンツまでスキップ

Materials, Views, Result

すべての QAL クエリは3つの動く部品からできています。これらの関係が分かれば、言語の残りは自然に続きます。

Material — データ面

マテリアル は名前付きのデータ面で、粒度が固定されています。allpv は1行 = 1ページビュー。click_event は1行 = 1クリック。gsc は1行 = 1検索クエリ×1日。粒度はマテリアルの性質であって、クエリ時に選ぶものではありません。

ユーザーの質問に基づいてマテリアルを選びます。「検索から何セッション来たか?」なら、欲しいのは allpv (粒度 = 1ページビュー) と gsc (粒度 = 1検索クエリ) を JOIN したもので、click_event ではありません。

マテリアルは ai/materials.yaml に列挙されています。ここに無い名前は存在しません。

View — 名前付きの変換

ビュー はマテリアル(または別のビュー)の上に作られた名前付きの変換です。「このソースからこれらのカラムを残し、これらのフィルタをかけて、これを JOIN して、これを集計して、この列でソートする」ということを宣言します。

1つの make ブロックに複数のビューを定義できます。ビューは連鎖できて、あるビューの出力を別のビューの from に使えます。これが CTE 構文を渡さずに多段クエリを組む方法です。

ビューが作業単位です。実行器が走らせるのはクエリではなくビューです — クエリ全体は「これらのビューを定義して、この1つを返す」という指示です。

Result — 実際に返されるもの

result ブロックは、どのビューをどんな形で返すか を実行器に伝えます。1回のクエリで返せるのは1つのビューだけで、result.use で指定します。

  • result.use — 返すビューの名前
  • result.limit — 行数の上限 (count_only でなければ必須)
  • result.count_only: true — 行数だけ返し、limit を無視

make の他のビューは無駄ではありません。返されない中間ビューでも、返されるビューの from として参照できます。これがサブクエリの代わりになります。

頭のイメージ

   materials (データ面)


make (名前付きビュー — 連鎖可能)


result (どのビューをどれだけ)

正しく書かれた QAL クエリは全部、この絵を左から右に進みます。もしクエリがこの形と戦っているように感じるなら、たいてい make でやるべき作業を result でやろうとしているか、粒度の合わないマテリアルを選んでいるかのどちらかです。

次に読むページ

  • Materials — 実際のデータ面とサンプル表。
  • AI Instructions — AI クライアント向けのルール集。