Подключаемый модуль cosmosdb_sql_request
Подключаемый cosmosdb_sql_request
модуль отправляет SQL-запрос в сетевую конечную точку SQL Azure Cosmos DB и возвращает результаты запроса. Этот подключаемый модуль в основном предназначен для запроса небольших наборов данных, например для обогащения данных эталонными данными, хранящимися в Azure Cosmos DB. Подключаемый модуль вызывается с evaluate
помощью оператора .
Синтаксис
evaluate
cosmosdb_sql_request
(
Connectionstring,
SqlQuery [,
SqlParameters [,
Параметры]] )
[:
OutputSchema]
Дополнительные сведения о соглашениях о синтаксисе.
Параметры
Имя | Тип | Обязательно | Описание |
---|---|---|---|
Connectionstring | string |
✔️ | Строка подключения, указывающий на коллекцию Azure Cosmos DB для запроса. Он должен включать AccountEndpoint, Database и Collection. Он может включать AccountKey, если для проверки подлинности используется ключ master. Дополнительные сведения см. в разделе Проверка подлинности и авторизация. Примере: 'AccountEndpoint=https://cosmosdbacc.documents.azure.com/ ;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;' |
SqlQuery | string |
✔️ | Выполняемый запрос. |
SqlParameters | dynamic |
Объект контейнера свойств, который передается в качестве параметров вместе с запросом. Имена параметров должны начинаться с @ . |
|
OutputSchema | Имена и типы ожидаемых столбцов выходных данных подключаемого cosmosdb_sql_request модуля. Используйте следующий синтаксис: ( ColumnName: ColumnType [, ...] ) . Указание этого параметра позволяет оптимизировать несколько запросов. |
||
Параметры | dynamic |
Объект контейнера свойств с расширенными параметрами. Если параметр AccountKey не указан в ConnectionString, поле armResourceId этого параметра является обязательным. Дополнительные сведения см. в разделе Поддерживаемые параметры. |
Поддерживаемые варианты
В следующей таблице описаны поддерживаемые поля параметра Options .
Имя | Тип | Описание |
---|---|---|
armResourceId |
string |
Идентификатор ресурса Azure Resource Manager базы данных Cosmos DB. Если ключ учетной записи не указан в аргументе строка подключения, это поле является обязательным. В таком случае для проверки подлинности armResourceId в Cosmos DB используется .Примере: /subscriptions/a0cd6542-7eaf-43d2-bbdd-b678a869aad1/resourceGroups/ cosmoddbresourcegrouput/providers/Microsoft.DocumentDb/databaseAccounts/cosmosdbacc |
token |
string |
Microsoft Entra маркер доступа субъекта с доступом к базе данных Cosmos DB. Этот маркер используется вместе с armResourceId для проверки подлинности с помощью Resource Manager Azure. Если этот параметр не указан, используется токен субъекта, который сделал запрос. |
preferredLocations |
string |
Регион, из которого запрашивают данные. Примере: ['East US'] |
Аутентификация и авторизация
Чтобы авторизоваться в конечной точке сети SQL Azure Cosmos DB, необходимо указать сведения об авторизации. В следующей таблице приведены поддерживаемые методы проверки подлинности и описано, как использовать этот метод.
Метод проверки подлинности | Описание |
---|---|
Идентификатор ресурса azure Resource Manager (рекомендуется) | Для безопасной проверки подлинности рекомендуется указать armResourceId и при необходимости в token параметрах . идентифицирует armResourceId учетную запись базы данных Cosmos DB, а token должен быть допустимым маркером носителя Microsoft Entra для субъекта с разрешениями на доступ к базе данных Cosmos DB. Если параметр не token указан, для проверки подлинности будет использоваться маркер Microsoft Entra запрашивающего субъекта. |
Ключ учетной записи | Ключ учетной записи можно добавить непосредственно в аргумент ConnectionString . Однако этот подход менее безопасен, так как включает в себя включение секрета в текст запроса и менее устойчив к будущим изменениям в ключе учетной записи. Чтобы повысить безопасность, скройте секрет как замаскированный строковый литерал. |
Настройка политики выносок
Подключаемый модуль создает выноски к экземпляру Azure Cosmos DB. Убедитесь, что политика выноски кластера разрешает вызовы типа cosmosdb
к целевому объекту CosmosDbUri.
В следующем примере показано, как определить политику выноски для Azure Cosmos DB. Рекомендуется ограничить его определенными конечными точками (my_endpoint1
, my_endpoint2
).
[
{
"CalloutType": "CosmosDB",
"CalloutUriRegex": "my_endpoint1\\.documents\\.azure\\.com",
"CanCall": true
},
{
"CalloutType": "CosmosDB",
"CalloutUriRegex": "my_endpoint2\\.documents\\.azure\\.com",
"CanCall": true
}
]
В следующем примере показана команда alter callout policy для cosmosdb
CalloutType
.alter cluster policy callout @'[{"CalloutType": "cosmosdb", "CalloutUriRegex": "\\.documents\\.azure\\.com", "CanCall": true}]'
Примеры
Запрос Azure Cosmos DB с помощью определяемой запросом схемы вывода
В следующем примере используется подключаемый модуль cosmosdb_sql_request для отправки SQL-запроса при выборе только определенных столбцов. В этом запросе используются явные определения схемы, которые позволяют выполнять различные оптимизации перед выполнением фактического запроса к Cosmos DB.
evaluate cosmosdb_sql_request(
'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;',
'SELECT c.Id, c.Name from c') : (Id:long, Name:string)
Запрос БД Azure Cosmos DB
В следующем примере используется подключаемый модуль cosmosdb_sql_request для отправки SQL-запроса для получения данных из Azure Cosmos DB с помощью Azure Cosmos DB для NoSQL.
evaluate cosmosdb_sql_request(
'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;',
'SELECT * from c') // OutputSchema is unknown, so it is not specified. This may harm the performance of the query.
Запрос к Azure Cosmos DB с параметрами
В следующем примере используются параметры SQL-запроса и запрашиваются данные из альтернативного региона. Для получения дополнительной информации см. preferredLocations
.
evaluate cosmosdb_sql_request(
'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;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': ['East US']})) : (Id:long, Name:string, Column0: datetime)
| where lastName == 'Smith'
Эта возможность не поддерживается в Azure Monitor
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по