> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AftersellQL（AQL）リファレンス

> AftersellQL クエリ言語のリファレンス：利用可能な指標とディメンション、例付きの AQL 句の構文、Explorer のタイムゾーンルール。

[Explorer](/ja/aftersell/reports_explorer) で作成するすべてのクエリは **AftersellQL（AQL）** ステートメントです。ほとんどの場合、クエリは視覚的に作成するため、AQL を手書きすることはありません。このページは、選択できる指標とディメンション、AQL のテキスト形式、タイムゾーンルールのリファレンスです。

<div id="available-metrics">
  ## 利用可能な指標
</div>

選択できる指標を、指標ピッカーと同じグループ分けで示します。

<div id="revenue-profit">
  ### 収益と利益
</div>

| 指標 | 説明 |
| - | - |
| **Revenue** | ストアのネイティブ通貨でのアップセル収益。 |
| **Revenue (USD)** | 通貨をまたいだ比較のために USD に正規化されたアップセル収益。 |
| **Revenue Per Visit** | インプレッションセッションあたりのアップセル収益。商品、プレースメント、ファネル、デバイスで分解することはできません。 |
| **Avg. Conversion Value** | 承諾されたオファーあたりの収益。Average Upsell Value とも呼ばれます。 |
| **Upsell Revenue Per Order** | アップセル収益（USD）を総注文数で割った値。ストアレベルのみ。 |
| **Product Profit** | アップセルされた商品の収益から売上原価（COGS）を差し引いた値。マーチャントが設定した COGS に依存するため、推定値として扱ってください。コストが記録されていない商品は収益がそのまま利益として報告され、コストのカバー率はストアによって異なります。商品粒度のみで、ファネル、プレースメント、デバイスで分解することはできません。 |

<div id="conversions">
  ### コンバージョン
</div>

| 指標 | 説明 |
| - | - |
| **Conversions** | オファー承諾イベントの数。1件のオファー承諾が1コンバージョンとなるため、2件のオファーを承諾したセッションは2回カウントされます。 |
| **Accept Rate** | セッションベース：オファーを見たセッションのうち、少なくとも1件を承諾したセッションの割合。Conversions とは異なるロールアップから独立して計算されるため、Conversions ÷ Impressions にはなりません。 |
| **Units Sold** | アップセルオファーを通じて販売された合計数量。 |
| **Decline Rate** | 明示的に辞退された購入後オファーの割合。購入後のみ。 |

<div id="engagement">
  ### エンゲージメント
</div>

| 指標 | 説明 |
| - | - |
| **Impressions** | オファーを見たユニークセッション数。 |
| **Show Rate** | 判定のうちインプレッションにつながった割合。 |

<div id="store-performance">
  ### ストアのパフォーマンス
</div>

| 指標 | 説明 |
| - | - |
| **Total Store Revenue** | Shopify で支払い済みの注文の総収益。ストアレベルのみで、サーフェス、ファネル、プレースメント、デバイスで分解することはできません。 |
| **Orders** | Shopify で支払い済みの注文の総数。ストアレベルのみ。 |
| **Average Total Order Value** | ストアの収益を注文数で割った値。ストアレベルの平均注文額です。 |

<div id="rokt-network">
  ### Rokt ネットワーク
</div>

| 指標 | 説明 |
| - | - |
| **Rokt Revenue** | ストアに帰属する Rokt ネットワークの収益。 |
| **Rokt Transactions** | ストアの Rokt ネットワークのトランザクション数。 |
| **Rokt Revenue / Transaction** | 時間バケットごとの Rokt 収益をトランザクション数で割った値。 |
| **Rokt Impressions** | ストアのプレースメント全体での Rokt ネットワークのインプレッション合計。アップセルの **Impressions** とは別のものです。 |
| **Rokt Referrals** | Rokt ネットワークのリファラル。買い物客を Rokt パートナーへ送ったポジティブなエンゲージメントです。 |

<div id="dimensions">
  ## ディメンション
</div>

ディメンションは、指標を属性ごとに分解します。すべてのディメンションがすべての指標と互換性があるわけではなく、Explorer は互換性のない組み合わせを自動的に防ぎます（たとえば、**Decline rate** と **Show rate** は **Currency** で分解できません）。

