使用 ShopifyQL 查询编辑器

您可以将 ShopifyQL 与新版 Shopify 分析配合使用来探索您商店的数据库和检索数据,以便更深入地了解您的商店。

ShopifyQL(Shopify 查询语言)是 Shopify 专为商务构建的查询语言。查询语言用于从数据库请求数据和检索数据。您商店的数据存储在数据库表中,采用已定义的列和行的结构。列用于定义它们包含的信息类型,例如销售额,行指定数据类型的实际值,例如 2,450 美元销售额。

若要以有意义的格式检索数据,则必须将查询提交到数据库。查询是请求提供特定数据作为答案的问题,由关键字及其对应参数构成。具有特定参数的多个关键字组合可构成查询。构建查询后,您可以运行查询并接收报告。

术语表

ShopifyQL 术语的定义,例如维度、关键字和运算符。
术语定义
外形尺寸对数据进行细分的属性,使数据可以更清晰地排序和呈现。维度的常见示例包括时间、产品和位置。维度在 ShopifyQL 中用作参数。
关键字充当命令来引导查询的 ShopifyQL 语法。
指标数据的定量衡量。指标的常见示例包括总销售额、订单数和毛利润。
参数用于标识要在查询中包含的数据库元素或详细信息的 ShopifyQL 语法。
运算符用于构成查询的保留字词或字符。示例包括 STARTS WITH>=last_week

ShopifyQL 语法

使用 ShopifyQL 制作有效的报告查询时,您必须满足以下要求:

  • 您可以将整个查询放在一行或多个单独的行中。
  • 您必须至少包含 FROMSHOW 关键字及其相应的参数。所有其他关键字和参数都是可选的。
  • 必须按以下顺序在查询中包含所有关键字:
    1. FROM
    2. SHOW
    3. WHERE
    4. GROUP BY
    5. WITH TOTALSGROUP_TOTALSPERCENT_CHANGE
    6. TIMESERIES
    7. HAVING
    8. SINCEUNTILDURING
    9. COMPARE TO 和可选的 UNTIL
    10. ORDER BY
    11. LIMIT
    12. VISUALIZETYPE

这是一个使用正确语法编写为查询的 ShopifyQL 示例。关键字以粗体显示,使用通用占位符包含其相应参数,可选参数位于括号中:

FROM table_name1, table_name2, ...
SHOW column1 { AS alias }, column2 { AS alias }, ...
WHERE condition
GROUP BY dimension
TIMESERIES time_dimension
WITH TOTALS, GROUP_TOTALS, PERCENT_CHANGE
HAVING condition
SINCE date_offset
UNTIL date_offset
DURING named_date_range
COMPARE TO [date_offset, ...]
ORDER BY column { ASC | DESC }
LIMIT number { OFFSET number }
VISUALIZE [alias1, alias2, ...]
  TYPE { visualization_type }
  LIMIT number

ShopifyQL 关键字

ShopifyQL 查询涵盖基本查询(获得高级数据洞察)到全面查询(获得详细洞察)。每个关键字都有用于构建查询的特定功能。

ShopifyQL 关键字及其描述的列表。
关键字描述
FROM指定要从中选择数据的数据集表。
SHOW选择要从数据集表提取的列。
WHERE定义行要可供选择必须满足的条件。
GROUP BY按外形尺寸或时间维度对提取的数据进行分组。
WITH修改某些 ShopifyQL 关键字的行为。
TIMESERIES在查询中按时间维度和回填日期来区分分组。
HAVING在查询分组后筛选查询的结果。
SINCE显示自过去某个指定时间起的数据。通常与 UNTIL 搭配。
UNTIL显示截止过去某个指定时间的数据。通常与 SINCECOMPARE TO 搭配。
DURING显示过去某个指定时间范围内的数据。
COMPARE TO显示要与过去指定时间进行比较的数据。
ORDER BY指定按哪个列对数据排序。
LIMIT限制显示的数据行数。
VISUALIZE以线形或条形可视化效果显示您的数据。您可以使用 TYPE 指定所需的可视化效果。
AS用于将列重命名为您所选名称的可选关键字。

