You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure CosmosDB原生查询筛选指定条件的WebId?

Azure Cosmos DB 原生查询筛选解决方案

存储的JSON数据

[
    {
            "WebId": "99999996_2_10_125064",
            "SectionId": 1551,
            "rowtype": 4,
            "Fields": [
                    {
                            "FieldId": 8998,
                            "FieldValue": "1002100481",
                            "FieldName": "<p>Project_No</p>8998"
                    },
                    {
                            "FieldId": 9839,
                            "FieldValue": "Customer Name 123",
                            "FieldName": "<p>Customer_Name</p>9839"
                    }
            ]
    },
    {
            "WebId": "99999996_2_10_125064",
            "SectionId": 1552,
            "rowtype": 4,
            "Fields": [
                    {
                            "FieldId": 13362,
                            "FieldValue": "76215_1_9_122345",
                            "FieldName": "<p>LW_WebID</p>13362"
                    },
                    {
                            "FieldId": 10369,
                            "FieldValue": null,
                            "FieldName": "<p>TRM_ID</p>10369"
                    }
            ]
    }
],
[
    {
            "WebId": "99999996_2_10_125070",
            "SectionId": 1551,
            "rowtype": 4,
            "Fields": [
                    {
                            "FieldId": 8998,
                            "FieldValue": "1002100482",
                            "FieldName": "<p>Project_No</p>8998"
                    },
                    {
                            "FieldId": 9839,
                            "FieldValue": "Customer Name 124",
                            "FieldName": "<p>Customer_Name</p>9839"
                    }
            ]
    },
    {
            "WebId": "99999996_2_10_125070",
            "SectionId": 1552,
            "rowtype": 4,
            "Fields": [
                    {
                            "FieldId": 13362,
                            "FieldValue": "94215_1_9_122346",
                            "FieldName": "<p>LW_WebID</p>13362"
                    },
                    {
                            "FieldId": 10369,
                            "FieldValue": null,
                            "FieldName": "<p>TRM_ID</p>10369"
                    }
            ]
    }
]

查询需求

需要获取所有满足以下条件的WebId:当Fields.FieldName为<p>LW_WebID</p>13362时,对应的Fields.FieldValue匹配'76215_1_9_%',示例数据中应仅返回WebId为'99999996_2_10_125064'的记录。

当前实现方式

目前只能通过以下查询拉取包含FieldId为8998、9839、13362的记录,之后在Power Query中透视数据并筛选LW_WebId:

SELECT
    c["WebId"]
    , c["SectionId"]
    , c["rowtype"]
    , d["FieldId"]
    , d["FieldName"]
    , d["FieldValue"]
FROM c
JOIN d IN c["Fields"]
WHERE
    c["WebId"] LIKE '99999996_2_10_%'
    AND d["FieldId"] IN (13362, 8998, 9839)

原生查询实现

可以直接通过Cosmos DB原生SQL查询完成筛选,无需后续在Power Query中处理,提供两种方案:

方案1:仅返回符合条件的WebId

如果只需要目标WebId,可通过DISTINCT避免重复返回:

SELECT DISTINCT c["WebId"]
FROM c
JOIN d IN c["Fields"]
WHERE
    c["WebId"] LIKE '99999996_2_10_%'
    AND d["FieldName"] = '<p>LW_WebID</p>13362'
    AND d["FieldValue"] LIKE '76215_1_9_%'

方案2:返回符合条件WebId的指定Field数据

如果需要同时获取这些WebId对应的FieldId为8998、9839、13362的数据,可通过子查询先筛选目标WebId,再拉取对应数据:

SELECT
    c["WebId"]
    , c["SectionId"]
    , c["rowtype"]
    , d["FieldId"]
    , d["FieldName"]
    , d["FieldValue"]
FROM c
JOIN d IN c["Fields"]
WHERE
    c["WebId"] IN (
        SELECT DISTINCT c_inner["WebId"]
        FROM c_inner
        JOIN d_inner IN c_inner["Fields"]
        WHERE
            c_inner["WebId"] LIKE '99999996_2_10_%'
            AND d_inner["FieldName"] = '<p>LW_WebID</p>13362'
            AND d_inner["FieldValue"] LIKE '76215_1_9_%'
    )
    AND d["FieldId"] IN (13362, 8998, 9839)

内容的提问来源于stack exchange,提问作者Milo Ulver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:32:31