<div id="available-dimensions">
  ### 利用可能なディメンション
</div>

| ディメンション | 説明 |
| - | - |
| **Date** | 結果を日、週、月ごとにグループ化します。 |
| **Surface** | アップセルのサーフェス：PPU（購入後）、Checkout、Thank You Page、Cart。 |
| **Funnel** | オファーが属する特定のファネル。 |
| **Product** | アップセルされた商品。 |
| **Placement** | ファネル内のプレースメント。 |
| **Device** | デバイスの種類：Mobile、Desktop、Unknown。タブレットの値は別途ありません。 |
| **Currency** | ISO 通貨コード（例：USD、EUR、GBP）。複数通貨のストアで役立ちます。 |

<div id="unavailable-dimensions">
  ### 利用できないディメンション
</div>

以下は開発中です。ピッカーには表示されますが、実装されるまではすべての指標で「Not compatible」と表示されます。

| ディメンション | 説明 |
| - | - |
| **Flow type** | アップセルフローの種類。 |
| **Experiment** | A/B テストまたは実験のバリアント。 |
| **Outcome** | 判定結果（例：適格、在庫切れ）。 |
| **Reason code** | 判定結果の理由。 |
| **Scope** | 判定のスコープ（Flow、Experience、Placement、ItemSlot）。 |
| **Response type** | オファーへの応答（Accepted、Declined、Timeout）。 |

<div id="aql-statement-syntax">
  ## AQL ステートメントの構文
</div>

AQL ステートメントは、複数の句で構成される1つの質問です。必須なのは `SELECT` と期間（`SINCE`）のみで、それ以外はすべて任意です。任意の句を含める場合は、次の順序で記述する必要があります。

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT    <metrics>                    -- what to measure (required)
WHERE     <filters>                    -- narrow the data
GROUP BY  <dimensions>                 -- break the numbers down
SINCE     <time range>                 -- the period to cover (required)
GRAIN     <time grain>                 -- bucket size for time series
COMPARE   <comparison>                 -- compare against another period
CHART     <visualization>              -- how to display the result
TIMEZONE  "<timezone>"                 -- timezone for date buckets
ORDER BY  <field> <direction>          -- sort the results
LIMIT     <number>                     -- cap the number of rows
```

最小限の例として、過去30日間の日次アップセル収益と承諾率を示します。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT revenue, accept_rate
GROUP BY date
SINCE last_30d
GRAIN day
```

<Note>
  キーワードは大文字と小文字を区別せず（`SELECT` と `select` のどちらも動作します）、ステートメントの末尾にセミコロンは付けません。文字列値はダブルクォートで囲みますが、数値とリストは囲みません。
</Note>

<div id="select-and-group-by">
  ### SELECT と GROUP BY
</div>

* **`SELECT`** は測定する指標をカンマ区切りで列挙します。例：`SELECT revenue, impressions, accept_rate`。
* **`GROUP BY`** は、それらの指標を `date`、`device`、`surface`、`funnel` などの1つ以上のディメンションで分解します。`GROUP BY` がない場合は、期間全体の単一の合計値が得られます。

<div id="filtering-with-where">
  ### WHERE によるフィルタリング
</div>

`WHERE` は、測定前にデータを絞り込みます。条件は `AND` で組み合わせます。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT revenue
WHERE device = "mobile"
GROUP BY date
SINCE last_month
GRAIN day
```

<Warning>
  `impressions`、`accept_rate`、`rpv` は、デバイス、ファネル、プレースメント、商品でフィルターまたはグループ化**できません**。ソースとなるロールアップにそれらの列がないためです。これらのいずれかを選択するクエリに `WHERE device = "mobile"` を追加すると、`metric "impressions" cannot be filtered by "device"` というエラーで拒否されます。
</Warning>

サポートされる比較演算子は `=`、`!=`、`IN`、`NOT IN`、`>`、`<`、`>=`、`<=` です。複数の値に一致させるには、`IN` でリストを使用します。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
WHERE surface IN ["PPU", "Checkout"]
```

