我 正在 使用 this tutorial , 并 创建 了 Azure MongoDB ( Mongo API ) 和 Synapse 工作 区 , 将 ECDC 数据 导入 MongoDB 并 在 Synapse 工作 区 中 连接 。 到 目前 为止 一切 顺利 。 但是 , 当 我 查询 数据 时 , 例如 字符 串 列 date _ rep , 我 得到 的 是 {"string":"2020-12-14"}
, 而 不是 2020-12-14
我 使用 的 查询 是 :
SELECT TOP 10 *
FROM OPENROWSET(PROVIDER = 'CosmosDB',
CONNECTION = 'Account=analytcstest;Database=ecdc',
OBJECT = 'ecds',
SERVER_CREDENTIAL = 'analytcstest'
) with ( date_rep varchar(200) ) as rows
中 的 每 一 个
当 不 指定 " with " 子句 来 自动 推断 模式 时 , 我 遇到 同样 的 问题 :
SELECT TOP 10 *
FROM OPENROWSET(PROVIDER = 'CosmosDB',
CONNECTION = 'Account=analytcstest;Database=ecdc',
OBJECT = 'ecds',
SERVER_CREDENTIAL = 'analytcstest'
) as rows
格式
我 当然 可以 解析 它 , 就 像 这样 , 但是 我 不 明白 为什么 我 必须 这么 做 , 而且 它 不在 文档 中 ?
SELECT TOP 10 JSON_VALUE([date_rep], '$.string') AS [date_rep]
FROM OPENROWSET(PROVIDER = 'CosmosDB',
CONNECTION = 'Account=analytcstest;Database=ecdc',
OBJECT = 'ecds',
SERVER_CREDENTIAL = 'analytcstest'
) with ( date_rep varchar(200) ) as rows
格式
1条答案
按热度按时间rdlzhqv91#
当我使用CosmosDB for Mongo API时,我尝试在我的环境中重现类似的东西,并获得类似的输出A值和数据类型:
这可能是因为**Azure Cosmos DB API for MongoDB通过BSON格式将数据存储在文档结构中。**它是JSON文档的二进制编码序列。BSON已扩展为添加一些可选的非JSON本机数据类型,如日期和二进制数据。
Cosmos DB API for MongoDB
旨在提供MongoDB体验,并通过将您的应用程序指向API for MongoDB帐户的连接字符串,继续使用您喜爱的MongoDB驱动程序、SDK和工具。当我尝试类似的事情与
CosmosDB for SQL API
它存储数据在Json格式,它是给出适当的结果。有关BSON的更多信息,请参考Document