Opnemen uit query (.set, .append, .set-or-append, .set-or-replace)

Schakelen tussen services met behulp van de vervolgkeuzelijst Versie . Meer informatie over navigatie.
Van toepassing op: ✅ Microsoft Fabric ✅ Azure Data Explorer

Met deze opdrachten wordt een query of een beheeropdracht uitgevoerd en worden de resultaten van de query opgenomen in een tabel. Het verschil tussen deze opdrachten is hoe ze bestaande of niet-bestaande tabellen en gegevens behandelen.

Command Als de tabel bestaat Als de tabel niet bestaat
.set De opdracht mislukt. De tabel wordt gemaakt en de gegevens worden opgenomen.
.append Gegevens worden toegevoegd aan de tabel. De opdracht mislukt.
.set-or-append Gegevens worden toegevoegd aan de tabel. De tabel wordt gemaakt en de gegevens worden opgenomen.
.set-or-replace Gegevens vervangen de gegevens in de tabel. De tabel wordt gemaakt en de gegevens worden opgenomen.

Als u een opname wilt annuleren vanuit de queryopdracht, raadpleegt cancel operationu .

Opmerking

Opname uit query is een directe opname. Als zodanig bevat het geen automatische nieuwe pogingen. Er zijn automatische nieuwe pogingen beschikbaar bij het opnemen via de gegevensbeheerservice. Gebruik het overzichtsdocument voor opname om te bepalen welke optie de meest geschikte opnameoptie is voor uw scenario.

Opmerking

Opname uit query is een directe opname. Als zodanig bevat het geen automatische nieuwe pogingen. Er zijn automatische nieuwe pogingen beschikbaar bij het opnemen via de gegevensbeheerservice.

Permissions

Als u verschillende acties voor een tabel wilt uitvoeren, hebt u specifieke machtigingen nodig:

  • Als u rijen wilt toevoegen aan een bestaande tabel met behulp van de .append opdracht, hebt u minimaal De machtigingen van Table Ingestor nodig.
  • Als u een nieuwe tabel wilt maken met behulp van de verschillende .set opdrachten, hebt u minimaal databasegebruikersmachtigingen nodig.
  • Als u rijen in een bestaande tabel wilt vervangen met behulp van de .set-or-replace opdracht, hebt u minimaal machtigingen voor tabelbeheerder nodig.

Zie Kusto-toegangsbeheer op basis van rollen voor meer informatie over machtigingen.

Syntaxis

(.set | .append | .set-or-append | .set-or-replace) [async] tableName [with(=propertyName propertyValue [, ...]] )<|queryOrCommand

Meer informatie over syntaxisconventies.

Parameterwaarden

Naam Typologie Verplicht Description
asynchrone string Indien opgegeven, wordt de opdracht onmiddellijk geretourneerd en wordt de opname op de achtergrond voortgezet. Gebruik de geretourneerde OperationId opdracht .show operations om de voltooiingsstatus en resultaten van de opname op te halen.
tableName string ✔️ De naam van de tabel waarin gegevens moeten worden opgenomen. De tableName is altijd gerelateerd aan de database in context.
propertyName, propertyValue string Een of meer ondersteunde opnameeigenschappen die worden gebruikt om het opnameproces te beheren.
queryOrCommand string ✔️ De tekst van een query of een beheeropdracht waarvan de resultaten worden gebruikt als gegevens voor opname. Alleen .show beheeropdrachten worden ondersteund.

Prestatietips

  • Stel de distributed eigenschap in op true als de hoeveelheid gegevens die door de query wordt geproduceerd, groter is dan één gigabyte (GB) en geen serialisatie vereist. Vervolgens kunnen meerdere knooppunten parallel uitvoer produceren. Gebruik deze vlag niet wanneer queryresultaten klein zijn, omdat er mogelijk onnodig veel kleine gegevensshards worden gegenereerd.
  • Gegevensopname is een resource-intensieve bewerking die invloed kan hebben op gelijktijdige activiteiten in de database, waaronder het uitvoeren van query's. Vermijd het uitvoeren van te veel opnameopdrachten tegelijk.
  • Beperk de gegevens voor opname tot minder dan één GB per opnamebewerking. Gebruik indien nodig meerdere opnameopdrachten.

Ondersteunde opname-eigenschappen

Vastgoed Typologie Description
distributed bool Als true, de opdracht neemt op van alle knooppunten die de query parallel uitvoeren. De standaardinstelling is false. Bekijk prestatietips.
creationTime string De datetime waarde, opgemaakt als een ISO8601 string, die moet worden gebruikt tijdens het maken van de opgenomen gegevensbereiken. Als dit niet is opgegeven, now() wordt deze gebruikt. Wanneer u dit hebt opgegeven, moet u ervoor zorgen dat de Lookback eigenschap in het effectieve samenvoegbeleid voor gebieden van de doeltabel is afgestemd op de opgegeven waarde.
extend_schema bool Als truede opdracht het schema van de tabel kan uitbreiden. De standaardinstelling is false. Deze optie is alleen .appendvan toepassing op , .set-or-appenden set-or-replace opdrachten. Voor deze optie zijn ten minste beheerdersmachtigingen voor tabellen vereist.
recreate_schema bool Als truede opdracht mogelijk het schema van de tabel opnieuw maakt. De standaardinstelling is false. Deze optie is alleen van toepassing op de .set-or-replace opdracht. Deze optie heeft voorrang op de extend_schema eigenschap als beide zijn ingesteld. Voor deze optie zijn ten minste beheerdersmachtigingen voor tabellen vereist.
folder string De map die moet worden toegewezen aan de tabel. Als de tabel al bestaat, overschrijft deze eigenschap de map van de tabel.
ingestIfNotExists string Indien opgegeven, mislukt de opname als de tabel al gegevens bevat die zijn gelabeld met een ingest-by: tag met dezelfde waarde. Voor meer informatie, zie ingestie-tags.
policy_ingestiontime bool Als truehet opnametijdbeleid is ingeschakeld in de tabel. De standaardwaarde is true.
tags string Een JSON string die een lijst met tags vertegenwoordigt die moet worden gekoppeld aan de gemaakte omvang.
docstring string Een beschrijving die wordt gebruikt om de tabel te documenteren.
persistDetails Een Booleaanse waarde die, indien opgegeven, aangeeft dat de opdracht de gedetailleerde resultaten moet behouden voor het ophalen door de opdracht .show operation details . Standaardwaarde is false. with (persistDetails=true)