`experiment` はフィルター可能なフィールドでは**ありません**。ロールアップのソースがないため、`WHERE experiment IN [...]` は `filters on "experiment" are not supported.` というエラーで拒否されます。

**funnel** フィルターは複数選択をサポートします。**is one of**（`IN`）は選択したファネルのみを含め、**is not one of**（`NOT IN`）は選択したファネルを除外します。**Funnel** でグループ化して **is one of** フィルターを適用すると、チャートには選択したファネルごとに1本の線が表示され、「Other」にまとめられることはありません。

<div id="time-ranges-and-comparisons">
  ### 期間と比較
</div>

すべてのクエリには、`SINCE` で設定する期間が必要です。

| 形式 | 例 | 意味 |
| - | - | - |
| プリセット | `SINCE last_30d` | **昨日**（UTC）で終わるローリング期間。進行中の当日は意図的に除外されるため、`last_1d` は昨日のみを意味し、`this_month` は1日から昨日までとなります。 |
| カスタム期間 | `SINCE 2026-07-02 UNTIL 2026-07-05` | ISO 形式の日付（`YYYY-MM-DD`）を使用した固定期間。 |

利用可能なプリセット：`last_1d`、`last_7d`、`last_30d`、`last_90d`、`this_month`、`last_month`、`this_year`。

* **`GRAIN`** は時系列のバケットサイズを設定します：`day`、`week`、`month`。（`hour` は構文解析されますが、時間単位のデータを提供するロールアップがないため、そのようなクエリは `group_by / time_grain combination is not supported.` というエラーで拒否されます。）
* **`COMPARE`** は2つ目の期間を重ねて表示します。直前の同じ長さの期間である `previous_period` を使用します。ウェアハウスには2026年2月より前のデータがないため、`previous_year` は Compare ピッカーには表示されません。以前に保存されたクエリが引き続き解析できるよう、AQL での入力のみ可能です。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- A four-day sale vs the four days immediately before it
SELECT revenue, impressions, accept_rate
GROUP BY date
SINCE 2026-07-02 UNTIL 2026-07-05
GRAIN day
COMPARE previous_period
```

<Note>
  レポートデータは **2026年2月**から開始されるため、それより前の期間を指定すると両方の期間で空の結果が返されます。
</Note>

<div id="choosing-a-chart">
  ### チャートの選択
</div>

* **`CHART`** は結果の表示方法を設定します：`scorecard`、`line_chart`、`bar_chart`、`area_chart`、`funnel_chart`、`table`。
* **`TIMEZONE`** は日付のバケット化に使用するタイムゾーンを、引用符で囲んだ IANA 名で設定します。例：`TIMEZONE "America/New_York"`。デフォルトは UTC です（[タイムゾーン](#timezones)を参照）。

`funnel_chart` タイプには特定の要件があります。

* **プレースメントモード。** `placement` でグループ化し、指標を1つ選択します。ステージは標準のプレースメント順（デフォルトのアップセル、次にダウンセル、次に追加のアップセル）で並びます。プロットされるのは最初の指標のみで、追加の指標は脚注に記載されます。
* **指標モード。** `GROUP BY` なしで2つ以上の指標を選択します。各指標がクエリの順序でファネルのステージになります（例：`SELECT impressions, conversions` はインプレッションからコンバージョンへの離脱を表示します）。すべての指標は同じ単位である必要があります。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Placement funnel: conversion drop-off across placements
SELECT conversions
GROUP BY placement
SINCE last_30d
CHART funnel_chart
```

<Warning>
  プレースメントモードには、プレースメントで分解できる指標が必要です。`impressions`、`accept_rate`、`rpv` は分解できず、これらの指標ではファネルチャートに「These metrics can't be grouped by placement」と表示されます。
</Warning>

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Metric funnel: impressions to conversions drop-off
SELECT impressions, conversions
SINCE last_30d
CHART funnel_chart
```

<div id="sorting-and-limiting">
  ### 並べ替えと件数制限
</div>

* **`ORDER BY`** は、指標またはディメンションで結果を `ASC` または `DESC` で並べ替えます。
* **`LIMIT`** は返される行数の上限を設定します。「上位 N 件」の質問に便利です。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Top 20 products by upsell revenue this month
SELECT revenue, conversions, avg_conversion_value
GROUP BY product
SINCE this_month
ORDER BY revenue DESC
LIMIT 20
```

