[仅限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。
首先查看常规查询:
SELECTa,group bySUM(b)Aggregate function (列)FROM cSource表WHEREd IS NOT NULLFilterAND time < XAND time >= Ytime frameGROUP BY agroup by此示例涵盖了大多数翻译案例,但有一些例外。 深入研究,从aggregate函数的转换方式开始。
集合函数
查询中的聚合函数(例如,count、sum、average、max、min)采用 中的 量度聚合 或 列聚合Commerce Intelligence的形式。 差异因素在于是否需要连接以执行聚合。
查看以上每个内容的示例。
量度聚合 aggregate
聚合within a single table时需要指标。 例如,上述查询中的SUM(b)聚合函数很可能由对列B求和的度量表示。
查看Total Revenue中如何定义Commerce Intelligence量度的具体示例。 查看下面您尝试翻译的查询:
SELECTSUM(order_total) as "Total Revenue"Metric operation (列)FROM ordersMetric source表WHEREemail NOT LIKE '%@magento.com'filterAND created_at < XAND created_at >= Ytimestamp (和报表time range)通过单击 Manage Data > 量度> 创建新量度 导航到量度生成器,您必须首先选择相应的source表,在本例中为orders表。 然后,将设置量度,如下所示:
列聚合
聚合从另一个表连接的列时需要计算列。 例如,您可能在customer表中生成了一个名为Customer LTV的列,该列加总了orders表中与该客户关联的所有订单的总值。
此聚合的查询可能如下所示:
Selectc.customer_idSUM(o.order_total) as "Customer LTV"FROM customers cJOIN orders oON c.customer_id = o.customer_idWHERE o.status = 'success'在Commerce Intelligence中设置此项需要使用Data Warehouse管理器,您可以在其中构建orders和customers表之间的路径,然后在客户表中创建名为Customer LTV的列。
了解如何在customers和orders之间建立新路径。 最终目标是在customers表中创建新的聚合列,因此请首先导航到Data Warehouse中的customers表,然后单击 Create a Column > 选择定义> SUM。
接下来,您需要选择源表。 如果orders表存在路径,则只需从下拉菜单中选择该路径即可。 但是,如果您正在构建新路径,请单击 Create new path,此时您会看到以下屏幕:
在此,您需要仔细考虑您尝试连接的两个表之间的关系。 在这种情况下,可能有Many个订单与One客户关联,因此orders表列在Many侧,而customers表列在One侧。
path等同于SQL中的Join。保存路径后,即可创建Customer LTV列! 请参阅下文:
现在,您已在Customer LTV表中构建了新的customers列,接下来可以使用此列创建一个指标聚合(例如,查找每个客户的平均LTV)。 您还可以使用基于group by表构建的现有量度,按报表中的计算列filter或customers。
Group By子句
查询中的Group By函数通常在Commerce Intelligence中表示为用于划分或过滤可视化报表的列。 例如,让我们重新访问您之前探讨的Total Revenue查询,但这次按coupon\_code对收入进行分段,以更好地了解哪些优惠券产生的收入最多。
从下面的查询开始:
SELECT coupon_code,group bySUM(order_total) as "Total Revenue"Metric operation(列)FROM ordersMetric source表WHEREemail NOT LIKE '%@magento.com'filterAND created_at < '2016-12-01'AND created_at >= '2016-09-01'timestamp (和报表time range)GROUP BY coupon_codegroup by使用您之前创建的相同Total Revenue指标,您现在可以创建按优惠券代码分段的收入报表了! 查看下面的gif,其中显示了如何设置此可视化报表,查看9月至11月的数据:
公式
有时,查询可能涉及多个聚合,以便计算单独列之间的关系。 例如,您可以通过以下两种方法之一计算查询中的平均订单值:
AVG('order\_total')或SUM('order\_total')/COUNT('order\_id')
前一种方法涉及创建对order\_total列执行平均值的新量度。 但是,如果已将量度设置为计算Total Revenue和Number of orders,则可以直接在Report Builder中创建后一种方法。
后退一步,查看Average order value的整体查询:
SELECTSUM(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 orderssource表WHEREemail NOT LIKE '%@magento.com'filterAND created_at < '2016-12-01'AND created_at >= '2016-09-01'现在,假定您已设置量度以计算Total Revenue和Number of orders。 由于存在这些量度,您只需打开Report Builder并使用Formula功能创建按需计算即可:
正在结束
如果您是繁重的SQL用户,通过考虑如何在Commerce Intelligence中翻译查询,可以生成计算列、量度和报表。
如需快速参考,请查看下面的矩阵。 这显示了SQL子句的对等项Commerce Intelligence元素以及它如何映射到多个元素,具体取决于它在查询中的使用方式。
Commerce Intelligence元素
SQL ClauseMetricFilterReport group byReport time framePathCalculated column inputsSource tableSELECTFROMWHEREWHERE (带有时间元素)JOIN...ONGROUP BY