Overwegingen voor schema's

  • .set-or-replace behoudt het schema, tenzij een van extend_schema of recreate_schema de opname-eigenschappen is ingesteld op true.
  • .set-or-append en .append opdrachten behouden het schema, tenzij de extend_schema opname-eigenschap is ingesteld op true.
  • Het resultaatsetschema overeenkomt met dat van de doeltabel is gebaseerd op de kolomtypen. Er is geen overeenkomende kolomnamen. Zorg ervoor dat de kolommen van het queryresultaatschema dezelfde volgorde hebben als de tabel, anders worden gegevens opgenomen in de verkeerde kolommen.

Waarschuwing

Als het schema wordt gewijzigd, gebeurt dit in een afzonderlijke transactie vóór de werkelijke gegevensopname. Dit betekent dat het schema mogelijk wordt gewijzigd, zelfs als er geen gegevens kunnen worden opgenomen.

Tekenbeperking

De opdracht mislukt als de query een entiteitsnaam met het $ teken genereert. De entiteitsnamen moeten voldoen aan de naamgevingsregels, dus het $ teken moet worden verwijderd om de opnameopdracht te laten slagen.

In de volgende query genereert de search operator bijvoorbeeld een kolom $table. Als u de queryresultaten wilt opslaan, gebruikt u projectnaam om de naam van de kolom te wijzigen.

.set Texas <| search State has 'Texas' | project-rename tableName=$table

Retouren

Retourneert informatie over de gebieden die zijn gemaakt vanwege de .set of .append opdracht.

Voorbeelden

Tabel maken en bijwerken vanuit querybron

Met de volgende query wordt de RecentErrors tabel gemaakt met hetzelfde schema als LogsTable. Het wordt RecentErrors bijgewerkt met alle foutenlogboeken van LogsTable het afgelopen uur.

.set RecentErrors <|
   LogsTable
   | where Level == "Error" and Timestamp > now() - time(1h)

Tabel maken en bijwerken vanuit querybron met behulp van de gedistribueerde vlag

In het volgende voorbeeld wordt een nieuwe tabel gemaakt met de naam OldExtents in de database, asynchroon. De gegevensset is naar verwachting groter dan één GB (meer dan ongeveer één miljoen rijen), zodat de gedistribueerde vlag wordt gebruikt. Het wordt bijgewerkt OldExtents met ExtentId vermeldingen uit de MyExtents tabel die meer dan 30 dagen geleden zijn gemaakt.

.set async OldExtents with(distributed=true) <|
   MyExtents 
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Gegevens toevoegen aan tabel

In het volgende voorbeeld ExtentId worden vermeldingen in de MyExtents tabel gefilterd die meer dan 30 dagen geleden zijn gemaakt en worden de vermeldingen toegevoegd aan de OldExtents tabel met gekoppelde tags.

.append OldExtents with(tags='["TagA","TagB"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Een tabel maken of toevoegen met mogelijk bestaande getagde gegevens

In het volgende voorbeeld wordt de OldExtents tabel asynchroon toegevoegd of gemaakt. ExtentId Hiermee worden vermeldingen in de MyExtents tabel gefilterd die meer dan 30 dagen geleden zijn gemaakt en worden de tags opgegeven die moeten worden toegevoegd aan de nieuwe gebieden met ingest-by:myTag. De ingestIfNotExists parameter zorgt ervoor dat de opname alleen plaatsvindt als de gegevens nog niet bestaan in de tabel met de opgegeven tag.

.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
   MyExtents
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Tabel maken of gegevens vervangen door gekoppelde gegevens

De volgende query vervangt de gegevens in de OldExtents tabel of maakt de tabel als deze nog niet bestaat, door ExtentId vermeldingen in de MyExtents tabel die meer dan 30 dagen geleden zijn gemaakt. Tag de nieuwe omvang met ingest-by:myTag als de gegevens nog niet bestaan in de tabel met de opgegeven tag.

.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Gegevens toevoegen aan gekoppelde gegevens

In het volgende voorbeeld worden gegevens asynchroon aan de OldExtents tabel toegevoegd met behulp van ExtentId vermeldingen uit de MyExtents tabel die meer dan 30 dagen geleden zijn gemaakt. Hiermee stelt u een specifieke aanmaaktijd in voor de nieuwe gebieden.

.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId     

Voorbeelduitvoer

Hier volgt een voorbeeld van het type uitvoer dat u kunt zien in uw query's.

ExtentId OriginalSize Grootte aanpassen Gecomprimeerd IndexSize RowCount
23a05ed6-376d-4119-b1fc-6493bcb05563 1291 5882 1568 4314 10