> ## 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.

# Explorer

> 使用 Aftersell 中的 Explorer 构建自定义分析查询和报告。

Explorer 让你可以使用灵活的查询构建器（AftersellQL）构建自定义分析查询。你可以选择指标、按维度对结果分组、应用筛选器，并以图表或表格形式可视化数据。已保存的查询可以作为小组件添加到报告中，用于持续监控。

<Tip>
  你可以通过菜单以可视化方式构建查询——无需任何语法。如果你更喜欢直接输入查询，Explorer 也会展示底层的 AftersellQL 文本。语法参考见下文[编写 AQL 查询](#writing-aql-queries)。
</Tip>

***

<div id="available-metrics">
  ## 可用指标
</div>

以下是可以在 Explorer 中选择的指标，分组方式与指标选择器中的分组一致。

<div id="revenue--profit">
  ### 收入与利润
</div>

| 指标                           | 描述                                                                                             |
| ---------------------------- | ---------------------------------------------------------------------------------------------- |
| **Revenue**                  | 以商店本地货币计的追加销售收入。                                                                               |
| **Revenue (USD)**            | 归一化为美元的追加销售收入，用于跨货币比较。                                                                         |
| **Revenue Per Visit**        | 每次曝光会话的追加销售收入。无法按商品、位置、漏斗或设备细分。                                                                |
| **Avg. Conversion Value**    | 每个已接受报价的收入。也称为平均追加销售价值。                                                                        |
| **Upsell Revenue Per Order** | 追加销售收入（美元）除以总订单数。仅限商店级别。                                                                       |
| **Product Profit**           | 追加销售商品的收入减去销货成本（COGS）。依赖商家配置的 COGS，请视为估算值：未跟踪成本的商品会将收入作为利润上报，且成本覆盖率因商店而异。仅限商品粒度；无法按漏斗、位置或设备细分。 |

<div id="conversions">
  ### 转化
</div>

| 指标               | 描述                                                                                      |
| ---------------- | --------------------------------------------------------------------------------------- |
| **Conversions**  | 报价被接受事件的数量。一次接受报价即为一次转化，因此接受了两个报价的会话会计为两次。                                              |
| **Accept Rate**  | 基于会话：看到报价并至少接受了一个报价的会话所占比例。它独立于 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>

维度让你可以按特定属性细分指标。并非所有维度都与每个指标兼容。

<Note>
  某些维度和指标的组合是不兼容的。例如，**Decline rate** 和 **Show rate** 无法按 **Currency** 细分。Explorer 会自动阻止不兼容的组合。
</Note>

<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**       | 决策结果（例如 eligible、out of stock）。             |
| **Reason code**   | 决策结果的原因。                                    |
| **Scope**         | 决策范围（Flow、Experience、Placement 或 ItemSlot）。 |
| **Response type** | 报价响应（Accepted、Declined 或 Timeout）。          |

***

<div id="writing-aql-queries">
  ## 编写 AQL 查询
</div>

你在 Explorer 中构建的每个查询都是一条 \*\*AftersellQL（AQL）\*\*语句。大多数情况下你会以可视化方式构建查询——从菜单中选择指标、维度、筛选器和日期范围——而无需手写 AQL。

对于高级用户，Explorer 还会以可编辑文本的形式展示底层查询。本节是该文本形式的参考：各子句的含义、可接受的值，以及一些可直接使用的示例。

<div id="how-an-aql-statement-reads">
  ### AQL 语句的结构
</div>

一条 AQL 语句是由若干子句组成的一个问题。只有 `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="picking-what-to-measure-and-how-to-slice-it">
  ### 选择测量内容与切分方式
</div>

* **`SELECT`** 列出要测量的指标，以逗号分隔——例如 `SELECT revenue, impressions, accept_rate`。
* **`GROUP BY`** 按一个或多个维度细分这些指标，例如 `date`、`device`、`surface` 或 `funnel`。不使用 `GROUP BY` 时，你得到的是整个时间段的单一总计。

有关可用指标和维度的完整列表——以及哪些组合是允许的——参见上文的[可用指标](#available-metrics)和[可用维度](#available-dimensions)。Explorer 会自动阻止不兼容的指标和维度组合。

<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.`（出于同样的原因，它列在上文的**不可用维度**中。）

<div id="filtering-by-multiple-funnels">
  #### 按多个漏斗筛选
</div>

**funnel** 筛选器支持多选运算符，让你可以将查询限定于漏斗的一个子集：

* **is one of**——仅包含所选漏斗（`IN`）。
* **is not one of**——排除所选漏斗（`NOT IN`）。

当你选择 **is one of** 或 **is not one of** 时，值输入框会变成一个可滚动的复选框列表，显示你所有的漏斗名称。按需选择任意数量的漏斗。

当你按 **Funnel** 分组结果并应用 **is one of** 筛选器时，折线图会为每个所选漏斗显示一条线——即使你选择的数量超过默认序列数。任何所选漏斗都不会被折叠进"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`** 叠加第二个时间段，让你一眼看出变化。使用 `previous_period`——紧邻之前的等长窗口。`previous_year` 被有意从 Compare 选择器中隐藏，因为数据仓库中没有 2026 年 2 月之前的数据；它仅保留在 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-and-timezone">
  ### 选择图表和时区
</div>

这些可选子句通常由 Explorer 的可视化控件替你设置，但你也可以直接编写：

* **`CHART`** 设置结果的显示方式：`scorecard`、`line_chart`、`bar_chart`、`area_chart`、`funnel_chart` 或 `table`。
* **`TIMEZONE`** 设置用于日期分桶的时区，值为带引号的 IANA 名称——例如 `TIMEZONE "America/New_York"`。默认为 UTC。

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT revenue
GROUP BY date
SINCE last_30d
GRAIN day
CHART line_chart
TIMEZONE "America/New_York"
```

`funnel_chart` 类型有特定要求：

* **位置模式**——按 `placement` 分组并选择一个指标。各阶段按规范的位置顺序排列（追加销售默认 → 降级销售 → 额外追加销售）。仅绘制第一个指标；其他所选指标会在脚注中标注。
* **指标模式**——选择两个或更多指标且不使用 `GROUP BY`。每个指标按查询顺序成为漏斗的一个阶段（例如，`SELECT impressions, conversions` 显示 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` 无法按设备细分——它们的汇总是 shop × surface × day，没有设备列。设备比较请使用 `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
```

当你构建出满意的查询后，保存它并将其作为小组件添加到报告中，使其持续更新——参见[管理小组件](/zh/aftersell/reports_widgets)。要移除不再需要的小组件，请在 Explorer 中加载它并点击标题栏中的 **Delete**。删除小组件会将其从它出现的所有报告中移除。**Delete** 按钮仅对你拥有的小组件显示；全局模板小组件为只读。

***

<div id="exporting-results">
  ## 导出结果
</div>

Explorer 在屏幕上以计分卡、图表或表格形式显示查询结果——它不会直接从查询视图下载文件。

要将结果导出为文件，请保存查询并将其作为[小组件](/zh/aftersell/reports_widgets)添加到报告中。每个小组件都有自己的 **Export to CSV** 按钮，可将小组件的数据下载为 `.csv` 文件。有关标准 Analytics 页面导出（Excel 和 CSV），参见[导出你的数据](/zh/aftersell/analytics_in_aftersell#exporting-your-data)。

***

<div id="timezone-support">
  ## 时区支持
</div>

默认情况下，查询以 UTC 运行。你可以直接在 Explorer 工具栏中为任何查询覆盖时区，使按日期分桶的结果（按日、周、月细分）反映你的本地时间而非 UTC。

<Note>
  包含 **Impressions**、**Accept Rate** 或 **Revenue Per Visit** 的查询始终以 UTC 分桶日期，无论你选择哪个时区。这些指标来源于仅按 UTC 天数上报的每日汇总。如果一个查询将其中一个指标与其他指标混合，整个结果集会回退到 UTC，以保持日期分桶对齐。
</Note>

<div id="setting-a-timezone-for-a-query">
  ### 为查询设置时区
</div>

1. 在 Aftersell 后台打开 Explorer。
2. 在工具栏中，点击 **Timezone** 选择器（在 **Compare** 旁边）。
3. 从列表中选择一个可用时区，或选择 **Account default** 使用分析设置中配置的时区。
4. 运行查询。结果将使用所选时区进行分桶。

所选时区会随查询一起保存。当你保存并重新加载查询时，时区会自动恢复。

<div id="account-default-timezone">
  ### 账户默认时区
</div>

如果你在分析设置中启用了 **Lock reporting timezone**，在工具栏中选择 **Account default** 会将该锁定时区用于你的查询。工具栏标签会显示解析后的时区，例如 **Timezone: Account default (Paris (CET))**。

分析设置页面接受完整的 IANA 时区列表，但 Reports 仅支持上述十个时区。如果你锁定的时区不在其中，**Account default** 会静默解析为 UTC——因此如果希望 Reports 遵循锁定时区，请从此列表中选择。

如果未启用 **Lock reporting timezone**，**Account default** 会回退为 UTC。

<div id="specifying-a-timezone-in-aql">
  ### 在 AQL 中指定时区
</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>

时区选择器包含以下选项：

| 时区                   | 示例位置          |
| -------------------- | ------------- |
| 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） |

这是一个仅包含十个时区的封闭集合。`TIMEZONE` 子句中的任何其他 IANA 时区都会被拒绝为不支持。

<div id="how-timezone-affects-query-results">
  ### 时区如何影响查询结果
</div>

设置时区后，查询中的日期分桶使用本地时间而非 UTC。例如，发生在 `2026-03-29T01:30:00Z`（UTC）的事件在纽约时间（ET）中落在 3 月 28 日，但在巴黎时间（CET）中落在 3 月 29 日。设置正确的时区可确保你的按日、周、月细分与你的业务报告预期一致。

不包含时区的查询——包括之前保存的查询——继续以 UTC 运行，因此现有结果不受影响。

***

<div id="need-help">
  ## 需要帮助？
</div>

如果你对 Explorer 有疑问或想开通访问权限，请通过应用内聊天联系 Aftersell 支持团队。