FROM 和 SHOW

创建最简单的 ShopifyQL 查询只需要两个关键字:FROMSHOW(编写时采用该顺序)。FROM,后跟一个或多个表格名称参数(用于指定要查询的表)。SHOW,后跟任何数量的列名称参数(用于指定要选择的列)。

SHOW 可用于指定报告中返回的指标和维度的顺序。

例如,您可以通过编写如下查询来返回总销售额的总计值:

FROM sales
SHOW total_sales

WHERE

通过 WHERE 关键字,您可以在整个 ShopifyQL 查询中应用维度筛选条件。可以通过比较运算符(例如大于 >)、逻辑运算符(例如 ANDNOT)以及部分字符串和数组匹配(例如 STARTS WITHCONTAINS)来修改该筛选条件。

WHERE 条件必须满足以下要求:

  • 值必须放在单引号 (') 而不是双引号 (") 内。
  • 条件不能包含任何算法。
  • 条件只能引用维度,不能引用指标。

例如,如果您想返回总销售额,但已基于账单寄送国家/地区进行筛选,则查询为:

FROM sales
SHOW total_sales, product_title, product_type, product_vendor
WHERE billing_country='Canada'

如上面的示例所示,您可以使用 WHERE 参数筛选结果集,即使 SHOW 关键字中不包含该参数也是如此。在此示例中,仅筛选来自加拿大的订单的总销售额,而 billing_country 未包含在结果设置中。

比较运算符

WHERE 关键字使用比较运算符来筛选数据。在上面的示例中,= 用于指定查询筛选特定值,但是,您还可以使用其他运算符:

ShopifyQL 比较运算符列表,例如大于或等于。
比较运算符描述
=等于
!=不等于
<小于
>大于
<=小于或等于
>=大于或等于

逻辑运算符

若要进一步筛选数据,您可以向查询中添加逻辑运算符。ShopifyQL 逻辑运算符包括:

ShopifyQL 逻辑运算符列表,例如 AND、OR 和 NOT。
逻辑运算符描述
AND筛选以包含满足 AND 分隔的所有条件的所有行。
OR筛选以包含满足 OR 分隔的条件之一的所有行。
NOT筛选以仅包含不满足条件的行,例如不包含指定值的行。

您可以通过添加逻辑运算符来对 WHERE 关键字使用多个筛选条件。

结合示例数据集查询,若要针对账单地址位于加拿大且应用了折扣的所有桃干订单进行每月净销售额分组,则查询为:

FROM sales
SHOW total_sales, product_title, product_type, product_vendor
WHERE billing_country='Canada' AND product_title='Dried Peaches' AND discounts > 0

GROUP BY

若要按维度指标进行细分,例如按地区对销售额分组,请使用 GROUP BY 关键字。GROUP BY 关键字可与任何维度参数一起使用。

例如,按账单寄送国家/地区来对总销售额进行分组的查询可编写为:

FROM sales
SHOW total_sales
GROUP BY billing_country, billing_region

下方是另一个使用时间维度来按月显示总销售额的示例查询:

FROM sales
SHOW total_sales
GROUP BY month

上方查询不会返回您没有销售额的任何月份。如果您想让查询返回一个完整、不中断的时间段,请使用 TIMESERIES 关键字。

FROM sales
SHOW total_sales
TIMESERIES month
SINCE last_year
UNTIL today

时间维度

下方是可用于对数据进行分组的时间维度:

ShopifyQL 时间维度列表,例如秒、分钟或一周中的某一天。
运算符描述
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 天内缺少的总销售额数据:

FROM sales
SHOW total_sales
GROUP BY product_title, billing_country
TIMESERIES day
SINCE -15d

TIMESERIES 和列顺序

根据 TIMESERIES 是否被指定以及是否存在于 GROUP BYSHOW 值中,列顺序可能会更改。

TIMESERIES 的示例,以及 ShopifyQL 中存在 GROUP BY 或 SHOW 时的列显示顺序。
TIMESERIESSHOWGROUP BY结果
指定不存在不存在 TIMESERIES 是第一个维度。
指定不存在存在时间维度位置由其在 GROUP BY 中的位置决定。
指定存在存在时间维度位置由其在 SHOW 中的位置决定。
未指定不存在存在时间维度位置由其在 GROUP BY 中的位置决定。不回填数据。
未指定存在存在时间维度位置由其在 SHOW 中的位置决定。不回填数据。
未指定存在不存在触发语法错误,因为 SHOW 只能引用 GROUP BY 中存在的维度。

HAVING

WHERE 类似,查询分组后,您可以使用 HAVING 关键字来筛选查询的结果。筛选条件可以有一个条件,但可以通过比较运算符(例如大于 >)和逻辑运算符(例如 ANDNOT)来修改该条件。与 WHERE 关键字不同,HAVING 可以引用别名、聚合函数和分组列。

HAVING 要求查询包含 GROUP BYTIMESERIES 子句,因为 HAVING 在查询按 GROUP BYTIMESERIES 分组后筛选查询的结果。

在此示例中,您筛选总销售额大于 1000 且小于 5000 的每种产品的总销售额:

FROM sales
SHOW total_sales
GROUP BY product_title
HAVING total_sales > 1000 AND total_sales < 5000

WITH

WITH 关键字修改某些其他 ShopifyQL 关键字的行为。可执行 3 种修改:

  • TOTALS:在指标按任何维度细分前,提供指标的顶级摘要。
  • GROUP_TOTALS:在有按聚合划分的组时,提供所有子组的总计值。
  • PERCENT_CHANGE:向 COMPARE TO 中的每个对比列添加百分比更改指标。在存在此修饰符时,为每个对比指标列添加一个新列,其中包含百分比更改。

TOTALS

在指标按任何其他维度细分前,TOTALS 修饰符提供指标的顶级摘要。当您使用 WITH TOTALS 时,查询会在结果集中以额外列的形式返回总计值,列名称中包含指标名称和“总计”。每行包含所有适用的总计值。

例如,此查询显示总销售额的总计值:

FROM sales
SHOW gross_sales, net_sales, total_sales
TIMESERIES day
WITH TOTALS

此查询可能会返回类似下方的报告:

使用 WITH TOTALS 的 ShopifyQL 销售额表格示例。
毛销售额净销售额总销售额毛销售额总计净销售额总计总销售额总计
2024-01-0114761524
2024-01-0225861524
2024-01-0336961524

GROUP_TOTALS

在有按聚合划分的组时,GROUP_TOTALS 修饰符提供所有子组的总计值。当您使用 WITH GROUP_TOTALS 时,查询会在结果集中以额外列的形式返回总计值,列名称中包含指标名称、计算总计值的维度和“总计”。每行包含所有适用的总计值。

例如,此查询按账单寄送国家/地区显示总销售额的总计值:

FROM sales
SHOW customer_id, total_sales
GROUP BY customer_id, billing_country
WITH TOTALS, GROUP_TOTALS

此查询可能会返回类似下方的报告:

使用 GROUP_TOTALS 的 ShopifyQL 销售额表格示例。
国家/地区客户 ID总销售额总销售额国家/地区总计总销售额总计
US1101
USnull-111
加拿大1111

PERCENT_CHANGE

使用 COMPARE TO 时,PERCENT_CHANGE 修饰符会向每个对比列添加百分比更改。当您使用 WITH PERCENT_CHANGE 时,查询会在结果集中以额外列的形式返回每个对比指标的百分比更改,列名称中包含指标名称和“百分比更改”。

用于计算百分比更改的公式为: (base_column - comparison_column) * 100 / abs(comparison_column)

例如,此查询使用 SINCECOMPARE TO 将上一月中每天的净销售额与上一年同月的净销售额进行比较,且具有用于百分比更改的列:

FROM sales
SHOW net_sales
TIMESERIES day
WITH PERCENT_CHANGE
SINCE -1m
UNTIL -0m
COMPARE TO previous_year

生成报告中的列包括日期、净销售额、对比日期、对比净销售额和百分比更改净销售额。

SINCE 和 UNTIL

若要按日期或某一时间段筛选查询,则可以使用 SINCEUNTIL 关键字及其关联参数。这些关键字是唯一的,因为它们仅筛选时间段。如果您使用 SINCE 并且未定义 UNTIL 值,则您的时间范围结束时间默认为 today

例如,下方的查询用于查找加拿大过去 12 个月内(截止昨天)的净销售额:

FROM orders
SHOW net_sales
WHERE billing_country = 'Canada'
GROUP BY month ALL
SINCE -12m
UNTIL yesterday

偏移运算符

您可以按特定日期或按日期和时间偏移量进行筛选。ShopifyQL 偏移运算符如下所示:

ShopifyQL 偏移运算符列表,例如按秒、分钟或特定日期进行偏移。
移位运算符描述
-{#}s自查询运行的日期和时间起经过的秒数。
-{#}min自查询运行的日期和时间起经过的分钟数。
-{#}h自查询运行的日期和时间起经过的小时数。
-{#}d自查询运行的日期和时间起经过的天数。
-{#}w自查询运行的日期和时间起经过的星期数。
-{#}m自查询运行的日期和时间起经过的月数。
-{#}q自查询运行的日期和时间起经过的季度数。
-{#}y自查询运行的日期和时间起经过的年数。
yyyy-MM-dd具体日期。
yyyy-MM-ddThh:mm:ss特定日期和时间。

日期函数

您可以在 SINCEUNTIL 语句中将以下函数与任意日期范围运算符(具体日期除外)组合使用。与 SINCE 组合使用时,“startOf...”函数会截断至相关时间单位(分钟、小时、日、星期、月、季度和年)的开始位置,而与 UNTIL 组合使用时,“endOf...”函数会截断至相关时间单位的结束位置。

日期函数单位与运算符单位必须匹配才能返回有效结果。例如,startOfMonth(-1m) 正确,而 startOfMonth(-1d) 不正确。

ShopifyQL 日期函数列表,例如当日结束或季度开始。
日期函数描述
now运行查询的日期和时间。
startOfMinute(-{#}min)将日期范围运算符截断至目标分钟开始位置。
endOfMinute(-{#}min)将日期范围运算符截断至目标分钟结束位置。
startOfHour(-{#}h)将日期范围运算符截断至目标小时开始位置。
endOfHour(-{#}h)将日期范围运算符截断至目标小时结束位置。
startOfDay(-{#}d)将日期范围运算符截断至目标日期开始位置。
endOfDay(-{#}d)将日期范围运算符截断至目标日期结束位置。
startOfWeek(-{#}w)将日期范围运算符截断至目标星期开始位置。
endOfWeek(-{#}w)将日期范围运算符截断至目标星期结束位置。
startOfMonth(-{#}m)将日期范围运算符截断至目标月份开始位置。
endOfMonth(-{#}m)将日期范围运算符截断至目标月份结束位置。
startOfQuarter(-{#}q)将日期范围运算符截断至目标季度开始位置。
endOfQuarter(-{#}q)将日期范围运算符截断至目标季度结束位置。
startOfYear(-{#}y)将日期范围运算符截断至目标年份开始位置。
endOfYear(-{#}y)将日期范围运算符截断至目标年份结束位置。

例如,如果今天是 2022 年 11 月 8 日,则您可以使用以下查询返回 2020 年 1 月 1 日至 2022 年 10 月 31 日的毛销售额:

FROM sales
SHOW gross_sales
SINCE startOfYear(-2y)
UNTIL endOfMonth(-1m)

DURING

DURING 关键字可简化日期范围的日期筛选,并且可取代 SINCEUNTIL。您可以使用 DURING 关键字筛选已知时间段(例如日历年或特定月份)的查询结果,或筛选每年日期不同的日期范围(例如黑色星期五/络星期一)的查询结果。例如:

FROM sales
SHOW total_sales
GROUP BY day
DURING bfcm2021

指定日期范围运算符

DURING 接受以下任意指定日期范围运算符:

ShopifyQL 指定日期范围运算符的列表,例如今天、昨天或本周。
指定日期范围运算符描述
today运行查询的日期。
yesterday运行查询之前的 24 小时周期。
this_week当前日历周。
this_month当前日历月。
this_quarter当前日历季度。
this_year当前日历年。
last_week上一个日历周。
last_month上一个日历月。
last_quarter上一个日历季度。
last_year上一个日历年。
bfcmYYYY指定年份的黑色星期五/网络星期一范围。例如,bfcm2022 返回 2022 年 11 月 25-28 日的结果。

COMPARE TO

通过 COMPARE TO 关键字,您可以将 SINCEUNTILDURING 中日期范围的数据与 COMPARE TO 中日期范围的数据进行比较。

您可以将 COMPARE TO 关键字与以下类型的参数一起使用:

  • 绝对日期,例如 2023-01-01:包含指定时段的指标以及绝对日期的相同时段的对比指标。
  • 指定日期,例如 last_week:包含指定时段的指标以及指定日期的相同时段的对比指标。

    • COMPARE TO 使用的运算符的时间长度不一定与 DURING 使用的运算符的时间长度相同。如果未提供 UNTIL 值,它将计算时间范围以等于 DURING 中指定的值。例如,DURING this_week COMPARE TO last_month 将本周的数据与自上个月月初起的一周时间段的数据进行比较。
  • 偏移日期,例如 -3q:包含指定时段的指标以及相对日期的相同时段的对比指标。

  • 多个日期对比,例如 -1y, -2y:将特定日期范围内的数据与其他多个日期范围的数据进行对比。当您想要跟踪多个时间段的变化情况时,这非常有用。

  • 如果您在使用 COMPARE TO 的查询中使用日期维度,则必须对其使用 TIMESERIES,而不是 GROUP BY

下方的示例将上月的净销售额与上一年同月的净销售额进行对比:

FROM sales
SHOW net_sales, product_title
GROUP BY product_title
TIMESERIES day
SINCE -1m
UNTIL -0m
COMPARE TO previous_year

相对日期范围运算符

相对运算符返回与基准日期范围相同的时间长度,并向过去偏移指定时段。除了指定日期范围运算符外,COMPARE TO 接受以下相对运算符:

ShopifyQL 相对日期范围运算符的列表,例如上一时段或上一年。
相对日期范围运算符描述
previous_period基准日期范围前的一个时段。
previous_year基准日期范围前的一年。
previous_quarter基准日期范围前的一个季度。
previous_month基准日期范围前的一个月。
previous_week基准日期范围前的一个星期。
previous_day基准日期范围前的一天。
previous_hour基准日期范围前的一个小时。
previous_minute基准日期范围前的一分钟。
previous_second基准日期范围前的一秒。

ORDER BY

您可以使用 ORDER BY 关键字及其参数指定如何对查询返回的数据进行排序:ASC(升序)和 DESC(降序)。

您可以在 ORDER BY 关键字中指定要在查询中包含的任何指标或维度,包括多个字段。

例如,此查询返回过去一年所有产品和多属性的净销售额。结果首先按产品标题以字母顺序排序,然后按产品类型以反向字母顺序排序:

FROM sales
SHOW net_sales
GROUP BY product_title, product_type
SINCE -1y
UNTIL today
ORDER BY product_title, product_type DESC

您编写指标或维度的顺序非常重要。如果您为 ORDER BY 指定多个值,则该排序方式将应用于指定订单中的每个指标或维度。

TIMESERIES 和列顺序

根据查询是否包含 TIMESERIESORDER BY,列顺序可能会更改。

使用 ShopifyQL 且存在 ORDER BY 时,TIMESERIES 和列顺序的示例。
TIMESERIESORDER BY结果
存在不存在结果按 TIMESERIES 维度排序。
存在存在结果按 TIMESERIES 时间维度排序,然后按 ORDER BY 维度排序。
不存在存在结果按 ORDER BY 维度排序。
不存在不存在结果按第一个 SHOW 列排序。

LIMIT

通过 LIMIT 关键字,您可以指定查询返回的最大行数。如果您只想了解每列中数据的显示方式,或者想获得大型报告(查询可能需要较长时间才能返回值),这非常有用。您可以将 LIMITORDER BY 组合使用来创建排名最前和排名最后的项列表。

如果您未指定 LIMIT 值,则查询默认为 1000 行。

您还可以使用可选 { OFFSET # } 参数来跳过特定数量的行,然后再开始返回行数据。生成的短语的格式将类似于:LIMIT 15 { OFFSET 5 }

下方的示例使用 LIMITORDER BY 来创建过去 3 个月内销售额前 10 的产品列表:

FROM sales
SHOW gross_sales as total_gross_sales
GROUP BY product_title
SINCE -3m
UNTIL today
ORDER BY total_gross_sales DESC
LIMIT 10

VISUALIZE 和 TYPE

通过 VISUALIZE 关键字,您可以编写以图形可视化效果显示数据的 ShopifyQL 查询。支持的可视化效果包括以下值:

  • bar
  • stacked_bar
  • stacked_horizontal_bar
  • line
  • simple_bar
  • stacked_area
  • single_metric
  • donut
  • list
  • list_with_dimension_values
  • horizontal_bar
  • cohort
  • single_stacked_bar
  • funnel
  • grouped_bar
  • horizontal_grouped_bar
  • table
  • grid

TYPE 关键字是可选的,并且必须与一种类型的可视化效果配合使用。如果您的查询中不包含 TYPE,则 ShopifyQL 会自动确定适合该查询的最佳可视化效果。如果您的查询无法以书面形式呈现,ShopifyQL 将返回表格数据。

VISUALIZE 还接受可选的 LIMIT 关键字,其中,参数是要呈现的数据点的有限数量。

例如,您可以使用趋势线来可视化呈现过去一年按月显示的销售额趋势。下方查询将返回一个时间序列图表,显示过去一年按月显示的总销售额。销售额用一条线来描绘,x 轴标记为“月”,y 轴标记为“总销售额”:

FROM sales
SHOW gross_sales
TIMESERIES month
SINCE -1y
UNTIL today
VISUALIZE gross_sales TYPE line

AS

关键字 AS 是一个可选关键字,可用于重命名列或聚合函数的返回值(或为它们提供别名)。

AS 仅接受一个参数。如果别名名称中有空格,则您必须在别名周围使用双引号 (")。

FROM sales
SHOW total_sales AS "My Total Sales"

其他 ShopifyQL 函数和运算符

ShopifyQL 包括以下其他运算符和函数:

数学运算符

ShopifyQL 允许对数据中的指标进行算数运算。可以使用以下数学运算符:

ShopifyQL 数学运算符列表,包括加号和减号。
数学运算符描述
+将两个数值相加。
-将两个数值相减。
*将两个数值相乘。
/将两个数值相除。

例如,下方的查询可计算过去一年每个地区的订单价值。将数学运算符应用于指标时,您可以使用 AS 关键字向新指标分配新名称。

FROM sales
SHOW (net_sales + returns) AS order_value, orders, (net_sales + returns)/orders AS sales_per_order
GROUP BY billing_region
SINCE -1y
UNTIL today

函数

通过 ShopifyQL 函数,您可以对列进行聚合或组合列以创建新值,与 Microsoft Excel 中的数据透视表类似。当前版本的 ShopifyQL 中提供以下函数运算符:

受支持的 ShopifyQL 函数的列表,例如用于删除和舍入。
函数运算符描述
TRIM(column_name)从字符串中删除前导和尾随空格。
ROUND(column_name, decimal_places)Rounds a numerical value to the nearest integer or specified decimal places. In this function, decimal_places is an integer value:
  • If decimal_places > 0, then the function rounds the value to the right of the decimal point.
  • If decimal_places < 0, then the function rounds the value to the left of the decimal point.
  • If decimal_places = 0, then the function rounds the value to integer. In this case, the argument can be omitted entirely.

For example, this query uses the rounding function on the gross_sales column, but omits the decimal_places argument to round the value to the integer:

FROM sales
SHOW average_order_value, round(gross_sales)
GROUP BY billing_region
SINCE 2021-01-01
UNTIL 2021-12-31

Implicit joins

A join allows you to view metrics from different domains together, side by side. Joins are done implicitly and intelligently in ShopifyQL.

ShopifyQL has the following join capabilities:

  • ShopifyQL allows dimension field joins when there is a single FROM table in the query.
  • Automatic left join on dimension fields.
  • ShopifyQL allows multi-fact joins (when there are multiple FROM tables in the queries).
  • Automatic full join on multi-fact joins, which support any number of tables or schemas and grouped by dimensions.
  • Metrics in multi-fact joins can use functions and math.

Shopify QL has the following join restrictions:

  • Join field must have the same name in all joined schemas.
  • Join field must be in GROUP BY.
  • Join field can't use functions or math.
  • FROM is necessary for multi-fact joins to work.
  • In a multi-fact join, every GROUP BY must be in all schemas and is considered a field on which to be joined.

For example, this query uses a multi-fact join:

FROM sales, sessions
SHOW day, total_sales, sessions
GROUP BY day
SINCE 2023-10-03
ORDER BY day

Partial string and array matching

You can use the following operators for partial string and array matching:

List of Partial string and array matching operators in ShopifyQL.
OperatorDescription
STARTS WITHReturn all rows where a column starts with a prefix.
ENDS WITHReturn all rows where a column ends with a suffix.
CONTAINSReturn all rows where a column contains a part of a string, or an element in an array.

Some examples of partial string matching using operators include the following queries:

FROM sales
SHOW product_title
WHERE product_title STARTS WITH 'Summer'
GROUP BY product_title
FROM sales
SHOW product_title
WHERE product_title ENDS WITH 'kit'
GROUP BY product_title
FROM sales
SHOW product_title
WHERE product_title CONTAINS 'Beef'
GROUP BY product_title

The CONTAINS operator can be used to match elements within arrays, including integers, strings, and decimals. This matching isn't case-sensitive. Some examples of array matching using CONTAINS include the following queries:

FROM sales
SHOW orders
WHERE products_bought_together_ids CONTAINS 101
FROM customers
SHOW total_number_of_orders
WHERE customer_cities CONTAINS 'seattle'
FROM sales
SHOW orders
WHERE variants_bought_together_variant_prices CONTAINS 10.2

Comments

You can use comments to explain sections of ShopifyQL statements, or to prevent the execution of a ShopifyQL statement. Any text within a comment will be ignored during execution time.

Single line comments start with -- and end at the end of the line.

Multi-line comments start with /* and end with */.

FROM sales
SHOW average_order_value, gross_sales
-- the line below has been commented out and won't run
-- GROUP BY billing_region
WHERE billing_country = 'United States'
/*
this line and the two lines below it have been commented out and won't run
SINCE 2021-01-01
UNTIL 2021-12-31
*/
没有找到您需要的答案?我们将为您提供帮助。