<div id="more-examples">
  ### その他の例
</div>

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Daily performance vs the previous period
SELECT revenue, impressions, conversions, accept_rate
GROUP BY date
SINCE last_30d
GRAIN day
COMPARE previous_period
```

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Mobile vs desktop revenue over the last 90 days
SELECT revenue
GROUP BY device
SINCE last_90d
ORDER BY revenue DESC
```

<Note>
  `impressions`、`accept_rate`、`rpv` はデバイスで分解できません。これらのロールアップはショップ × サーフェス × 日で、デバイスの列がないためです。デバイスの比較には `revenue`（またはコンバージョンを元にした他の指標）を使用してください。
</Note>

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Which surface is driving the most revenue?
SELECT revenue, impressions, accept_rate
GROUP BY surface
SINCE last_30d
ORDER BY revenue DESC
```

<div id="timezones">
  ## タイムゾーン
</div>

デフォルトでは、クエリは UTC で実行されます。タイムゾーンを上書きすると、日付でバケット化された結果を現地時間で反映できます（ツールバーでの手順は[タイムゾーンの設定](/ja/aftersell/reports_explorer#setting-a-timezone)を参照）。

<Note>
  **Impressions**、**Accept Rate**、**Revenue Per Visit** を含むクエリは、選択したタイムゾーンにかかわらず、常に UTC で日付をバケット化します。これらは UTC の日単位で報告される日次ロールアップを元にしているためです。これらのいずれかを他の指標と組み合わせたクエリでは、日付バケットを揃えるために結果セット全体が UTC にフォールバックします。
</Note>

<div id="the-timezone-clause">
  ### TIMEZONE 句
</div>

`TIMEZONE` 句を使うと、AQL で直接タイムゾーンを指定できます。この句は `CHART` と `ORDER BY` の間に記述します。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT ...
CHART ...
TIMEZONE "Asia/Tokyo"
ORDER BY ...
```

この句がある場合、そのクエリではツールバーの選択が上書きされ、保存して再読み込みしても保持されます。

<div id="available-timezones">
  ### 利用可能なタイムゾーン
</div>

ピッカー（および `TIMEZONE` 句）は、10個のタイムゾーンからなる固定のセットを受け付けます。それ以外の IANA タイムゾーンはサポート対象外として拒否されます。

| タイムゾーン | 地域の例 |
| - | - |
| UTC | 協定世界時 |
| America/New\_York | ニューヨーク（ET） |
| America/Chicago | シカゴ（CT） |
| America/Denver | デンバー（MT） |
| America/Los\_Angeles | ロサンゼルス（PT） |
| Europe/London | ロンドン（GMT/BST） |
| Europe/Paris | パリ（CET/CEST） |
| Asia/Tokyo | 東京（JST） |
| Asia/Singapore | シンガポール（SGT） |
| Australia/Sydney | シドニー（AEST/AEDT） |

<div id="account-default-and-how-timezone-affects-results">
  ### アカウントのデフォルトとタイムゾーンが結果に与える影響
</div>

分析設定で **Lock reporting timezone** が有効になっている場合、**Account default** を選択するとそのロックされたタイムゾーンが使用されます（ツールバーには解決されたタイムゾーンが表示されます。例：**Timezone: Account default (Paris (CET))**）。分析設定ページでは IANA の全リストを選択できますが、Reports が適用するのは上記の10個のタイムゾーンのみです。ロックされたタイムゾーンがそのいずれでもない場合、**Account default** は通知なしに UTC に解決されます。**Lock reporting timezone** が有効になっていない場合、**Account default** は UTC にフォールバックします。

タイムゾーンが設定されている場合、日付のバケット化には UTC ではなく現地時間が使用されます。たとえば、`2026-03-29T01:30:00Z` のイベントは、ニューヨーク（ET）では3月28日になりますが、パリ（CET）では3月29日になります。タイムゾーンが指定されていないクエリ（以前に保存されたものを含む）は、引き続き UTC で実行されます。
