我可以在kusto(KQL)中提取多个嵌套的json属性吗?

r8xiu3jd  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(250)

我 将 遥测 事件 发送 到 playfab 。 在 这些 事件 中 , 我 希望 查询 有效 负载 的 内容 。 我 可以 做到 这 一 点 , 但 嵌套 的 属性 都 在 同一 列 中 。 我 可以 使用 以下 代码 提取 事件 中 的 所有 内容 , 但 对于 有效 负载 中 嵌套 的 超级 属性 。 超级 属性 都 在 同一 列 中
以下 是 我 的 事件 的 结构

SchemaVersion": xxxx
"FullName_Namespace": xxxx,
"FullName_Name": xxxx,
"Entity_Id": xxxxx,
"Entity_Type": txxxxx,
"EntityLineage_title": xxxxxx,
"EventData": {
    "Timestamp": "xxxxxxx",
    "PayloadContentType": "Json",
    "EntityLineage": {
        "master_player_account": "xxxxxx",
        "title_player_account": "xxxxxx",
        "namespace": "xxxxx",
        "title": "xxxxxx"
    },
    "SchemaVersion": "xxxxxx",
    "Originator": {
        "Type": "xxxxxx",
        "Id": "xxxxxx"
    },
    "OriginInfo": {
        "Timestamp": "xxxxxx"
    },
    "FullName": {
        "Namespace": "xxxxxx",
        "Name": "xxxxxx"
    },
    "Payload": {
        "TimeToCompleteSubStage": xxxxxx,
        "TimeToCompleteStage": xxxxxx,
        "SuperProperties": {
            "GameSessionID": "xxxxxx",
            "PlayFabId": "xxxxxx",
            "Version": "xxxxxx",
            "Index": xxxxxx,
            "Time": "xxxxxx"
        },
        "IdStageFrom": "xxxxxx",
        "SubStageId": xxxxxx,
        "IdStageTo": "xxxxxx"
    },
    "Id": "xxxxxx",
    "Entity": {
        "Type": "xxxxxx",
        "Id": "xxxxxx"
    }
},
"EventId": xxxxxx,
"Timestamp": xxxxxx,
"EntityLineage_title_player_account": xxxxxx,
"EntityLineage_master_player_account": xxxxxx,
"EntityLineage_namespace": xxxxxx,
"ExperimentVariants": xxxxxx

中 的 每 一 个
我 所 尝试 的
如果 发现 一 个 类似 的 问题 here , 但 我 不 确定 是否 完全 理解 这个 问题 或 答案 。 即使 在 看 了 这个 documentation 之后 , 它 似乎 也 能 解释 如何 做到 这 一 点 。 原因 是 什么 ? 因为 我 在 Kusto 甚至 编程 方面 的 知识 一般 都 是 基础 的 。
那么 , 有 没有 人 可以 尝试 解释 一下 , 是否 可以 获取 Payload 下 的 所有 属性 , 甚至 是 嵌套 在 Payload 中 特定 列 中 的 超 属性 ? 如果 可以 , 如何 实现 ? 我 是否 查询 Payload 之外 的 任何 内容 都 无关 紧要
以下 是 我 的 尝试
第 一 次
这 两 种 方法 都 可以 工作 , 但 它们 是 单独 查询 的 , 这 并 不 理想 。

['events.all'] 
| where FullName_Name == 'FTUE_Funnel'
| extend Payload = parse_json(EventData.Payload)
| project-away EventData
| evaluate bag_unpack(Payload,'extra_')

格式
这 一 个 也 工作 , 它 查询 负载 内容 , 但 把 超级 属性 在 一 列 + 查询 任何 负载 以外 的 东西 , 这 对 我 来说 很 好
谢谢 你 , 谢谢 你

ctehm74n

ctehm74n1#

bag_unpack()

datatable(event:dynamic)
[
    dynamic
    (
        {
            "SchemaVersion": 1,
            "FullName_Namespace": 2,
            "FullName_Name": 3,
            "Entity_Id": 4,
            "Entity_Type": 5,
            "EntityLineage_title": 6,
            "EventData": {
                "Timestamp": 7,
                "PayloadContentType": "Json",
                "EntityLineage": {
                    "master_player_account": 8,
                    "title_player_account": 9,
                    "namespace": 10,
                    "title": 11
                },
                "SchemaVersion": 12,
                "Originator": {
                    "Type": 13,
                    "Id": 14
                },
                "OriginInfo": {
                    "Timestamp": 15
                },
                "FullName": {
                    "Namespace": 16,
                    "Name": 17
                },
                "Payload": {
                    "TimeToCompleteSubStage": 18,
                    "TimeToCompleteStage": 19,
                    "SuperProperties": {
                        "GameSessionID": 20,
                        "PlayFabId": 21,
                        "Version": 22,
                        "Index": 23,
                        "Time": 24
                    },
                    "IdStageFrom": 25,
                    "SubStageId": 26,
                    "IdStageTo": 27
                },
                "Id": 28,
                "Entity": {
                    "Type": 29,
                    "Id": 30
                }
            },
            "EventId": 31,
            "Timestamp": 32,
            "EntityLineage_title_player_account": 33,
            "EntityLineage_master_player_account": 34,
            "EntityLineage_namespace": 35,
            "ExperimentVariants": 36
        }
    )
]
| extend Payload = event.EventData.Payload
| project-away event
| evaluate bag_unpack(Payload)
| evaluate bag_unpack(SuperProperties, "SuperProperties_")

| 标识阶段自|标识阶段至|子阶段ID|完成阶段的时间|完成子阶段的时间|超级属性_游戏会话ID|超级属性_索引|超级属性_播放FabId|超级属性_时间|超级属性版本|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|- -|
| 二十五个|二十七人|二十六人|十九|十八|二十个|二十三个|二十一个|二十四|二十二个|
Fiddle

相关问题