json - SQL Server / OPENJSON / 认知服务 / LUIS
问题描述
我有这个 JSON:
{
"query": "meu problema não foi resolvido",
"prediction": {
"topIntent": "Problem_not_resolved",
"intents": {
"Problem_not_resolved": {
"score": 0.89767915
},
"Product_Quality": {
"score": 0.09048716
},
"None": {
"score": 0.00640945463
}
},
"entities": {}
}
}
(项目'Problem_not_resolved'
和是未知的'Product_Quality'
,'None'
每次通话时都可以在此处列出新标签)。
在 SQL Server 中,我运行以下命令:
SELECT *
FROM OPENJSON (@V_JSON, '$.prediction.intents')
选择结果:
如何创建一个选择命令来捕获每个项目的“分数”字段的值?
解决方案
如果我理解正确,您需要一个OPENJSON()
带有显式模式(子句)的额外调用WITH
来解析嵌套的 JSON:
JSON:
DECLARE @json nvarchar(max) = N'{
"query": "meu problema não foi resolvido",
"prediction": {
"topIntent": "Problem_not_resolved",
"intents": {
"Problem_not_resolved": {
"score": 0.89767915
},
"Product_Quality": {
"score": 0.09048716
},
"None": {
"score": 0.00640945463
}
},
"entities": {}
}
}'
陈述:
SELECT j1.[key], j2.score
FROM OPENJSON(@json, '$.prediction.intents') j1
CROSS APPLY OPENJSON(j1.[value]) WITH (score float '$.score') j2
结果:
----------------------------------
key score
----------------------------------
Problem_not_resolved 0.89767915
Product_Quality 0.09048716
None 0.00640945463
推荐阅读
- python - Python Pandas:TypeError:只能将整数标量数组转换为标量索引
- css - CSS 样式的最高优先级
- spark-cassandra-connector - 这条消息的含义是什么 StorageProxy.java:2358 - 模式与 Cassandra debug.log 一致
- sql - SQL查询返回表结构
- math - Lambda 演算的 Beta 缩减
- python - 'float' 类型的参数不可迭代 - TypeError
- angular - 测试覆盖率无法覆盖测试条件
- c - 如何在c语言数组中使用单词?
- c++ - 将 Visual Studio Code 路径设置为 .clang_format 文件
- r - 如何在 R 中的多线图上添加图例?