.ingest i
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer
Kommandot .ingest into
matar in data i en tabell genom att "hämta" data från en eller flera molnlagringsfiler.
Kommandot kan till exempel hämta 1 000 CSV-formaterade blobar från Azure Blob Storage, parsa dem och mata in dem i en enda måltabell.
Data läggs till i tabellen utan att befintliga poster påverkas och utan att tabellens schema ändras.
Not
Den här inmatningsmetoden är avsedd för utforskning och prototyper. Använd den inte i produktions- eller högvolymscenarier.
Not
Den här inmatningsmetoden är avsedd för utforskning och prototyper. Använd den inte i produktions- eller högvolymscenarier. Mer information om inmatningsalternativ finns i Översikt över datainmatning.
Behörigheter
Du måste ha minst Table Ingestor behörighet att köra det här kommandot.
Syntax
.ingest
[async
] into
table
TableNameSourceDataLocator [with
(
IngestionPropertyName=
IngestionPropertyValue [,
...] )
]
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
async |
string |
Om det anges returnerar kommandot omedelbart och fortsätter inmatningen i bakgrunden. Resultatet av kommandot innehåller ett OperationId värde som sedan kan användas med kommandot .show operation för att hämta status och resultat för inmatningsslut. |
|
TableName | string |
✔️ | Namnet på den tabell som data ska matas in i. Tabellnamnet är alltid relativt databasen i kontext. Om inget schemamappningsobjekt anges används schemat för databasen i kontexten. |
SourceDataLocator | string |
✔️ | En enda eller kommaavgränsad lista över lagringsanslutningssträngar. En enda anslutningssträng måste referera till en enda fil som hanteras av ett lagringskonto. Inmatning av flera filer kan göras genom att ange flera anslutningssträngar eller genom att mata in från en fråga av en extern tabell. |
Not
Vi rekommenderar att du använder dolda strängliteraler för SourceDataLocators. Tjänsten rensar autentiseringsuppgifter i interna spårningar och felmeddelanden.
Egenskaper för inmatning
Viktig
I köad inmatning batchas data med hjälp av inmatningsegenskaper. Ju mer distinkta egenskaper för inmatningsmappning som används, till exempel olika ConstValue-värden, desto mer fragmenterad blir inmatningen, vilket kan leda till prestandaförsämring.
Följande tabell visar och beskriver de egenskaper som stöds och innehåller exempel:
Egenskap | Beskrivning | Exempel |
---|---|---|
ingestionMapping |
Ett strängvärde som anger hur du mappar data från källfilen till de faktiska kolumnerna i tabellen. Definiera värdet format med relevant mappningstyp. Se datamappningar. |
with (format="json", ingestionMapping = "[{\"column\":\"rownumber\", \"Properties\":{\"Path\":\"$.RowNumber\"}}, {\"column\":\"rowguid\", \"Properties\":{\"Path\":\"$.RowGuid\"}}]") (inaktuell: avroMapping , csvMapping , jsonMapping ) |
ingestionMappingReference |
Ett strängvärde som anger hur du mappar data från källfilen till de faktiska kolumnerna i tabellen med hjälp av ett namngivet mappningsprincipobjekt. Definiera värdet format med relevant mappningstyp. Se datamappningar. |
with (format="csv", ingestionMappingReference = "Mapping1") (inaktuell: avroMappingReference , csvMappingReference , jsonMappingReference ) |
creationTime |
Datetime-värdet (formaterat som en ISO8601 sträng) som ska användas när datamängderna matas in. Om det är ospecificerat används det aktuella värdet (now() ). Att åsidosätta standardvärdet är användbart när du matar in äldre data, så att kvarhållningsprincipen tillämpas korrekt. När du anger det kontrollerar du att egenskapen Lookback i måltabellens princip för effektiv omfattningssammanslagning är justerad med det angivna värdet. |
with (creationTime="2017-02-13") |
extend_schema |
Ett booleskt värde som, om det anges, instruerar kommandot att utöka schemat för tabellen (standardvärdet är false ). Det här alternativet gäller endast för kommandona .append och .set-or-append . De enda tillåtna schematilläggen har fler kolumner som lagts till i tabellen i slutet. |
Om det ursprungliga tabellschemat är (a:string, b:int) skulle ett giltigt schematillägg vara (a:string, b:int, c:datetime, d:string) , men (a:string, c:datetime) skulle inte vara giltigt |
folder |
För kommandon för inmatning från fråga mappen som ska tilldelas till tabellen. Om tabellen redan finns åsidosätter den här egenskapen tabellens mapp. | with (folder="Tables/Temporary") |
format |
Dataformatet (se dataformat som stöds). | with (format="csv") |
ingestIfNotExists |
Ett strängvärde som, om det anges, förhindrar inmatning från att lyckas om tabellen redan har data taggade med en ingest-by: tagg med samma värde. Detta säkerställer idempotent datainmatning. Mer information finns i inmatning: taggar. |
Egenskaperna with (ingestIfNotExists='["Part0001"]', tags='["ingest-by:Part0001"]') anger att om data med taggen ingest-by:Part0001 redan finns så slutför du inte den aktuella inmatningen. Om den inte redan finns bör den här nya inmatningen ha den här taggen inställd (om en framtida inmatning försöker mata in samma data igen.) |
ignoreFirstRecord |
Ett booleskt värde som, om det är inställt på true , anger att inmatning bör ignorera den första posten i varje fil. Den här egenskapen är användbar för filer i CSV och liknande format, om den första posten i filen är kolumnnamnen. Som standard antas false . |
with (ignoreFirstRecord=false) |
policy_ingestiontime |
Ett booleskt värde som, om det anges, beskriver om du vill aktivera inmatningstidsprincip i en tabell som skapas av det här kommandot. Standardvärdet är true . |
with (policy_ingestiontime=false) |
recreate_schema |
Ett booleskt värde som, om det anges, beskriver om kommandot kan återskapa schemat för tabellen. Den här egenskapen gäller endast för kommandot .set-or-replace . Den här egenskapen har företräde framför egenskapen extend_schema om båda anges. |
with (recreate_schema=true) |
tags |
En lista över taggar att associera med inmatade data, formaterad som en JSON-sträng | with (tags="['Tag1', 'Tag2']") |
TreatGzAsUncompressed |
Ett booleskt värde som, om det är inställt på true , anger att filer med tillägget .gz inte komprimeras. Den här flaggan behövs ibland vid inmatning från Amazon AWS S3. |
with (treatGzAsUncompressed=true) |
validationPolicy |
En JSON-sträng som anger vilka valideringar som ska köras vid inmatning av data som representeras med CSV-format. En förklaring av de olika alternativen finns i Datainmatning. |
with (validationPolicy='{"ValidationOptions":1, "ValidationImplications":1}') (detta är standardprincipen) |
zipPattern |
Använd den här egenskapen när du matar in data från lagring som har ett ZIP-arkiv. Det här är ett strängvärde som anger det reguljära uttryck som ska användas när du väljer vilka filer i ZIP-arkivet som ska matas in. Alla andra filer i arkivet ignoreras. | with (zipPattern="*.csv") |
Autentisering och auktorisering
Varje lagringsanslutningssträng anger den auktoriseringsmetod som ska användas för åtkomst till lagringen. Beroende på auktoriseringsmetoden kan huvudkontot behöva beviljas behörighet för den externa lagringen för att utföra inmatningen.
I följande tabell visas de autentiseringsmetoder som stöds och de behörigheter som krävs för att mata in data från extern lagring.
Autentiseringsmetod | Azure Blob Storage/Data Lake Storage Gen2 | Data Lake Storage Gen1 |
---|---|---|
personifiering | Storage Blob Data Reader | Läsare |
SAS-token (Shared Access) | Lista + läsning | Den här autentiseringsmetoden stöds inte i Gen1. |
Microsoft Entra-åtkomsttoken | ||
Åtkomstnyckel för lagringskonto | Den här autentiseringsmetoden stöds inte i Gen1. | |
hanterad identitet | Storage Blob Data Reader | Läsare |
Returnerar
Resultatet av kommandot är en tabell med lika många poster som det finns datashards ("extents") som genereras av kommandot. Om inga datashards genererades returneras en enskild post med ett tomt (nollvärdes)-omfattnings-ID.
Namn | Typ | Beskrivning |
---|---|---|
ExtentId | guid |
Den unika identifieraren för datashard som genererades av kommandot. |
ItemLoaded | string |
En eller flera lagringsfiler som är relaterade till den här posten. |
Varaktighet | timespan |
Hur lång tid det tog att utföra inmatning. |
HasErrors | bool |
Om den här posten representerar ett inmatningsfel eller inte. |
OperationId | guid |
Ett unikt ID som representerar åtgärden. Kan användas med kommandot .show operation . |
Not
Det här kommandot ändrar inte schemat för tabellen som matas in i. Vid behov "tvingas" data till det här schemat under inmatningen, inte tvärtom (extra kolumner ignoreras och saknade kolumner behandlas som null-värden).
Exempel
Azure Blob Storage med signatur för delad åtkomst
I följande exempel instrueras databasen att läsa två blobar från Azure Blob Storage som CSV-filer och mata in innehållet i tabellen T
.
...
representerar en signatur för delad åtkomst i Azure Storage (SAS) som ger läsåtkomst till varje blob. Fördunklade strängar (h
framför strängvärdena) används för att säkerställa att SAS aldrig registreras.
.ingest into table T (
h'https://contoso.blob.core.windows.net/container/file1.csv?...',
h'https://contoso.blob.core.windows.net/container/file2.csv?...'
)
Azure Blob Storage med hanterad identitet
I följande exempel visas hur du läser en CSV-fil från Azure Blob Storage och matar in innehållet i tabellen T
med hjälp av hanterad identitetsautentisering. Autentiseringen använder det hanterade identitets-ID (objekt-ID) som tilldelats Azure Blob Storage i Azure. Mer information finns i Skapa en hanterad identitet för lagringscontainrar.
.ingest into table T ('https://StorageAccount.blob.core.windows.net/Container/file.csv;managed_identity=802bada6-4d21-44b2-9d15-e66b29e4d63e')
Azure Data Lake Storage Gen 2
Följande exempel är för att mata in data från Azure Data Lake Storage Gen 2 (ADLSv2). Autentiseringsuppgifterna som används här (...
) är autentiseringsuppgifterna för lagringskontot (delad nyckel) och vi använder endast strängfördunkling för den hemliga delen av anslutningssträngen.
.ingest into table T (
'abfss://myfilesystem@contoso.dfs.core.windows.net/path/to/file1.csv;...'
)
Azure Data Lake Storage
I följande exempel matas en enda fil in från Azure Data Lake Storage (ADLS). Den använder användarens autentiseringsuppgifter för att få åtkomst till ADLS (så det finns inget behov av att behandla lagrings-URI:n som innehåller en hemlighet). Den visar också hur du anger inmatningsegenskaper.
.ingest into table T ('adl://contoso.azuredatalakestore.net/Path/To/File/file1.ext;impersonate')
with (format='csv')
Amazon S3 med en åtkomstnyckel
I följande exempel matas en enda fil från Amazon S3 in med hjälp av ett åtkomstnyckel-ID och en hemlig åtkomstnyckel.
.ingest into table T ('https://bucketname.s3.us-east-1.amazonaws.com/path/to/file.csv;AwsCredentials=AKIAIOSFODNN7EXAMPLE,wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')
with (format='csv')
Amazon S3 med en försignerad URL
I följande exempel matas en enda fil från Amazon S3 in med hjälp av en försignerad URL.
.ingest into table T ('https://bucketname.s3.us-east-1.amazonaws.com/file.csv?<<pre signed string>>')
with (format='csv')