Erfassen aus Abfrage (.set, .append, .set-or-append, .set-or-replace)
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 erfasst. |
.append |
Daten werden an die Tabelle angehängt. | Der Befehl schlägt fehl. |
.set-or-append |
Daten werden an die Tabelle angehängt. | Die Tabelle wird erstellt, und die Daten werden erfasst. |
.set-or-replace |
Daten ersetzen die Daten in der Tabelle. | Die Tabelle wird erstellt, und die Daten werden erfasst. |
Informationen zum Abbrechen eines Abrufs aus dem Abfragebefehl finden Sie unter cancel operation
.
Hinweis
Diese Aufnahmemethode ist für Die Erforschung und Prototyperstellung vorgesehen. Verwenden Sie sie nicht in Produktions- oder Volumenszenarien.
Berechtigungen
Um unterschiedliche Aktionen für eine Tabelle auszuführen, sind bestimmte Berechtigungen erforderlich:
- Zum Hinzufügen von Zeilen zu einer vorhandenen Tabelle mit dem
.append
Befehl benötigen Sie mindestens die Berechtigungen "Table Ingestor". - Um eine neue Tabelle mit den verschiedenen
.set
Befehlen zu erstellen, benötigen Sie mindestens berechtigungen für Datenbankbenutzer. - Um Zeilen in einer vorhandenen Tabelle mithilfe des
.set-or-replace
Befehls 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-replace
| | .set-or-append
| ) [async
] tableName [with
(
propertyName =
propertyValue [,
...]] <|
)
queryOrCommand
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
async | string |
Wenn angegeben, wird der Befehl zurückgegeben und die Aufnahme im Hintergrund fortgesetzt. 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. |
Hinweis
Nur .show
Verwaltungsbefehle werden unterstützt.
Unterstützte Erfassungseigenschaften
Eigenschaft | Typ | Beschreibung |
---|---|---|
creationTime |
string |
Der als ISO8601-Zeichenfolge formatierte datetime-Wert, der zum Zeitpunkt der Erstellung der erfassten Datenerweiterungen 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 |
Wenn true die Zeitaufnahmerichtlinie in der Tabelle aktiviert ist. Der Standardwert ist true . |
tags |
string |
Eine JSON-Zeichenfolge, die eine Liste von Tags darstellt, die dem erstellten Umfang zugeordnet werden sollen. |
docstring |
string |
Eine Beschreibung, die zum Dokumentieren der Tabelle verwendet wird. |
distributed |
bool |
Wenn true der Befehl von allen Knoten aufgenommen wird, die die Abfrage parallel ausführen. Der Standardwert ist false . Lesen Sie Leistungstipps. |
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-replace
behält das Schema bei, es sei denn, eine derextend_schema
Eigenschaften fürrecreate_schema
die Aufnahme ist auftrue
..set-or-append
und.append
Befehle behalten das Schema bei, es sei denn, dieextend_schema
Aufnahmeeigenschaft 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 die 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 auch dann geändert werden kann, wenn die Daten nicht aufgenommen werden.
Leistungstipps
- Eine Datenerfassung ist ein ressourcenintensiver Vorgang, der sich auf gleichzeitige Aktivitäten im Cluster auswirken kann, so auch auf das Ausführen von Abfragen. Vermeiden Sie die gleichzeitige Ausführung zu vieler Aufnahmebefehle.
- Beschränken Sie die Daten für die Aufnahme auf weniger als 1 GB pro Aufnahmevorgang. Verwenden Sie bei Bedarf mehrere Aufnahmebefehle.
- Legen Sie das
distributed
Kennzeichen festtrue
, wenn die Menge der von der Abfrage erzeugten Daten groß ist, 1 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.
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
Beispiele
Erstellen Sie eine neue Tabelle namens RecentErrors in der Datenbank, die dasselbe Schema wie LogsTable hat und alle Fehlerdatensätze der letzten Stunde enthält.
.set RecentErrors <|
LogsTable
| where Level == "Error" and Timestamp > now() - time(1h)
Erstellen Sie eine neue Tabelle namens „OldExtents“ in der Datenbank, die eine einzige Spalte namens „ExtentId“ hat und die Block-IDs aller Blöcke (Extents) in der Datenbank enthält, die vor mehr als 30 Tagen erstellt wurden. Die Datenbank enthält eine Tabelle namens „MyExtents“. Da das Dataset voraussichtlich größer als 1 GB (mehr als ~1 Millionen Zeilen) sein soll, verwenden Sie das verteilte Flag.
.set async OldExtents with(distributed=true) <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Fügen Sie Daten an die vorhandene Tabelle „OldExtents“ in der aktuellen Datenbank an, die eine einzige Spalte namens „ExtentId“ hat und die Block-IDs aller Blöcke in der Datenbank enthält, die vor mehr als 30 Tagen erstellt wurden.
Markieren Sie den neue Block mit den Tags tagA
und tagB
, basierend auf der vorhandenen Tabelle „MyExtents“.
.append OldExtents with(tags='["TagA","TagB"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Fügen Sie Daten an die Tabelle „OldExtents“ in der aktuellen Datenbank an, oder erstellen Sie die Tabelle, wenn sie noch nicht vorhanden ist. Kennzeichnen Sie den neuen Block mit ingest-by:myTag
. Führen Sie diesen Schritt nur aus, wenn die Tabelle noch keinen mit ingest-by:myTag
gekennzeichneten Block enthält, basierend auf der vorhandenen Tabelle „MyExtents“.
.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Ersetzen Sie die Daten in der Tabelle „OldExtents“ in der aktuellen Datenbank an, oder erstellen Sie die Tabelle, wenn sie noch nicht vorhanden ist. Kennzeichnen Sie den neuen Block mit ingest-by:myTag
.
.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Fügen Sie Daten an die Tabelle „OldExtents“ in der aktuellen Datenbank an, wozu Sie die Erstellungszeit für die erstellten Blöcke auf einen bestimmten Zeitpunkt in der Vergangenheit festlegen.
.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Zurückgegebene Ausgabe
Gibt Informationen zu den Erweiterungen zurück, die aufgrund des .set
- oder .append
-Befehls erstellt wurden.
Beispielausgabe
ExtentId | OriginalSize | ExtentSize | CompressedSize | IndexSize | RowCount |
---|---|---|---|---|---|
23a05ed6-376d-4119-b1fc-6493bcb05563 | 1.291 | 5882 | 1568 | 4314 | 10 |
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