Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wechseln Von Diensten mithilfe der Dropdownliste "Version ". Weitere Informationen zur Navigation.
Gilt für: ✅ Microsoft Fabric ✅ Azure Data Explorer
Diese Befehle führen eine Abfrage oder einen Verwaltungsbefehl aus und nehmen die Ergebnisse der Abfrage in eine Tabelle ein. Der Unterschied zwischen diesen Befehlen besteht darin, wie vorhandene oder nicht vorhandene Tabellen und Daten behandelt werden.
| Get-Help | Wenn die Tabelle vorhanden ist | Wenn die Tabelle nicht vorhanden ist |
|---|---|---|
.set |
Der Befehl schlägt fehl. | Die Tabelle wird erstellt, und Die Daten werden aufgenommen. |
.append |
Daten werden an die Tabelle angefügt. | Der Befehl schlägt fehl. |
.set-or-append |
Daten werden an die Tabelle angefügt. | Die Tabelle wird erstellt, und Die Daten werden aufgenommen. |
.set-or-replace |
Daten ersetzen die Daten in der Tabelle. | Die Tabelle wird erstellt, und Die Daten werden aufgenommen. |
Informationen zum Abbrechen eines Abrufs aus dem Abfragebefehl finden Sie unter cancel operation.
Hinweis
Bei der Erfassung aus der Abfrage handelt es sich um eine direkte Aufnahme. Dies schließt keine automatischen Wiederholungen ein. Automatische Wiederholungen stehen beim Aufnehmen über den Datenverwaltungsdienst zur Verfügung. Verwenden Sie das Übersichtsdokument zum Aufnehmen, um zu entscheiden, welche Option für die Aufnahme am besten für Ihr Szenario geeignet ist.
Hinweis
Bei der Erfassung aus der Abfrage handelt es sich um eine direkte Aufnahme. Dies schließt keine automatischen Wiederholungen ein. Automatische Wiederholungen stehen beim Aufnehmen über den Datenverwaltungsdienst zur Verfügung.
Berechtigungen
Um unterschiedliche Aktionen für eine Tabelle auszuführen, benötigen Sie bestimmte Berechtigungen:
- Zum Hinzufügen von Zeilen zu einer vorhandenen Tabelle mit dem
.appendBefehl benötigen Sie mindestens die Berechtigungen "Table Ingestor". - Um eine neue Tabelle mit den verschiedenen
.setBefehlen zu erstellen, benötigen Sie mindestens berechtigungen für Datenbankbenutzer. - Um Zeilen in einer vorhandenen Tabelle mithilfe des
.set-or-replaceBefehls zu ersetzen, benötigen Sie mindestens die Berechtigungen des Tabellenadministrators.
Weitere Informationen zu Berechtigungen finden Sie unter Kusto rollenbasierte Zugriffssteuerung.
Syntax
(.set | .append | .set-or-append | .set-or-replace) [async] with [( ...]] =
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
| Name | Type | Erforderlich | Beschreibung |
|---|---|---|---|
| async | string |
Wenn angegeben, gibt der Befehl sofort zurück und setzt die Aufnahme im Hintergrund fort. Verwenden Sie den zurückgegebenen OperationId.show operations Befehl, um den Status und die Ergebnisse des Aufnahmeabschlusses abzurufen. |
|
| tableName | string |
✔️ | Der Name der Tabelle, in die Daten aufgenommen werden sollen. Der TableName ist immer im Kontext mit der Datenbank verknüpft. |
| propertyName, propertyValue | string |
Mindestens eine unterstützte Aufnahmeeigenschaften, die zum Steuern des Aufnahmevorgangs verwendet werden. | |
| queryOrCommand | string |
✔️ | Der Text einer Abfrage oder eines Verwaltungsbefehls, dessen Ergebnisse als Daten zum Aufnehmen verwendet werden. Nur .show Verwaltungsbefehle werden unterstützt. |
Leistungstipps
- Legen Sie die
distributedEigenschaft fest,truewenn die Menge der von der Abfrage erzeugten Daten groß ist, ein Gigabyte (GB) überschreitet und keine Serialisierung erfordert. Anschließend können mehrere Knoten die Ausgabe parallel erzeugen. Verwenden Sie dieses Flag nicht, wenn Abfrageergebnisse klein sind, da es möglicherweise viele kleine Datenshards ohne Weiteres generiert. - Die Datenaufnahme ist ein ressourcenintensiver Vorgang, der sich auf gleichzeitige Aktivitäten in der Datenbank auswirken kann, einschließlich der Ausführung von Abfragen. Vermeiden Sie die gleichzeitige Ausführung zu vieler Aufnahmebefehle.
- Beschränken Sie die Daten für die Aufnahme auf weniger als ein GB pro Aufnahmevorgang. Verwenden Sie bei Bedarf mehrere Aufnahmebefehle.
Unterstützte Erfassungseigenschaften
| Eigenschaft | Type | Beschreibung |
|---|---|---|
distributed |
bool |
Wenn trueder Befehl von allen Knoten aufgenommen wird, die die Abfrage parallel ausführen. Der Standardwert ist false. Lesen Sie Leistungstipps. |
creationTime |
string |
Der datetime Als ISO8601 stringformatierte Wert, der zum Erstellungszeitpunkt der erfassten Datenausdehnungen verwendet werden soll. Wenn keine Angabe erfolgt, wird now() verwendet. Achten Sie bei Angabe eines Werts darauf, dass die Eigenschaft Lookback in der effektiven Richtlinie für die Zusammenführung von Blöcken der Zieltabelle auf den angegebenen Wert abgestimmt ist. |
extend_schema |
bool |
Wenn true, kann der Befehl das Schema der Tabelle erweitern. Der Standardwert ist false. Diese Option betrifft nur .append-, .set-or-append- und set-or-replace-Befehle. Für diese Option sind mindestens Tabellenadministratorberechtigungen erforderlich. |
recreate_schema |
bool |
Wenn true, kann der Befehl das Schema der Tabelle neu erstellen. Der Standardwert ist false. Diese Option betrifft nur den Befehl .set-or-replace. Diese Option hat Vorrang vor der extend_schema Eigenschaft, wenn beide festgelegt sind. Für diese Option sind mindestens Tabellenadministratorberechtigungen erforderlich. |
folder |
string |
Der Ordner, der der Tabelle zugewiesen werden soll. Wenn die Tabelle bereits vorhanden ist, überschreibt diese Eigenschaft den Ordner der Tabelle. |
ingestIfNotExists |
string |
Wenn angegeben, schlägt die Aufnahme fehl, wenn die Tabelle bereits Daten mit einem ingest-by: Tag mit demselben Wert markiert hat. Weitere Informationen finden Sie unter ingest-by: Tags. |
policy_ingestiontime |
bool |
If true, the Ingestion Time Policy is enabled on the table. Der Standardwert ist true. |
tags |
string |
Ein JSON-Code string , der eine Liste von Tags darstellt, die dem erstellten Umfang zugeordnet werden sollen. |
docstring |
string |
Eine Beschreibung, die zum Dokumentieren der Tabelle verwendet wird. |
persistDetails |
Ein boolescher Wert, der, falls angegeben, angibt, dass der Befehl die detaillierten Ergebnisse für den Abruf durch den Befehl ".show operation details " beibehalten soll. Wird standardmäßig auf false festgelegt. |
with (persistDetails=true) |
Schemaüberlegungen
-
.set-or-replacebehält das Schema bei, es sei denn, eine derextend_schemaEigenschaften fürrecreate_schemadie Aufnahme ist auftrue. -
.set-or-appendund.appendBefehle behalten das Schema bei, es sei denn, dieextend_schemaAufnahmeeigenschaft ist auftrue. - Der Abgleich mit dem Resultsetschema der Zieltabelle basiert auf den Spaltentypen. Es erfolgt kein Abgleichen der Spaltennamen. Stellen Sie sicher, dass sich die Spalten des Abfrageergebnisschemas in der gleichen Reihenfolge wie die Tabelle befinden, andernfalls werden Daten in die falschen Spalten aufgenommen.
Achtung
Wenn das Schema geändert wird, erfolgt es in einer separaten Transaktion vor der tatsächlichen Datenaufnahme. Dies bedeutet, dass das Schema möglicherweise auch dann geändert wird, wenn die Daten nicht erfasst werden.
Zeichenbeschränkung
Der Befehl schlägt fehl, wenn die Abfrage einen Entitätsnamen mit dem $ Zeichen generiert. Die Entitätsnamen müssen den Benennungsregeln entsprechen, sodass das $ Zeichen entfernt werden muss, damit der Aufnahmebefehl erfolgreich ausgeführt werden kann.
In der folgenden Abfrage generiert der search Operator beispielsweise eine Spalte $table. Zum Speichern der Abfrageergebnisse verwenden Sie die Projektumbenennung , um die Spalte umzubenennen.
.set Texas <| search State has 'Texas' | project-rename tableName=$table
Rückkehr
Gibt Informationen zu den Erweiterungen zurück, die aufgrund des .set- oder .append-Befehls erstellt wurden.
Beispiele
Tabelle aus Abfragequelle erstellen und aktualisieren
Die folgende Abfrage erstellt die RecentErrors Tabelle mit demselben Schema wie LogsTable. Es wird mit allen Fehlerprotokollen aus RecentErrors der letzten Stunde aktualisiertLogsTable.
.set RecentErrors <|
LogsTable
| where Level == "Error" and Timestamp > now() - time(1h)
Erstellen und Aktualisieren einer Tabelle aus der Abfragequelle mithilfe des verteilten Flags
Im folgenden Beispiel wird eine neue Tabelle erstellt, die in der Datenbank asynchron aufgerufen wird OldExtents . Das Dataset wird voraussichtlich größer als ein GB (mehr als eine Million Zeilen) sein, sodass das verteilte Flag verwendet wird. Es wird mit OldExtents Einträgen aus der Tabelle aktualisiertExtentId, die MyExtents vor mehr als 30 Tagen erstellt wurden.
.set async OldExtents with(distributed=true) <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
An Tabelle angefügte Daten
Im folgenden Beispiel werden Einträge in der Tabelle gefiltert ExtentId , die MyExtents vor mehr als 30 Tagen erstellt wurden, und fügt die Einträge an die OldExtents Tabelle mit zugeordneten Tags an.
.append OldExtents with(tags='["TagA","TagB"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Erstellen oder Anfügen einer Tabelle mit möglicherweise vorhandenen markierten Daten
Im folgenden Beispiel wird entweder die OldExtents Tabelle asynchron angefügt oder erstellt. Es filtert ExtentId Einträge in der Tabelle, die MyExtents vor mehr als 30 Tagen erstellt wurden, und gibt die Tags an, die an die neuen Erweiterungen angefügt werden sollen.ingest-by:myTag Der ingestIfNotExists Parameter stellt sicher, dass die Erfassung nur auftritt, wenn die Daten nicht bereits in der Tabelle mit dem angegebenen Tag vorhanden sind.
.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Erstellen einer Tabelle oder Ersetzen von Daten durch zugeordnete Daten
Die folgende Abfrage ersetzt die Daten in der OldExtents Tabelle oder erstellt die Tabelle, sofern sie noch nicht vorhanden ist, durch ExtentId Einträge in der Tabelle, die MyExtents vor mehr als 30 Tagen erstellt wurden. Markieren Sie das neue Ausmaß mit ingest-by:myTag , wenn die Daten noch nicht in der Tabelle mit dem angegebenen Tag vorhanden sind.
.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Anfügen von Daten mit zugeordneten Daten
Im folgenden Beispiel werden Daten asynchron an die OldExtents Tabelle angefügt, wobei ExtentId Einträge aus der Tabelle verwendet werden, die MyExtents vor mehr als 30 Tagen erstellt wurden. Es legt eine bestimmte Erstellungszeit für die neuen Ausmaße fest.
.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Beispielausgabe
Im Folgenden finden Sie ein Beispiel für den Ausgabetyp, den Sie möglicherweise aus Ihren Abfragen sehen.
| ExtentId | OriginalSize | ExtentSize | CompressedSize | IndexSize | RowCount |
|---|---|---|---|---|---|
| 23a05ed6-376d-4119-b1fc-6493bcb05563 | 1.291 | 5882 | 1568 | 4314 | 10 |