[仅限PaaS]{class="badge informative" title="仅适用于云项目(Adobe管理的PaaS基础架构)和内部部署项目上的Adobe Commerce 。"}

在Commerce Intelligence中翻译SQL查询

曾想过如何将SQL查询转换为您在中使用的计算列量度报告Commerce Intelligence? 如果您是重型SQL用户,了解如何在Commerce Intelligence中翻译SQL使您能够在Data Warehouse管理器中更智能地工作并充分利用Commerce Intelligence平台。

在本主题结束时,您找到了SQL查询子句和​ 元素的 ​翻译矩阵Commerce Intelligence。

首先查看常规查询:

SELECT
a,
报告group by
SUM(b)
Aggregate function (列)
FROM c
Source
WHERE
d IS NOT NULL
Filter
AND time < X

AND time >= Y
报告time frame
GROUP BY a
报告group by

此示例涵盖了大多数翻译案例,但有一些例外。 深入研究,从aggregate函数的转换方式开始。

集合函数

查询中的聚合函数(例如,countsumaveragemaxmin)采用​ 中的 ​量度聚合​ ​列聚合Commerce Intelligence的形式。 差异因素在于是否需要连接以执行聚合。

查看以上每个内容的示例。

量度聚合 aggregate

聚合within a single table时需要指标。 例如,上述查询中的SUM(b)聚合函数很可能由对列B求和的度量表示。

查看Total Revenue中如何定义Commerce Intelligence量度的具体示例。 查看下面您尝试翻译的查询:

SELECT
SUM(order_total) as "Total Revenue"
Metric operation (列)
FROM orders
Metric source
WHERE
email NOT LIKE '%@magento.com'
量度filter
AND created_at < X

AND created_at >= Y
量度timestamp (和报表time range

通过单击​ Manage Data​量度​> 创建新量度 ​导航到量度生成器,您必须首先选择相应的source表,在本例中为orders表。 然后,将设置量度,如下所示:

度量聚合

列聚合

聚合从另一个表连接的列时需要计算列。 例如,您可能在customer表中生成了一个名为Customer LTV的列,该列加总了orders表中与该客户关联的所有订单的总值。

此聚合的查询可能如下所示:

Select
c.customer_id
聚合所有者
SUM(o.order_total) as "Customer LTV"
聚合操作(列)
FROM customers c
聚合所有者表
JOIN orders o
聚合源表
ON c.customer_id = o.customer_id
路径
WHERE o.status = 'success'
聚合筛选器

在Commerce Intelligence中设置此项需要使用Data Warehouse管理器,您可以在其中构建orderscustomers表之间的路径,然后在客户表中创建名为Customer LTV的列。

了解如何在customersorders之间建立新路径。 最终目标是在customers表中创建新的聚合列,因此请首先导航到Data Warehouse中的customers表,然后单击​ Create a Column​选择定义​> SUM

接下来,您需要选择源表。 如果orders表存在路径,则只需从下拉菜单中选择该路径即可。 但是,如果您正在构建新路径,请单击​ Create new path,此时您会看到以下屏幕:

创建新路径

在此,您需要仔细考虑您尝试连接的两个表之间的关系。 在这种情况下,可能有Many个订单与One客户关联,因此orders表列在Many侧,而customers表列在One侧。

NOTE
在Commerce Intelligence中,path等同于SQL中的Join

保存路径后,即可创建Customer LTV列! 请参阅下文:

使用SQL进行客户生命周期值分析的动画演示

现在,您已在Customer LTV表中构建了新的customers列,接下来可以使用此列创建一个指标聚合(例如,查找每个客户的平均LTV)。 您还可以使用基于group by表构建的现有量度,按报表中的计算列filtercustomers

NOTE
对于后者,无论何时生成新的计算列,您都必须将该维度添加到现有量度,然后才能作为filtergroup by使用。

请参阅使用您的Data Warehouse管理器创建计算列

Group By子句

查询中的Group By函数通常在Commerce Intelligence中表示为用于划分或过滤可视化报表的列。 例如,让我们重新访问您之前探讨的Total Revenue查询,但这次按coupon\_code对收入进行分段,以更好地了解哪些优惠券产生的收入最多。

从下面的查询开始:

SELECT coupon_code,
报告group by
SUM(order_total) as "Total Revenue"
Metric operation(列)
FROM orders
Metric source
WHERE
email NOT LIKE '%@magento.com'
量度filter
AND created_at < '2016-12-01'

AND created_at >= '2016-09-01'
量度timestamp (和报表time range
GROUP BY coupon_code
报告group by
NOTE
与之前开始的查询唯一的区别是添加了“coupon_code”作为分组依据。_

使用您之前创建的相同Total Revenue指标,您现在可以创建按优惠券代码分段的收入报表了! 查看下面的gif,其中显示了如何设置此可视化报表,查看9月至11月的数据:

按优惠券代码列出的收入

公式

有时,查询可能涉及多个聚合,以便计算单独列之间的关系。 例如,您可以通过以下两种方法之一计算查询中的平均订单值:

  • AVG('order\_total')
  • SUM('order\_total')/COUNT('order\_id')

前一种方法涉及创建对order\_total列执行平均值的新量度。 但是,如果已将量度设置为计算Total RevenueNumber of orders,则可以直接在Report Builder中创建后一种方法。

后退一步,查看Average order value的整体查询:

SELECT
SUM(order_total) as "Total Revenue"
量度operation (列)
COUNT(order_id) as "Number of orders"
量度operation (列)
SUM(order_total)/COUNT(order_id) as "Average order value"
量度operation (列)/量度操作(列)
FROM orders
指标source
WHERE
email NOT LIKE '%@magento.com'
量度filter
AND created_at < '2016-12-01'

AND created_at >= '2016-09-01'
量度时间戳(和报表时间范围)

现在,假定您已设置量度以计算Total RevenueNumber of orders。 由于存在这些量度,您只需打开Report Builder并使用Formula功能创建按需计算即可:

AOV公式

正在结束

如果您是繁重的SQL用户,通过考虑如何在Commerce Intelligence中翻译查询,可以生成计算列、量度和报表。

如需快速参考,请查看下面的矩阵。 这显示了SQL子句的对等项Commerce Intelligence元素以及它如何映射到多个元素,具体取决于它在查询中的使用方式。

Commerce Intelligence元素

SQL Clause
Metric
Filter
Report group by
Report time frame
Path
Calculated column inputs
Source table
SELECT
X
-
X
-
-
X
-
FROM
-
-
-
-
-
-
X
WHERE
-
X
-
-
-
-
-
WHERE (带有时间元素)
-
-
-
X
-
-
-
JOIN...ON
-
X
-
-
X
X
-
GROUP BY
-
-
X
-
-
-
-
recommendation-more-help
e1f8a7e8-8cc7-4c99-9697-b1daa1d66dbc