cosmosdb_sql_request 插件

cosmosdb_sql_request 插件会将 SQL 查询发送到 Cosmos DB SQL 网络终结点,并返回查询的结果。 此插件主要为查询小数据集而设计,例如,使用存储在 Azure Cosmos DB 中的参考数据来扩充数据。 该插件通过 evaluate 运算符调用。

语法

evaluatecosmosdb_sql_request(ConnectionString,SqlQuery [,SqlParameters [,Options]] )

参数

参数名称 说明 必需/可选
ConnectionString 一个表示连接字符串的 string 文本,该连接字符串指向要查询的 Cosmos DB 集合。 它必须包括“AccountEndpoint”、“Database”和“Collection”。 如果主密钥用于身份验证,则可能包括“AccountKey”。
示例:'AccountEndpoint=https://cosmosdbacc.documents.azure.cn/ ;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;'
必须
SqlQuery 一个 string 文本,指示要执行的查询。 必须
SqlParameters dynamic 类型的常数值,用于保存作为参数随查询传递的键值对。 参数名称必须以 @ 开头。 可选
选项 dynamic 类型的常数值,它将更高级的设置保存为键值对。 可选
----支持的选项设置包括:-----
armResourceId 从 Azure 资源管理器检索 API 密钥
示例:/subscriptions/a0cd6542-7eaf-43d2-bbdd-b678a869aad1/resourceGroups/ cosmoddbresourcegrouput/providers/Microsoft.DocumentDb/databaseAccounts/cosmosdbacc
token 提供用于通过 Azure 资源管理器进行身份验证的 Azure AD 访问令牌。
preferredLocations 控制从哪个区域查询数据。
示例:['China East 2']

设置标注策略

该插件会对 Cosmos DB 进行标注。 请确保群集的标注策略允许对目标 CosmosDbUri 进行 cosmosdb 类型的调用。

以下示例演示如何为 Cosmos DB 定义标注策略。 建议将其限制为特定的终结点(my_endpoint1my_endpoint2)。

[
  {
    "CalloutType": "CosmosDB",
    "CalloutUriRegex": "my_endpoint1\\.documents\\.azure\\.com",
    "CanCall": true
  },
  {
    "CalloutType": "CosmosDB",
    "CalloutUriRegex": "my_endpoint2\\.documents\\.azure\\.com",
    "CanCall": true
  }
]

以下示例为一条针对 cosmosdb CalloutType 更改标注策略的命令

.alter cluster policy callout @'[{"CalloutType": "cosmosdb", "CalloutUriRegex": "\\.documents\\.azure\\.com", "CanCall": true}]'

示例

查询 Cosmos DB

以下示例使用 cosmosdb_sql_request 插件发送 SQL 查询,以便使用其 SQL API 从 Cosmos DB 提取数据。

evaluate cosmosdb_sql_request(
  'AccountEndpoint=https://cosmosdbacc.documents.azure.cn/;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;',
  'SELECT * from c')

使用参数查询 Cosmos DB

以下示例使用 SQL 查询参数从备用区域查询数据。 有关详细信息,请参阅 preferredLocations

evaluate cosmosdb_sql_request(
    'AccountEndpoint=https://cosmosdbacc.documents.azure.cn/;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;',
    "SELECT c.id, c.lastName, @param0 as Column0 FROM c WHERE c.dob >= '1970-01-01T00:00:00Z'",
    dynamic({'@param0': datetime(2019-04-16 16:47:26.7423305)}),
    dynamic({'preferredLocations': ['China East 2']}))
| where lastName == 'Smith'

Azure Monitor 不支持此功能