使用 ShopifyQL 查询编辑器
您可以将 ShopifyQL 与新版 Shopify 分析配合使用来探索您商店的数据库和检索数据,以便更深入地了解您的商店。
ShopifyQL(Shopify 查询语言)是 Shopify 专为商务构建的查询语言。查询语言用于从数据库请求数据和检索数据。您商店的数据存储在数据库表中,采用已定义的列和行的结构。列用于定义它们包含的信息类型,例如销售额,行指定数据类型的实际值,例如 2,450 美元销售额。
若要以有意义的格式检索数据,则必须将查询提交到数据库。查询是请求提供特定数据作为答案的问题,由关键字及其对应参数构成。具有特定参数的多个关键字组合可构成查询。构建查询后,您可以运行查询并接收报告。
术语表
术语 | 定义 |
---|---|
外形尺寸 | 对数据进行细分的属性,使数据可以更清晰地排序和呈现。维度的常见示例包括时间、产品和位置。维度在 ShopifyQL 中用作参数。 |
关键字 | 充当命令来引导查询的 ShopifyQL 语法。 |
指标 | 数据的定量衡量。指标的常见示例包括总销售额、订单数和毛利润。 |
参数 | 用于标识要在查询中包含的数据库元素或详细信息的 ShopifyQL 语法。 |
运算符 | 用于构成查询的保留字词或字符。示例包括 STARTS WITH 、>= 或 last_week 。 |
ShopifyQL 语法
使用 ShopifyQL 制作有效的报告查询时,您必须满足以下要求:
- 您可以将整个查询放在一行或多个单独的行中。
- 您必须至少包含
FROM
和SHOW
关键字及其相应的参数。所有其他关键字和参数都是可选的。 - 必须按以下顺序在查询中包含所有关键字:
-
FROM
-
SHOW
-
WHERE
-
GROUP BY
-
WITH
TOTALS
、GROUP_TOTALS
、PERCENT_CHANGE
-
TIMESERIES
-
HAVING
-
SINCE
和UNTIL
或DURING
-
COMPARE TO
和可选的UNTIL
-
ORDER BY
-
LIMIT
-
VISUALIZE
和TYPE
-
这是一个使用正确语法编写为查询的 ShopifyQL 示例。关键字以粗体显示,使用通用占位符包含其相应参数,可选参数位于括号中:
ShopifyQL 关键字
ShopifyQL 查询涵盖基本查询(获得高级数据洞察)到全面查询(获得详细洞察)。每个关键字都有用于构建查询的特定功能。
关键字 | 描述 |
---|---|
FROM | 指定要从中选择数据的数据集表。 |
SHOW | 选择要从数据集表提取的列。 |
WHERE | 定义行要可供选择必须 满足的条件。 |
GROUP BY | 按外形尺寸或时间维度对提取的数据进行分组。 |
WITH | 修改某些 ShopifyQL 关键字的行为。 |
TIMESERIES | 在查询中按时间维度和回填日期来区分分组。 |
HAVING | 在查询分组后筛选查询的结果。 |
SINCE | 显示自过去某个指定时间起的数据。通常与 UNTIL 搭配。 |
UNTIL | 显示截止过去某个指定时间的数据 。通常与 SINCE 或 COMPARE TO 搭配。 |
DURING | 显示过去某个指定时间范围内的数据。 |
COMPARE TO | 显示要与过去指定时间进行比较的数据。 |
ORDER BY | 指定按哪个列对数据排序。 |
LIMIT | 限制显示的数据行数。 |
VISUALIZE | 以线形或条形可视化效果显示您的数据。您可以使用 TYPE 指定所需的可视化效果。 |
AS | 用于将列重命名为您所选名称的可选关键字。 |
FROM 和 SHOW
创建最简单的 ShopifyQL 查询只需要两个关键字:FROM
和 SHOW
(编写时采用该顺序)。FROM
,后跟一个或多个表格名称参数(用于指定要查询的表)。SHOW
,后跟任何数量的列名称参数(用于指定要选择的列)。
SHOW
可用于指定报告中返回的指标和维度的顺序。
例如,您可以通过编写如下查询来返回总销售额的总计值:
WHERE
通过 WHERE
关键字,您可以在整个 ShopifyQL 查询中应用维度筛选条件。可以通过比较运算符(例如大于 >
)、逻辑运算符(例如 AND
或 NOT
)以及部分字符串和数组匹配(例如 STARTS WITH
和 CONTAINS
)来修改该筛选条件。
WHERE
条件必须满足以下要求:
- 值必须放在单引号 (') 而不是 双引号 (") 内。
- 条件不能包含任何算法。
- 条件只能引用维度,不能引用指标。
例如,如果您想返回总销售额,但已基于账单寄送国家/地区进行筛选,则查询为:
如上面的示例所示,您可以使用 WHERE
参数筛选结果集,即使 SHOW
关键字中不包含该参数也是如此。在此示例中,仅筛选来自加拿大的订单的总销售额,而 billing_country
未包含在结果设置中。
比较运算符
WHERE
关键字使用比较运算符来筛选数据。在上面的示例中,=
用于指定查询筛选特定值,但是,您还可以使用其他运算符:
比较运算符 | 描述 |
---|---|
= | 等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
逻辑运算符
若要进一步筛选数据,您可以向查询中添加逻辑运算符。ShopifyQL 逻辑运算符包括:
逻辑运算符 | 描述 |
---|---|
AND | 筛选以包含满足 AND 分隔的所有条件的所有行。 |
OR | 筛选以包含满足 OR 分隔的条件之一的所有行。 |
NOT | 筛选以仅包含不满足条件的行,例如不包含指定值的行。 |
您可以通过添加逻辑运算符来对 WHERE
关键字使用多个筛选条件。
结合示例数据集查询,若要针对账单地址位于加拿大且应用了折扣的所有桃干订单进行每月净销售额分组,则查询为:
GROUP BY
若要按维度对指标进行细分,例如按地区对销售额分组,请使用 GROUP BY
关键字。GROUP BY
关键字可与任何维度参数一起使用。
例如,按账单寄送国家/地区来对总销售额进行分组的查询可编写为:
下方是另一个使用时间维度来按月显示总销售额的示例查询:
上方查询不会返回您没有销售额的任何月份。如果您想让查询返回一个完整、不中断的时间段,请使用 TIMESERIES
关键字。
时间维度
下方是可用于对数据进行分组的时间维度:
运算符 | 描述 |
---|---|
second | 按某个小时的秒分组。 |
minute | 按某个小时的分钟分组。 |
hour | 按日历日中的某一小时分组。 |
day | 按日历日分组。 |
week | 按日历周分组。 |
month | 按日历月分组。 |
quarter | 按日历季度分组。 |
year | 按日历年分组。 |
hour_of_day | 按 24 小时(1、2、...、24)分组。 |
day_of_week | 按一周中的某一天(周一、周二、周三、…、周日)分组。 |
week_of_year | 按一年中的某一周(1、2、...、52)分组。 |
month_of_year | 按一年中的某一月(1、2、...、12)分组。 |
TIMESERIES
您可在以下场景使用 TIMESERIES
关键字:按时间维度区分分组,按时间段查看指标,以及在查询中回填日期以生成不存在数据的时间序列图表。
在此示例中,您将回填过去 15 天内缺少的总销售额数据:
TIMESERIES 和列顺序
根据 TIMESERIES
是否被指定以及是否存在于 GROUP BY
或 SHOW
值中,列顺序可能会更改。
TIMESERIES | SHOW | GROUP BY | 结果 |
---|---|---|---|
指定 | 不存在 | 不存在 |
TIMESERIES 是第一个维度。 |
指定 | 不存在 | 存在 | 时间维度位置由其在 GROUP BY 中的位置决定。 |
指定 | 存在 | 存在 | 时间维度位置由其在 SHOW 中的位置决定。 |
未指定 | 不存在 | 存在 | 时间维度位置由其在 GROUP BY 中的位置决定。不回填数据。 |
未指定 | 存在 | 存在 | 时间维度位置由其在 SHOW 中的位置决定。不回填数据。 |
未指定 | 存在 | 不存在 | 触发语法错误,因为 SHOW 只能引用 GROUP BY 中存在的维度。 |
HAVING
与 WHERE
类似,查询分组后,您可以使用 HAVING
关键字来筛选查询的结果。筛选条件可以有一个条件,但可以通过比较运算符(例如大于 >
)和逻辑运算符(例如 AND
或 NOT
)来修改该条件。与 WHERE
关键字不同,HAVING
可以引用别名、聚合函数和分组列。
HAVING
要求查询包含 GROUP BY
或 TIMESERIES
子句,因为 HAVING
在查询按 GROUP BY
或 TIMESERIES
分组后筛选查询的结果。
在此示例中,您筛选总销售额大于 1000 且小于 5000 的每种产品的总销售额:
WITH
WITH
关键字修改某些其他 ShopifyQL 关键字的行为。可执行 3 种修改:
-
TOTALS
:在指标按任何维度细分前,提供指标的顶级摘要。 -
GROUP_TOTALS
:在有按聚合划分的组时,提供所有子组的总计值。 -
PERCENT_CHANGE
:向COMPARE TO
中的每个对比列添加百分比更改指标。在存在此修饰符时,为每个对比指标列添加一个新列,其中包含百分比更改。
TOTALS
在指标按任何其他维度细分前,TOTALS
修饰符提供指标的顶级摘要。当您使用 WITH TOTALS
时,查询会在结果集中以额外列的形式返回总计值,列名称中包含指标名称和“总计”。每行包含所有适用的总计值。
例如,此查询显示总销售额的总计值:
此查询可能会返回类似下方的报告:
天 | 毛销售额 | 净销售额 | 总销售额 |
---|