Overzicht van continue gegevensexport
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer-
In dit artikel wordt een continue export van gegevens uit Kusto naar een externe tabel beschreven met een periodiek uitgevoerde query. De resultaten worden opgeslagen in de externe tabel, die het doel definieert, zoals Azure Blob Storage, en het schema van de geëxporteerde gegevens. Dit proces garandeert dat alle records 'exact één keer' worden geëxporteerd, met enkele uitzonderingen.
Continue export wordt standaard uitgevoerd in een gedistribueerde modus, waarbij alle knooppunten gelijktijdig worden geëxporteerd, dus het aantal artefacten is afhankelijk van het aantal knooppunten. Continue export is niet ontworpen voor streaminggegevens met lage latentie.
Als u continue gegevensexport wilt inschakelen, maakt een externe tabel en vervolgens een definitie voor continue export maken verwijst naar de externe tabel.
In sommige gevallen moet u een beheerde identiteit gebruiken om een continue exporttaak te configureren. Zie Een beheerde identiteit gebruiken om een continue exporttaak uit te voerenvoor meer informatie.
Machtigingen
Voor alle opdrachten voor continue export zijn ten minste databasebeheerder machtigingen vereist.
Richtlijnen voor continue export
uitvoerschema:
- Het uitvoerschema van de exportquery moet overeenkomen met het schema van de externe tabel waarnaar u exporteert.
Frequentie:
Continue export wordt uitgevoerd op basis van de periode die hiervoor is geconfigureerd in de eigenschap
intervalBetweenRuns
. De aanbevolen waarde voor dit interval is ten minste enkele minuten, afhankelijk van de latenties die u wilt accepteren. Het tijdsinterval kan zo laag zijn als één minuut, als de opnamesnelheid hoog is.Notitie
De
intervalBetweenRuns
fungeert alleen als aanbeveling en is niet gegarandeerd nauwkeurig. Continue export is niet geschikt voor het exporteren van periodieke aggregaties. Een configuratie vanintervalBetweenRuns
=1h
met een aggregatie per uur (T | summarize by bin(Timestamp, 1h)
) werkt bijvoorbeeld niet zoals verwacht, omdat de continue export niet precies op het uur wordt uitgevoerd. Daarom ontvangt elke bin per uur meerdere vermeldingen in de geëxporteerde gegevens.
aantal bestanden:
- Het aantal bestanden dat in elke continue export-iteratie wordt geëxporteerd, is afhankelijk van hoe de externe tabel wordt gepartitioneerd. Zie exporteren naar externe tabelopdrachtvoor meer informatie. Elke continue export-iteratie schrijft altijd naar nieuwe bestanden en voegt nooit toe aan bestaande bestanden. Als gevolg hiervan is het aantal geëxporteerde bestanden ook afhankelijk van de frequentie waarin de continue export wordt uitgevoerd. De frequentieparameter is
intervalBetweenRuns
.
- Het aantal bestanden dat in elke continue export-iteratie wordt geëxporteerd, is afhankelijk van hoe de externe tabel wordt gepartitioneerd. Zie exporteren naar externe tabelopdrachtvoor meer informatie. Elke continue export-iteratie schrijft altijd naar nieuwe bestanden en voegt nooit toe aan bestaande bestanden. Als gevolg hiervan is het aantal geëxporteerde bestanden ook afhankelijk van de frequentie waarin de continue export wordt uitgevoerd. De frequentieparameter is
externe tabelopslagaccounts:
- Voor de beste prestaties moeten de database en de opslagaccounts zich in dezelfde Azure-regio bevinden.
- Continue export werkt op een gedistribueerde manier, zodat alle knooppunten gelijktijdig worden geëxporteerd. Bij grote databases en als het geëxporteerde gegevensvolume groot is, kan dit leiden tot opslagbeperking. Het wordt aanbevolen om meerdere opslagaccounts voor de externe tabel te configureren. Zie opslagfouten tijdens exportopdrachtenvoor meer informatie.
Precies één keer exporteren
Continue export garandeert 'exact één keer' databasecursors. De query voor continue export mag geen tijdstempelfilter bevatten. Het mechanisme voor databasecursors zorgt ervoor dat records niet meer dan één keer worden verwerkt. Het toevoegen van een tijdstempelfilter in de query kan leiden tot ontbrekende gegevens in geëxporteerde gegevens.
IngestionTime-beleid moet zijn ingeschakeld voor alle tabellen waarnaar wordt verwezen in de query die 'exact eenmaal' in de export moet worden verwerkt. Het beleid is standaard ingeschakeld voor alle nieuw gemaakte tabellen.
De garantie voor 'exact eenmaal exporteren' is alleen voor bestanden die zijn gerapporteerd in de geëxporteerde artefacten opdrachtweergeven. Continue export garandeert niet dat elke record slechts eenmaal naar de externe tabel wordt geschreven. Als er een fout optreedt nadat het exporteren is gestart en sommige artefacten al naar de externe tabel zijn geschreven, bevat de externe tabel mogelijk duplicaten. Als een schrijfbewerking vóór voltooiing is afgebroken, bevat de externe tabel mogelijk beschadigde bestanden. In dergelijke gevallen worden artefacten niet verwijderd uit de externe tabel, maar worden ze niet gerapporteerd in de geëxporteerde artefactenopdracht. Het gebruik van de geëxporteerde bestanden met behulp van de show exported artifacts command
garandeert geen duplicaties en geen beschadigingen.
Exporteren uit feiten- en dimensietabellen
Standaard wordt ervan uitgegaan dat alle tabellen waarnaar in de exportquery wordt verwezen, worden feitentabellen. Daarom hebben ze het bereik van de databasecursor. De syntaxis declareert expliciet welke tabellen zijn scoped (fact) en die niet zijn scoped (dimensie). Zie de parameter over
in de opdracht maken voor meer informatie.
De exportquery bevat alleen de records die zijn toegevoegd sinds de vorige exportuitvoering. De exportquery kan dimensietabellen bevatten waarin alle records van de dimensietabel zijn opgenomen in alle exportquery's. Wanneer u joins tussen feiten- en dimensietabellen in continue export gebruikt, moet u er rekening mee houden dat records in de feitentabel slechts één keer worden verwerkt. Als de export wordt uitgevoerd terwijl records in de dimensietabellen ontbreken voor sommige sleutels, worden records voor de respectieve sleutels gemist of bevatten null-waarden voor de dimensiekolommen in de geëxporteerde bestanden. Het retourneren van gemiste of null-records is afhankelijk van of de query gebruikmaakt van inner of outer join. De eigenschap forcedLatency
in de definitie voor continue export kan nuttig zijn in dergelijke gevallen, waarbij tabellen met feiten en dimensies tegelijkertijd worden opgenomen voor overeenkomende records.
Notitie
Continue export van alleen dimensietabellen wordt niet ondersteund. De exportquery moet ten minste één feitentabel bevatten.
Continue export bewaken
Controleer de status van uw continue exporttaken met behulp van de volgende metrische gegevens voor export:
-
Continuous export max lateness
: maximale late tijd (in minuten) van continue exports in de database. Dit is de tijd tussen nu en de minimaleExportedTo
tijd van alle doorlopende exporttaken in de database. Zie.show continuous export
opdracht voor meer informatie. -
Continuous export result
: geslaagd/mislukt resultaat van elke continue exportuitvoering. Deze metrische waarde kan worden gesplitst door de naam van de continue export.
Gebruik de opdracht .show continuous export failures
om de specifieke fouten van een continue exporttaak te bekijken.
Waarschuwing
Als een continue export gedurende meer dan zeven dagen een failover uitvoert vanwege een permanente fout, wordt de export automatisch uitgeschakeld door het systeem.
Permanente fouten zijn: externe tabel is niet gevonden, komt niet overeen tussen het schema van continue exportquery en het externe tabelschema, het opslagaccount is niet toegankelijk.
Nadat de fout is opgelost, kunt u de continue export opnieuw inschakelen met behulp van de opdracht .enable continuous export
.
Resourceverbruik
- De impact van de continue export op de database is afhankelijk van de query die door de continue export wordt uitgevoerd. De meeste resources, zoals CPU en geheugen, worden gebruikt door de uitvoering van de query.
- Het aantal exportbewerkingen dat gelijktijdig kan worden uitgevoerd, wordt beperkt door de capaciteit van de gegevensexport van de database. Zie Management-opdrachten beperkenvoor meer informatie. Als de database onvoldoende capaciteit heeft om alle continue exports te verwerken, blijven sommige achter.
- De opdrachten en query's weergeven kunnen worden gebruikt om het verbruik van resources te schatten.
- Filter op
| where ClientActivityId startswith "RunContinuousExports"
om de opdrachten en query's weer te geven die zijn gekoppeld aan continue export.
- Filter op
Historische gegevens exporteren
Continue export begint alleen met het exporteren van gegevens vanaf het moment van het maken ervan. Records die vóór die tijd zijn opgenomen, moeten afzonderlijk worden geëxporteerd met behulp van de niet-continue exportopdracht. Historische gegevens kunnen te groot zijn om te worden geëxporteerd in één exportopdracht. Partitioneer de query indien nodig in verschillende kleinere batches.
Gebruik StartCursor
die door de geretourneerde opdracht continue export weergeven en alleen records exporteren where cursor_before_or_at
de cursorwaarde om duplicaten te voorkomen met gegevens die zijn geëxporteerd door continue export. Bijvoorbeeld:
.show continuous-export MyExport | project StartCursor
StartCursor |
---|
636751928823156645 |
Gevolgd door:
.export async to table ExternalBlob
<| T | where cursor_before_or_at("636751928823156645")
Continue export vanuit een tabel met beveiliging op rijniveau
Als u een doorlopende exporttaak wilt maken met een query die verwijst naar een tabel met beveiligingsbeleid op rijniveau, moet u het volgende doen:
- Geef een beheerde identiteit op als onderdeel van de continue exportconfiguratie. Zie Een beheerde identiteit gebruiken om een continue exporttaak uit te voerenvoor meer informatie.
- Gebruik imitatie verificatie voor de externe tabel waarnaar de gegevens worden geëxporteerd.
Continue export naar deltatabel - Preview
Continue export naar een deltatabel is momenteel beschikbaar als preview-versie.
Belangrijk
Partitionering van Delta-tabellen wordt niet ondersteund in continue gegevensexport.
Kusto schrijft niet naar bestaande deltatabellen als de versie van deltaprotocolschrijver hoger is dan 1.
Ga als volgt te werk om continue export naar een deltatabel te definiëren:
Maak een externe deltatabel, zoals beschreven in Externe deltatabellen maken en wijzigen in Azure Storage.
Notitie
Als het schema niet is opgegeven, wordt het automatisch afgeleid door Kusto als er al een deltatabel is gedefinieerd in de doelopslagcontainer.
Partitionering van Delta-tabellen wordt niet ondersteund.Definieer continue export naar deze tabel met behulp van de opdrachten die worden beschreven in Continue export maken of wijzigen.
Belangrijk
Het schema van de deltatabel moet worden gesynchroniseerd met de continue exportquery. Als de onderliggende deltatabel wordt gewijzigd, kan het exporteren mislukken met onverwacht gedrag.
Beperkingen
Algemeen:
- De volgende indelingen zijn toegestaan voor doeltabellen:
CSV
,TSV
,JSON
enParquet
. - Continue export is niet ontworpen om te werken via gerealiseerde weergaven, omdat een gerealiseerde weergave mogelijk wordt bijgewerkt, terwijl gegevens die naar de opslag worden geëxporteerd altijd worden toegevoegd en nooit worden bijgewerkt.
- Continue export kan niet worden gemaakt op volgdatabases omdat volgdatabases alleen-lezen zijn en continue export schrijfbewerkingen vereist.
- Records in de brontabel moeten rechtstreeks naar de tabel worden opgenomen met behulp van een updatebeleidof opnemen uit queryopdrachten. Als records naar de tabel worden verplaatst met behulp van .move extents of met .rename table, worden deze records mogelijk niet verwerkt door continue export. Zie de beperkingen die worden beschreven op de pagina Databasecursors.
- Als de artefacten die worden gebruikt door continue export zijn bedoeld om Event Grid-meldingen te activeren, raadpleegt u de sectie bekende problemen in de Documentatie van Event Grid.
cross-database en cross-cluster:
- Continue export biedt geen ondersteuning voor aanroepen tussen clusters.
- Continue export ondersteunt alleen aanroepen tussen databases voor dimensietabellen. Alle feitentabellen moeten zich in de lokale database bevinden. Zie meer informatie in Exporteren uit feiten- en dimensietabellen.
- Als de continue export database-aanroepen omvat, moet deze worden geconfigureerd met een beheerde identiteit.
cross-database en cross-Eventhouse:
- Continue export biedt geen ondersteuning voor cross-Eventhouse-aanroepen.
- Continue export ondersteunt alleen aanroepen tussen databases voor dimensietabellen. Alle feitentabellen moeten zich in de lokale database bevinden. Zie meer informatie in Exporteren uit feiten- en dimensietabellen.
beleidsregels:
- Continue export kan niet worden ingeschakeld voor een tabel met beveiligingsbeleid op rijniveau tenzij aan specifieke voorwaarden wordt voldaan. Zie Continue export uit een tabel met beveiliging op rijniveauvoor meer informatie.
- Continue export kan niet worden geconfigureerd voor een tabel met toegangsbeleid voor beperkte weergave.