见解的 SQL 规则
在 Data 360 中为计算或流见解编写 SQL 时,规则会控制如何解释每个子句以及应用哪些约束。您也可以在 WHERE 或 JOIN 子句中嵌入嵌套子查询,以限制外部查询返回哪些行。
所需的 Edition
| 适用于:Data 360 支持的所有版本。请参阅 Data 360 版本可用性。 |
按条款查询规则
| 条款 | 规则 |
|---|---|
| 常规 | DMO 名称区分大小写。验证 SQL 中的 DMO 引用是否匹配“数据模型”选项卡上“对象 API 名称”列中显示的大小写。 |
| 查询必须包含至少一个评测。评测是封装在聚合函数中的任何字段。 | |
| SELECT 子句中任何不在聚合函数中的属性都被视为维度,必须出现在 GROUP BY 子句中。 | |
| 您不能在聚合中聚合。 | |
| 您无法在顶级查询中使用 DISTINCT。 | |
您可以使用多行评论 (/* */)。 |
|
SELECT |
维度的别名不匹配字段的原始名称。例如,UnifiedIndividual__dlm.Id__c as customer_id__c 有效,但 UnifiedIndividual__dlm.Id__c as Id__c 会导致错误。 |
当您的见解包含币种字段时,您必须在 SELECT 子句中使用TRY_CONVERT_CURRENCY。 |
|
WHERE |
WHERE 子句不能包含聚合表达式。 |
| WHERE 子句不能引用维度或评测别名。 | |
GROUP BY |
GROUP BY 子句必须是使用非别名的非聚合表达式。 |
| GROUP BY 子句可以引用维度别名,但该别名不能是表达式的一部分。 | |
| GROUP BY 子句不能包括评测别名或聚合函数。 | |
ORDER BY |
顶级 SELECT 语句中不允许 ORDER BY。 |
RANK |
RANK 函数中的 PARTITION BY 和 ORDER BY 可以是聚合表达式,也可以是非聚合表达式。 |
| 包含聚合表达式的 RANK 子句被视为评测。 | |
| RANK 生成的评测不可聚合,您必须在查询时提供所有定义的维度。 | |
CASE |
包含聚合函数的 CASE 表达式被视为评测。 |
CASE(WHEN <aggregate>)生成的评测不可聚合 — 您必须在查询时提供所有定义的维度。 |
|
| 日期字段 | 在日期字段中筛选空字符串时,改用空值。 |
嵌套子查询
子查询是嵌入到另一个查询中的查询,通常在 WHERE 或 JOIN 子句中。使用子查询返回限制外部查询检索哪些行的数据。
例如,此查询平均计算 1980 年以后出生的客户的销售订单总数。
SELECT
avg(SalesOrder__dlm.GrandTotalAmount__c) as avg__c,
SubQuery1.Id as customer_id__c
FROM SalesOrder__dlm
JOIN (
SELECT Individual__dlm.Id__c as Id
FROM Individual__dlm
WHERE year(Individual__dlm.BirthDate__c) > 1980
) as SubQuery1
ON SalesOrder__dlm.SoldToCustomerId__c = SubQuery1.Id
GROUP BY customer_id__c;本文章是否解决您的问题?
请与我们共享您的想法,以便我们进行改进!
