Inserimento da risorsa di archiviazione
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati
Il .ingest into
comando inserisce i dati in una tabella "pull" dei dati da uno o più file di archiviazione cloud.
Ad esempio, il comando può recuperare 1000 BLOB in formato CSV da Archiviazione BLOB di Azure, analizzarli e inserirli insieme in una singola tabella di destinazione.
I dati vengono aggiunti alla tabella senza influire sui record esistenti e senza modificare lo schema della tabella.
Nota
Questo metodo di inserimento è destinato all'esplorazione e alla creazione di prototipi. Non usarlo negli scenari di produzione o di volumi elevati.
Autorizzazioni
Per eseguire questo comando, è necessario disporre almeno delle autorizzazioni Table Ingestor .
Sintassi
.ingest
[async
] into
table
TableName SourceDataLocator [with
(
IngestionPropertyName =
IngestionPropertyValue [,
...] ] )
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
async |
string |
Se specificato, il comando restituisce immediatamente e continua l'inserimento in background. I risultati del comando includono un OperationId valore che può quindi essere usato con il .show operation comando per recuperare lo stato e i risultati del completamento dell'inserimento. |
|
TableName | string |
✔️ | Nome della tabella in cui inserire i dati. Il nome della tabella è sempre relativo al database nel contesto. Se non viene fornito alcun oggetto di mapping dello schema, viene utilizzato lo schema del database nel contesto. |
SourceDataLocator | string |
✔️ | Un singolo elenco delimitato da virgole di stringa di connessione di archiviazione. Un singolo stringa di connessione deve fare riferimento a un singolo file ospitato da un account di archiviazione. L'inserimento di più file può essere eseguito specificando più stringa di connessione o inserendo da una query di una tabella esterna. |
Nota
È consigliabile usare valori letterali stringa offuscati per SourceDataLocators. Il servizio eseguirà lo scrub delle credenziali nelle tracce interne e nei messaggi di errore.
Proprietà di inserimento
Importante
Nei dati di inserimento in coda viene eseguito il batch usando le proprietà di inserimento. Le proprietà di mapping di inserimento più distinte usate, ad esempio valori ConstValue diversi, diventano più frammentate l'inserimento, il che può causare una riduzione delle prestazioni.
Nella tabella seguente sono elencate e descritte le proprietà supportate e vengono forniti esempi:
Proprietà | Descrizione | Esempio |
---|---|---|
ingestionMapping |
valore stringa che indica come eseguire il mapping dei dati dal file di origine alle colonne effettive della tabella. Definire il valore format con il tipo di mapping pertinente. Vedere Mapping dei dati. |
with (format="json", ingestionMapping = "[{\"column\":\"rownumber\", \"Properties\":{\"Path\":\"$.RowNumber\"}}, {\"column\":\"rowguid\", \"Properties\":{\"Path\":\"$.RowGuid\"}}]") (deprecato: avroMapping , csvMapping , jsonMapping ) |
ingestionMappingReference |
valore stringa che indica come eseguire il mapping dei dati dal file di origine alle colonne effettive della tabella tramite un oggetto criteri di mapping denominato. Definire il valore format con il tipo di mapping pertinente. Vedere Mapping dei dati. |
with (format="csv", ingestionMappingReference = "Mapping1") (deprecato: avroMappingReference , csvMappingReference , jsonMappingReference ) |
creationTime |
Valore datetime, formattato come stringa ISO8601, da usare come ora di creazione degli extent dei dati inseriti. Se non specificato, viene usato il valore corrente (now() ). L'override del valore predefinito è utile quando si inseriscono dati meno recenti, in modo che i criteri di conservazione vengano applicati correttamente. Se specificato, assicurarsi che la proprietà Lookback nel criterio di unione degli extent effettivi della tabella di destinazione sia allineata al valore specificato. |
with (creationTime="2017-02-13") |
extend_schema |
valore booleano che, se specificato, indica al comando di estendere lo schema della tabella (il valore predefinito è false ). Questa opzione è valida solo per i comandi .append e .set-or-append . Le uniche estensioni dello schema consentite hanno più colonne aggiunte alla tabella alla fine. |
Se lo schema della tabella originale è (a:string, b:int) , un'estensione dello schema valida sarebbe (a:string, b:int, c:datetime, d:string) , ma (a:string, c:datetime) non sarebbe valido |
folder |
Per i comandi di inserimento da query, la cartella da assegnare alla tabella. Se la tabella esiste già, questa proprietà esegue l'override della cartella della tabella. | with (folder="Tables/Temporary") |
format |
Formato dei dati (vedere Formati di dati supportati). | with (format="csv") |
ingestIfNotExists |
valore stringa che, se specificato, impedisce il completamento dell'inserimento se la tabella contiene già dati contrassegnati con un tag ingest-by: con lo stesso valore. In questo modo si garantisce un inserimento dati idempotente. Per altre informazioni, vedere Tag ingest-by. |
Ad esempio, le proprietà with (ingestIfNotExists='["Part0001"]', tags='["ingest-by:Part0001"]') indicano che se esistono già dati con il tag ingest-by:Part0001 , l'inserimento corrente non viene completato. Se i dati non esistono già, questo nuovo inserimento deve avere questo tag impostato, nel caso in cui un inserimento futuro tenti di inserire nuovamente gli stessi dati in un secondo tempo. |
ignoreFirstRecord |
valore booleano che, se impostato su true , indica che l'inserimento deve ignorare il primo record di ogni file. Questa proprietà è utile per i file in CSV e formati simili, se il primo record nel file è costituito dai nomi di colonna. Per impostazione predefinita, questo valore è false . |
with (ignoreFirstRecord=false) |
policy_ingestiontime |
valore booleano che, se specificato, indica se abilitare i criteri del tempo di inserimento su una tabella creata da questo comando. Il valore predefinito è true . |
with (policy_ingestiontime=false) |
recreate_schema |
valore booleano che, se specificato, indica se il comando può ricreare lo schema della tabella. Questa proprietà si applica solo al comando .set-or-replace . Questa proprietà ha la precedenza sulla proprietà extend_schema se sono impostati entrambi. |
with (recreate_schema=true) |
tags |
Elenco di tag da associare ai dati inseriti, formattati come stringa JSON. | with (tags="['Tag1', 'Tag2']") |
TreatGzAsUncompressed |
Valore booleano che, se impostato su true , indica che i file con estensione .gz non vengono compressi. Questo flag è talvolta necessario quando si inserisce da Amazon AWS S3. |
with (treatGzAsUncompressed=true) |
validationPolicy |
Stringa JSON che indica le convalide da eseguire durante l'inserimento di dati rappresentati usando il formato CSV. Per una spiegazione delle diverse opzioni, vedere Inserimento dati. | with (validationPolicy='{"ValidationOptions":1, "ValidationImplications":1}') (questo è il criterio predefinito) |
zipPattern |
Usare questa proprietà quando si inseriscono dati dall'archivio con un archivio ZIP. Si tratta di un valore di stringa che indica l'espressione regolare da usare per selezionare i file dell'archivio ZIP da inserire. Tutti gli altri file nell'archivio vengono ignorati. | with (zipPattern="*.csv") |
Autenticazione e autorizzazione
Ogni stringa di connessione di archiviazione indica il metodo di autorizzazione da usare per l'accesso all'archiviazione. A seconda del metodo di autorizzazione, potrebbe essere necessario concedere all'entità le autorizzazioni per l'archiviazione esterna per eseguire l'inserimento.
Nella tabella seguente sono elencati i metodi di autenticazione supportati e le autorizzazioni necessarie per l'inserimento di dati da una risorsa di archiviazione esterna.
Metodo di autenticazione | Archiviazione BLOB di Azure/Data Lake Storage Gen2 | Data Lake Storage Gen1 |
---|---|---|
Rappresentazione | Lettore dei dati del BLOB di archiviazione | Lettore |
Token (SAS) di accesso condiviso | Elenco e lettura | Questo metodo di autenticazione non è supportato in Gen1. |
Token di accesso di Microsoft Entra | ||
Chiave di accesso dell'account di archiviazione | Questo metodo di autenticazione non è supportato in Gen1. | |
Identità gestita | Lettore dei dati del BLOB di archiviazione | Lettore |
Valori restituiti
Il risultato del comando è una tabella con un numero di record pari a quello delle partizioni di dati ("extent") generate dal comando. Se non sono state generate partizioni di dati, viene restituito un singolo record con un ID extent vuoto (con valori zero).
Nome | Tipo | Descrizione |
---|---|---|
ExtentId | guid |
Identificatore univoco per la partizione di dati generata dal comando . |
ItemLoaded | string |
Uno o più file di archiviazione correlati a questo record. |
Durata | timespan |
Tempo necessario per eseguire l'inserimento. |
HasErrors | bool |
Indica se questo record rappresenta o meno un errore di inserimento. |
OperationId | guid |
ID univoco che rappresenta l'operazione. Può essere usato con il .show operation comando . |
Nota
Questo comando non modifica lo schema della tabella in cui viene inserita. Se necessario, i dati vengono "forzati" in questo schema durante l'inserimento, non in altro modo (le colonne aggiuntive vengono ignorate e le colonne mancanti vengono considerate come valori Null).
Esempi
Archiviazione BLOB di Azure con firma di accesso condiviso
L'esempio seguente indica al database di leggere due BLOB da Archiviazione BLOB di Azure come file CSV e inserire il contenuto nella tabella T
. Rappresenta ...
un Archiviazione di Azure firma di accesso condiviso (SAS) che consente l'accesso in lettura a ogni BLOB. Si noti anche l'uso di stringhe offuscate (davanti h
ai valori stringa) per assicurarsi che la firma di accesso condiviso non venga mai registrata.
.ingest into table T (
h'https://contoso.blob.core.windows.net/container/file1.csv?...',
h'https://contoso.blob.core.windows.net/container/file2.csv?...'
)
Archiviazione BLOB di Azure con identità gestita
Nell'esempio seguente viene illustrato come leggere un file CSV da Archiviazione BLOB di Azure e inserire il contenuto nella tabella T
usando l'autenticazione dell'identità gestita. Per altre informazioni sul metodo di autenticazione dell'identità gestita, vedere Panoramica dell'autenticazione dell'identità gestita.
.ingest into table T ('https://StorageAccount.blob.core.windows.net/Container/file.csv;managed_identity=802bada6-4d21-44b2-9d15-e66b29e4d63e')
Azure Data Lake Storage Gen2
L'esempio seguente è relativo all'inserimento di dati da Azure Data Lake Storage Gen 2 (ADLSv2). Le credenziali usate qui (...
) sono le credenziali dell'account di archiviazione (chiave condivisa) e viene usata l'offuscamento della stringa solo per la parte privata del stringa di connessione.
.ingest into table T (
'abfss://myfilesystem@contoso.dfs.core.windows.net/path/to/file1.csv;...'
)
Archiviazione di Azure Data Lake
L'esempio seguente inserisce un singolo file da Azure Data Lake Storage (ADLS). Usa le credenziali dell'utente per accedere ad ADLS, pertanto non è necessario considerare l'URI di archiviazione come contenente un segreto. Illustra anche come specificare le proprietà di inserimento.
.ingest into table T ('adl://contoso.azuredatalakestore.net/Path/To/File/file1.ext;impersonate')
with (format='csv')
Amazon S3 con una chiave di accesso
L'esempio seguente inserisce un singolo file da Amazon S3 usando un ID chiave di accesso e una chiave di accesso privata.
.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 con un URL prefirmato
L'esempio seguente inserisce un singolo file da Amazon S3 usando un URL prefirmato.
.ingest into table T ('https://bucketname.s3.us-east-1.amazonaws.com/file.csv?<<pre signed string>>')
with (format='csv')