1

我的任务是将公司Event Export从 PlayFab 环境更改为 Azure。最初,我们已将其设置为,Export all events但在查看数据后,我们确实导出了一些出于法律原因我们不想要的数据。我正在探索该Use custom query方法并尝试构建查询以获取除我要排除的列之外的所有数据。问题是这些列是嵌套的。我现在尝试使用project-away查询来排除一列,但是当我运行以下查询时

['events.all'] 
| project-away EventData.ColumnToExclude
| limit 100

我收到这个错误

在此处输入图像描述

我假设这是因为它不支持嵌套列。有没有一种简单的方法来排除列,而不必展平数据或列出我的所有列(我们的开发人员可能会在没有通知的情况下创建新事件,这样就不起作用了)?

更新 1:

我发现这project-away是从表中删除列的语法,但我需要的是一种从 json/动态对象中删除键的方法,因此发现 usingbag_remove_keys()是正确的方法

['events.all']
| project EventData=bag_remove_keys(EventData, dynamic(['Key1', 'Key2', '$.Key3.SubKey1'])

但现在我面临另一个问题。当我'$.'对子键使用符号时,出现以下错误

Query execution has resulted in error (0x8000FFFF): Partial query failure: Catastrophic failure (message: 'PropertyBagEncoder::Add: non-contiguous entries: ', details: '').
[0]Kusto.Data.Exceptions.KustoDataStreamException: Query execution has resulted in error (0x8000FFFF): Partial query failure: Catastrophic failure (message: 'PropertyBagEncoder::Add: non-contiguous entries: ', details: '').
Timestamp=2022-01-31T13:54:56.5237026Z

如果我没有列出任何子项,我不会遇到这个问题,我不明白为什么

更新 2:

我发现它bag_remove_keys有一个错误。在下面的查询中,我在UPDATE 1中得到了描述的错误

datatable(d:dynamic)
[
dynamic(
{
  "test1": "val",
  "test2": {},
  "test3": "val"
}
)
]
| extend d1=bag_remove_keys(d, dynamic(['$.SomeKey.Sub1', '$.SomeKey.Sub2']))

但是,如果我"test2"在最后移动密钥,我不会收到错误,但d1不会"test2"在输出中显示密钥。 在此处输入图像描述

另外,如果我有一个bag_remove_keys()与输入中的一个键匹配的键,| extend d1=bag_remove_keys(d, dynamic(['$.SomeKey.Sub1', '$.SomeKey.Sub2', 'test1']))那么它也不会出错,但会"test2"从输出 中删除在此处输入图像描述

4

1 回答 1

2

感谢您报告 Andrei,这是一个错误,我们正在努力修复。

更新 - 修复已签入并将在两周内部署,如果您需要更早,请打开支持票。

于 2022-01-31T20:56:37.963 回答