Freigeben über


cosmosdb_sql_request plugin

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Das cosmosdb_sql_request Plug-In sendet eine SQL-Abfrage an einen Azure Cosmos DB SQL-Netzwerkendpunkt und gibt die Ergebnisse der Abfrage zurück. Dieses Plug-In ist in erster Linie für die Abfrage kleiner Datasets konzipiert, z. B. das Anreichern von Daten mit Referenzdaten, die in Azure Cosmos DB gespeichert sind. Das Plug-In wird mit dem evaluate Operator aufgerufen.

Syntax

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

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
ConnectionString string ✔️ Die Verbindungszeichenfolge, die auf die Azure Cosmos DB-Auflistung verweist, um abzufragen. Sie muss AccountEndpoint, Datenbank und Sammlung enthalten. Es kann AccountKey enthalten, wenn ein Hauptschlü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'<AccountKey>'
SqlQuery string ✔️ Die auszuführende Abfrage.
SqlParameters dynamic Das Eigenschaftenbehälterobjekt, das zusammen mit der Abfrage als Parameter übergeben werden soll. Parameternamen müssen mit @.
OutputSchema Die Namen und Typen der erwarteten Spalten der cosmosdb_sql_request Plug-In-Ausgabe. Verwenden Sie die folgende Syntax: ( ColumnName : ColumnType [, ...] ). Wenn Sie diesen Parameter angeben, werden mehrere Abfrageoptimierungen aktiviert.
Optionen dynamic Ein Eigenschaftenbehälterobjekt mit erweiterten Einstellungen. Wenn in AccountKey "ConnectionString" kein Wert 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 Optionsparameters beschrieben.

Name Typ Beschreibung
armResourceId string Die Ressourcen-ID des Azure Resource Manager der Cosmos DB-Datenbank. Wenn im Argument Verbindungszeichenfolge kein Kontoschlüssel angegeben wird, ist dieses Feld erforderlich. In einem solchen Fall wird die armResourceId Authentifizierung bei Cosmos DB verwendet.
Beispiel: armResourceId='/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroup>/providers/Microsoft.DocumentDb/databaseAccounts/<DatabaseAccount>'
token string Ein Microsoft Entra-Zugriffstoken eines Prinzipals mit Zugriff auf die Cosmos DB-Datenbank. Dieses Token wird zusammen mit der armResourceId Authentifizierung beim Azure Resource Manager verwendet. Wenn nicht angegeben, wird das Token des Prinzipals, der die Abfrage erstellt hat, verwendet.

Wenn armResourceId nicht angegeben, wird das Token direkt für den Zugriff auf die Cosmos DB-Datenbank verwendet. Weitere Informationen zur Tokenauthentifizierungsmethode finden Sie unter Authentifizierung und Autorisierung.
preferredLocations string Der Bereich, aus dem die Daten abfragt werden sollen.
Beispiel: ['East US']

Authentifizierung und Autorisierung

Um einen Azure Cosmos DB SQL-Netzwerkendpunkt zu autorisieren, müssen Sie die Autorisierungsinformationen angeben. Die folgende Tabelle enthält die unterstützten Authentifizierungsmethoden und die Beschreibung für die Verwendung dieser Methode.

Authentifizierungsmethode Beschreibung
Verwaltete Identität (empfohlen) An die Verbindungszeichenfolge anfügenAuthentication="Active Directory Managed Identity";User Id={object_id};. Die Anforderung wird im Auftrag einer verwalteten Identität gestellt, die über die entsprechenden Berechtigungen für die Datenbank verfügen muss.
Um die verwaltete Identitätsauthentifizierung zu aktivieren, müssen Sie die verwaltete Identität zu Ihrem Cluster hinzufügen und die Richtlinie für verwaltete Identitäten ändern. Weitere Informationen finden Sie unter Verwaltete Identitätsrichtlinie.
Azure Resource Manager-Ressourcen-ID Für diese Authentifizierungsmethode ist die Angabe der armResourceId Optionen und optional erforderlichtoken. Das armResourceId Identifiziert das Cosmos DB-Datenbankkonto und muss token ein gültiges Microsoft Entra-Bearertoken für einen Prinzipal mit Zugriffsberechtigungen für die Cosmos DB-Datenbank sein. Wenn keine 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 den geheimen Schlüssel in den Abfragetext einschließt und weniger widerstandsfähig gegenüber zukünftigen Änderungen im Kontoschlüssel ist. Um die Sicherheit zu verbessern, blenden Sie das Geheimnis als verschleiertes Zeichenfolgenliteral aus.
Token Sie können einen Tokenwert in den Plug-In-Optionen hinzufügen. Das Token muss zu einem Prinzipal mit relevanten Berechtigungen gehören. Um die Sicherheit zu verbessern, blenden Sie das Token als verschleierte Zeichenfolgenliteral aus.

