Azure data explorer 如何从kusto中的列中分离唯一值并为其生成新行?
我在库斯托有一张桌子。看起来是这样的:-Azure data explorer 如何从kusto中的列中分离唯一值并为其生成新行?,azure-data-explorer,kql,Azure Data Explorer,Kql,我在库斯托有一张桌子。看起来是这样的:- ------------------ | Tokens | Shop | ------------------ | a | P | | a,b | Q | | c,d,e | P | | c | R | | c,d | Q | ------------------ ---------------------------------- | Distinct Tokens | Sh
------------------
| Tokens | Shop |
------------------
| a | P |
| a,b | Q |
| c,d,e | P |
| c | R |
| c,d | Q |
------------------
----------------------------------
| Distinct Tokens | Shop | Count |
----------------------------------
| a | P | 12 |
| b | P | 13 |
| c | R | 16 |
| d | Q | 2 |
----------------------------------
总共有12个不同的代币,代币列可以有它们的任何排列(包括空),商店列只能有5个可能值中的一个固定值(不能为空)
我想得到一个输出表,有三列,如下所示:-
------------------
| Tokens | Shop |
------------------
| a | P |
| a,b | Q |
| c,d,e | P |
| c | R |
| c,d | Q |
------------------
----------------------------------
| Distinct Tokens | Shop | Count |
----------------------------------
| a | P | 12 |
| b | P | 13 |
| c | R | 16 |
| d | Q | 2 |
----------------------------------
简言之,我希望所有不同的令牌都在一列中,每个令牌都映射到5个可用商店中的每一个,并且计数指示原始表中特定令牌随特定商店一起出现的行数
注意:新表中带有“p”的“a”的计数将包括原始表中任何逗号分隔值中带有“a”的行的计数
我无法为此编写查询,请帮助。以下是一个方法:
datatable(Tokens:dynamic, Shop:string)[dynamic(["a"]), "P",
dynamic(["a", "b"]), "Q",
dynamic(["a", "d", "e"]), "P",
dynamic(["c"]), "R",
dynamic(["a", "b", "c", "d"]), "Q"]
| mv-expand Token =Tokens to typeof(string)
| summarize count() by Token, Shop
| order by Token asc
以下是输出:
是否必须为每个原始行写入动态行?如果是,则不可能,因为该表有数千行。否,mv expand运算符将数组扩展为行,并汇总这些行。只需用表名替换
datatable(…)[…]
datatable
是一种使用一些数据在mem中创建临时表的方法,通常在示例中用作实际表的替换。