我的任务是将公司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"
从输出
中删除