reporting-services - 我们可以将 Cosmos DB 连接到 SSRS 吗?
问题描述
我必须在 SSRS 报告中使用 Azure Cosmos DB。我使用过 ODBC 连接器。我能够使用简单的选择查询来获取数据。但无法在 SSRS 报告中调用存储过程或函数。是否可以在 SSRS 中调用 Cosmos DB 存储过程?
解决方案
Cosmos DB 不是关系数据库,并且它的过程是用 Javascript 编写的,在问题的上下文中是不相关的事实。
您可以通过 SQL Server 中的存储过程直接或间接地查询 Cosmos 中的数据,该存储过程又可以用作 SSRS 报告的数据源。
1) 编写一个连接到 Cosmos DB 的 Python 脚本,将您要查找的数据查询到 JSON 文档中,并将这些数据写入文件https://docs.microsoft.com/en-us/azure/cosmos-db/ sql-api-python-samples。
如果 Cosmos 中的此查询需要扫描多个分区中的文档,您可以启用跨分区查询。“要跨分区运行查询,请将 EnableCrossPartitionQuery 设置为 true(或 REST API 中的 x-ms-documentdb-query-enablecrosspartition)” https://docs.microsoft.com/en-us/azure/cosmos-db/how -to-query-container
2) 在 SQL Server 中创建存储过程。在 SQL Server 存储过程中使用 xp_cmdshell 来执行步骤 1 中的 Python 脚本。或者您可以使用 powershell 步骤在 SQL Server 中创建代理作业——存储过程可以执行该作业。
在过程中使用 BULK INSERT 将文件中的 JSON 数据插入到 SQL Server 中的表中——然后使用 T-SQL OPENJSON 函数将 JSON 解析为柱状形式。
https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql?view=sql-server-ver15
3) 添加存储过程作为 SSRS 报告的数据源。
如果您使用的是 MongoAPI,您还可以使用 SQL Server 2019 中的 Polybase 直接查询 Cosmos。
推荐阅读
- html - HTML CSS AdminLTE 内容包装器 min-height 导致侧边栏出现
- android - Android Multiple RecyclerView最后位置不持久
- python - 由于未知问题,乒乓球刚刚停在初始点
- php - $this->> 这个符号在 PHP 中是什么意思
- c# - 我想在另一个被破坏的对象的位置实例化一个对象
- python - 返回包含字符串列中存在的关键字列表的列 - 熊猫
- python - 由于使用会话运行 tf.contrib.image.sparse_image_warp 导致的内存泄漏
- amazon-dynamodb - 是否可以在不轮询的情况下侦听 DynamoDB 中的更改?
- css - 如何调整工具提示的位置
- node.js - 基于 Express 中的查询参数的 if/else 响应