Festlegen der Beschriftungsrichtlinie

Das Plug-In führt Legenden an die Azure Cosmos DB-Instanz aus. Stellen Sie sicher, dass die Popuprichtlinie des Clusters Aufrufe vom Typ cosmosdb an den Ziel-CosmosDbUri aktiviert.

Das folgende Beispiel zeigt, wie die Popuprichtlinie für Azure Cosmos DB definiert wird. Es wird empfohlen, es 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 Ändern des Popuprichtlinienbefehls für cosmosdb CalloutType.

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

Beispiele

In den folgenden Beispielen wird Platzhaltertext in Klammern verwendet.

Abfragen von Azure Cosmos DB mit einem abfragedefinierten 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 tatsächliche Abfrage für Cosmos DB ausgeführt wird.

evaluate cosmosdb_sql_request(
  'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=<MyDatabase>;Collection=<MyCollection>;AccountKey='h'<AccountKey>',
  'SELECT c.Id, c.Name from c') : (Id:long, Name:string) 

Abfragen einer Azure Cosmos DB

Im folgenden Beispiel wird das Plug-In cosmosdb_sql_request verwendet, um eine SQL-Abfrage zu senden, um Daten aus Azure Cosmos DB mithilfe seiner Azure Cosmos DB für NoSQL abzurufen.

evaluate cosmosdb_sql_request(
  'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=<MyDatabase>;Collection=<MyCollection>;AccountKey='h'<AccountKey>',
  '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 einem alternativen Bereich abgefragt. Weitere Informationen finden Sie unter preferredLocations.

evaluate cosmosdb_sql_request(
   'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=<MyDatabase>;Collection=<MyCollection>;AccountKey='h'<AccountKey>',
    "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'

Abfragen von Azure Cosmos DB und Verknüpfen von Daten mit einer Datenbanktabelle

Im folgenden Beispiel werden Partnerdaten aus einer Azure Cosmos DB mit Partnerdaten in einer Datenbank mithilfe des Partner Felds verknüpft. Sie führt zu einer Liste von Partnern mit ihren Telefonnummern, der Website und der Kontakt-E-Mail-Adresse, die nach Partnername sortiert ist.

evaluate cosmosdb_sql_request(
    'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=<MyDatabase>;Collection=<MyCollection>;AccountKey='h'<AccountKey>',
    "SELECT c.id, c.Partner, c. phoneNumber FROM c') : (Id:long, Partner:string, phoneNumber:string) 
| join kind=innerunique Partner on Partner
| project id, Partner, phoneNumber, website, Contact
| sort by Partner

Abfragen von Azure Cosmos DB mithilfe der Tokenauthentifizierung

Im folgenden Beispiel werden Partnerdaten aus einer Azure Cosmos DB mit Partnerdaten in einer Datenbank mithilfe des Partner Felds verknüpft. Sie führt zu einer Liste von Partnern mit ihren Telefonnummern, der Website und der Kontakt-E-Mail-Adresse, die nach Partnername sortiert ist.

evaluate cosmosdb_sql_request(
    'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=<MyDatabase>;Collection=<MyCollection>;',
    "SELECT c.Id, c.Name, c.City FROM c",
    dynamic(null),
    dynamic({'token': h'abc123...'})
) : (Id:long, Name:string, City:string)

Abfragen von Azure Cosmos DB mit Azure Resource Manager-Ressourcen-ID für die Authentifizierung

Im folgenden Beispiel wird die Azure Resource Manager-Ressourcen-ID für die Authentifizierung und das Microsoft Entra-Token des anfordernden Prinzipals verwendet, da kein Token angegeben ist. Sie sendet eine SQL-Abfrage, während sie nur bestimmte Spalten auswählt und explizite Schemadefinitionen angibt.

evaluate cosmosdb_sql_request(
    'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=<MyDatabase>;Collection=<MyCollection>;',
    "SELECT c.Id, c.Name, c.City FROM c",
    dynamic({'armResourceId': '/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroup>/providers/Microsoft.DocumentDb/databaseAccounts/<DatabaseAccount>'})
) : (Id:long, Name:string, City:string)