cosmosdb_sql_request plugin
Das cosmosdb_sql_request
Plug-In sendet eine SQL-Abfrage an einen SQL-Netzwerkendpunkt von Azure Cosmos DB und gibt die Ergebnisse der Abfrage zurück. Dieses Plug-In ist in erster Linie für das Abfragen kleiner Datasets konzipiert, z. B. das Anreichern von Daten mit in Azure Cosmos DB gespeicherten Referenzdaten. Das Plug-In wird mit dem evaluate
Operator aufgerufen.
Syntax
evaluate
cosmosdb_sql_request
(
Connectionstring,
SqlQuery [,
SqlParameters [,
Optionen]] )
[:
OutputSchema]
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Typ | Erforderlich | BESCHREIBUNG |
---|---|---|---|
ConnectionString | string |
✔️ | Die Verbindungszeichenfolge, die auf die abzufragende Azure Cosmos DB-Sammlung verweist. Sie muss AccountEndpoint, Database und Collection enthalten. Es kann AccountKey enthalten, wenn ein master Schlüssel für die Authentifizierung verwendet wird. Weitere Informationen finden Sie unter Authentifizierung und Autorisierung. Beispiel: 'AccountEndpoint=https://cosmosdbacc.documents.azure.com/ ;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;' |
SqlQuery | string |
✔️ | Die auszuführende Abfrage. |
SqlParameters | dynamic |
Das Eigenschaftsbehälterobjekt, das zusammen mit der Abfrage als Parameter übergeben werden soll. Parameternamen müssen mit @ beginnen. |
|
OutputSchema | Die Namen und Typen der erwarteten Spalten der cosmosdb_sql_request Plug-In-Ausgabe. Verwenden Sie die folgende Syntax: ( ColumnName: ColumnType [, ...] ) . Die Angabe dieses Parameters ermöglicht mehrere Abfrageoptimierungen. |
||
Optionen | dynamic |
Ein Eigenschaftenbehälterobjekt mit erweiterten Einstellungen. Wenn in AccountKey ConnectionString nicht angegeben wird, ist das armResourceId Feld dieses Parameters erforderlich. Weitere Informationen finden Sie unter Unterstützte Optionen. |
Unterstützte Optionen
In der folgenden Tabelle werden die unterstützten Felder des Options-Parameters beschrieben.
Name | Typ | BESCHREIBUNG |
---|---|---|
armResourceId |
string |
Die Azure Resource Manager-Ressourcen-ID der Cosmos DB-Datenbank. Wenn im Argument Verbindungszeichenfolge kein Kontoschlüssel angegeben wird, ist dieses Feld erforderlich. In diesem Fall wird verwendet armResourceId , um sich bei Cosmos DB zu authentifizieren.Beispiel: /subscriptions/a0cd6542-7eaf-43d2-bbdd-b678a869aad1/resourceGroups/ cosmoddbresourcegrouput/providers/Microsoft.DocumentDb/databaseAccounts/cosmosdbacc |
token |
string |
Ein Microsoft Entra Zugriffstoken eines Prinzipals mit Zugriff auf die Cosmos DB-Datenbank. Dieses Token wird zusammen mit dem armResourceId verwendet, um sich beim Azure-Resource Manager zu authentifizieren. Falls nicht angegeben, wird das Token des Prinzipals verwendet, der die Abfrage erstellt hat. |
preferredLocations |
string |
Der Bereich, aus dem die Daten abfragt werden sollen. Beispiel: ['East US'] |
Authentifizierung und Autorisierung
Zum Autorisieren für einen SQL-Netzwerkendpunkt von Azure Cosmos DB müssen Sie die Autorisierungsinformationen angeben. Die folgende Tabelle enthält die unterstützten Authentifizierungsmethoden und die Beschreibung der Verwendung dieser Methode.
Authentifizierungsmethode | BESCHREIBUNG |
---|---|
Azure Resource Manager-Ressourcen-ID (empfohlen) | Für die sichere Authentifizierung wird empfohlen, die armResourceId und optional token in den Optionen anzugeben. Identifiziert armResourceId das Cosmos DB-Datenbankkonto, und das token sollte ein gültiges Microsoft Entra Bearertoken für einen Prinzipal mit Zugriffsberechtigungen für die Cosmos DB-Datenbank sein. Wenn kein token angegeben wird, wird das Microsoft Entra Token des anfordernden Prinzipals für die Authentifizierung verwendet. |
Kontoschlüssel | Sie können den Kontoschlüssel direkt zum Argument ConnectionString hinzufügen. Dieser Ansatz ist jedoch weniger sicher, da er das Geheimnis in den Abfragetext einschließt und weniger resilient gegenüber zukünftigen Änderungen im Kontoschlüssel ist. Um die Sicherheit zu erhöhen, blenden Sie das Geheimnis als verschleiertes Zeichenfolgenliteral aus. |
Festlegen einer Beschriftungsrichtlinie
Das Plug-In stellt Dem Azure Cosmos DB-instance. Stellen Sie sicher, dass die Beschriftungsrichtlinie des Clusters Aufrufe vom Typ cosmosdb
an den CosmosDbUri-Zieltyp aktiviert.
Im folgenden Beispiel wird gezeigt, wie Die Legendenrichtlinie für Azure Cosmos DB definiert wird. Es wird empfohlen, sie auf bestimmte Endpunkte (my_endpoint1
, my_endpoint2
) zu beschränken.
[
{
"CalloutType": "CosmosDB",
"CalloutUriRegex": "my_endpoint1\\.documents\\.azure\\.com",
"CanCall": true
},
{
"CalloutType": "CosmosDB",
"CalloutUriRegex": "my_endpoint2\\.documents\\.azure\\.com",
"CanCall": true
}
]
Das folgende Beispiel zeigt einen Befehl zur Änderung der Legendenrichtlinie für cosmosdb
CalloutType.
.alter cluster policy callout @'[{"CalloutType": "cosmosdb", "CalloutUriRegex": "\\.documents\\.azure\\.com", "CanCall": true}]'
Beispiele
Abfragen von Azure Cosmos DB mit einem abfragedefiniertem Ausgabeschema
Im folgenden Beispiel wird das plug-In cosmosdb_sql_request verwendet, um eine SQL-Abfrage zu senden, während nur bestimmte Spalten ausgewählt werden. Diese Abfrage verwendet explizite Schemadefinitionen, die verschiedene Optimierungen zulassen, bevor die eigentliche Abfrage für Cosmos DB ausgeführt wird.
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)
Abfragen einer Azure Cosmos DB
Im folgenden Beispiel wird das cosmosdb_sql_request-Plug-In verwendet, um eine SQL-Abfrage zum Abrufen von Daten aus Azure Cosmos DB mithilfe von Azure Cosmos DB for NoSQL zu senden.
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.
Abfragen von Azure Cosmos DB mit Parametern
Im folgenden Beispiel werden SQL-Abfrageparameter verwendet und die Daten aus einer alternativen Region abgefragt. Weitere Informationen finden Sie unter 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'
Diese Funktion wird in Azure Monitor nicht unterstützt.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für