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中创建临时表的方法,通常在示例中用作实际表的替换。