Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
.appendopdracht, hebt u minimaal De machtigingen van Table Ingestor nodig. - Als u een nieuwe tabel wilt maken met behulp van de verschillende
.setopdrachten, hebt u minimaal databasegebruikersmachtigingen nodig. - Als u rijen in een bestaande tabel wilt vervangen met behulp van de
.set-or-replaceopdracht, 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
distributedeigenschap in optrueals 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-replacebehoudt het schema, tenzij een vanextend_schemaofrecreate_schemade opname-eigenschappen is ingesteld optrue. -
.set-or-appenden.appendopdrachten behouden het schema, tenzij deextend_schemaopname-eigenschap is ingesteld optrue. - 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 |