当我尝试加入其中一个customDimensions字段时,我收到一个语法错误:“join属性可能只是列实体或等式表达式”。我可以加入非自定义列,例如名称或时间戳。
示例代码:
let ExperimentLaunchedEvents = customEvents | where name=="ExperimentLaunched" and timestamp > now(-30d);
let ExperimentTerminatedEvents = customEvents | where name=="ExperimentTerminated" and timestamp > now(-30d);
ExperimentLaunchedEvents
| project name, timestamp, experimentId=customDimensions.ExperimentId
| join kind=leftanti (ExperimentTerminatedEvents
| project name, timestamp, experimentId=customDimensions.ExperimentId) on tostring(experimentId)
如果不支持加入customDimensions列,是否有任何方法可以选择尚未终止的已启动实验?谢谢!
答案 0 :(得分:13)
John在评论中提到当您为任何操作使用自定义维度时,您需要将其转换为查询引擎可以使用的类型。在这种情况下,我使用tostring(),但您也可以使用其他功能,例如toint()。
我还扩展了一个列类型,因此它可以在诸如join之类的子句中重复使用,也可以不必长时间反复使用。
ExperimentLaunchedEvents
| extend experimentId=tostring(customDimensions.ExperimentId)
| project name, timestamp, experimentId
| join kind=leftanti (ExperimentTerminatedEvents
| extend experimentId=tostring(customDimensions.ExperimentId)
| project name, timestamp, experimentId)
on experimentId
答案 1 :(得分:0)
与詹姆斯戴维斯的答案相同,但是由于它被包含在两个项目条款中,因为它包含在两个项目条款中而重复了两次实验列的重复增强,正如squallsv所指出的那样
let myExperimentLauncedEvents=
ExperimentLaunchedEvents
| extend experimentId=tostring(customDimensions.ExperimentId)
| project name, timestamp, experimentId
| join kind=leftanti (ExperimentTerminatedEvents
| extend experimentId=tostring(customDimensions.ExperimentId)
| project name, timestamp, experimentId)
on experimentId;
myExperimentLauncedEvents
| project name, timestamp, experimentId
因此,通过将结果分配给variable (temp table),然后对该变量使用项目子句,我们可以选择仅显示所需的列。