JSON 文件中不同向量内的 DISTINCT 值

问题描述 投票:0回答:1

我有例如下面的 JSON 文件:

[
   {
        "id": "document1",
        "source": {
            "pass": {
                "ploy": {
                    "school": [{
                            "sourcen": "data"
                        },
                        {
                            "sourcen": "data1"
                        },
                        {
                            "sourcen": "data1"
                        }
                    ]
                }
            }
        }
    },
    {
        "id": "document2",
        "source": {
            "pass": {
                "ploy": {
                    "school": [{
                            "sourcen": "data1"
                        },
                        {
                            "sourcen": "data2"
                        },
                        {
                            "sourcen": "data3"
                        },
                        {
                            "sourcen": "data3"
                        }
                    ]
                }
            }
        }
    }
]

我想在“学校”向量中区分,所以输出将是:

[
  {
   "$1": [
     "data",
     "data1"
    ]
},
  {
  "$1": [
    "data1",
    "data2",
    "data3"
      ]
  }
]

CosmosDB 中的 ARRAY() 函数可用于检索此数据,但我使用的应用程序不支持它。

我现在正在运行以下查询,但这是不正确的,因为它不同于所有值:

SELECT DISTINCT sourcen FROM [tablename.source.pass.ploy.school]

你能帮忙吗?是否有任何 SQL 查询可以从不同的向量输出不同的数据?

arrays json nested azure-cosmosdb distinct-values
1个回答
0
投票

您可以按“sourcen”字段中的值对数据进行分组,然后使用

STRING_AGG()
连接每个组的不同值。

SELECT STRING_AGG(DISTINCT s, ',') AS $1
FROM c
JOIN s IN c.source.pass.ploy.school
GROUP BY s.sourcen
© www.soinside.com 2019 - 2024. All rights reserved.