web-dev-qa-db-ja.com

Application Insights AnalyticsでcustomDimensionsに参加するにはどうすればよいですか?

CustomDimensionsフィールドの1つで結合しようとすると、構文エラーが発生します:「結合属性は列エンティティまたは等価式のみである可能性があります」。名前やタイムスタンプなどの非カスタム列に参加できます。

サンプルコード:

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列での結合がサポートされていない場合、終了していない起動済みの実験を選択する方法はありますか?ありがとう!

9
ZhenyaR

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
14

James Davisの回答と同じですが、squallsvが指摘しているように、両方のプロジェクト句に含まれているため、experimentId列の繰り返しを2回停止するというマイナーな機能強化が行われました。

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) に割り当て、その変数でproject句を使用することで、必要な列のみを表示するように選択できます。

0
asadahm