Inserimento da risorsa di archiviazione
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 in scenari di produzione o di volumi elevati.
Autorizzazioni
Per eseguire questo comando, è necessario disporre almeno delle autorizzazioni Table Ingestor .
Sintassi
.ingest
[async
] into
table
TableNameSourceDataLocator [with
(
IngestionPropertyName=
IngestionPropertyValue [,
...] )
]
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | 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 stringhe di connessione di archiviazione. Una singola 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ù stringhe di connessione o inserendo da una query di una tabella esterna. |
Nota
È consigliabile usare valori letterali stringa offuscati per SourceDataPointer. Il servizio eseguirà lo scrubing delle credenziali nelle tracce interne e nei messaggi di errore.
Proprietà di inserimento
Importante
- Nei dati di inserimento in coda viene inserito in 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.
La tabella seguente elenca le proprietà supportate da Azure Esplora dati, le descrive e fornisce 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 format valore 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 format valore 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 al momento della creazione degli extent di 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 Lookback proprietà nel criterio di unione 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 includono colonne aggiuntive alla fine della tabella. |
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 valida |
folder |
Per i comandi di inserimento da query , la cartella da assegnare alla tabella. Se la tabella esiste già, questa proprietà eseguirà l'override della cartella della tabella. | with (folder="Tables/Temporary") |
format |
Formato 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 Inserimento per tag. |
Le proprietà with (ingestIfNotExists='["Part0001"]', tags='["ingest-by:Part0001"]') indicano che se i dati con il tag ingest-by:Part0001 esistono già, non completare l'inserimento corrente. Se non esiste già, questo nuovo inserimento deve avere questo tag impostato (nel caso in cui un inserimento futuro tenti di inserire nuovamente gli stessi dati). |
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 delle colonne. Per impostazione predefinita, false si presuppone . |
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 .set-or-replace comando . Questa proprietà ha la precedenza sulla extend_schema proprietà se entrambe sono impostate. |
with (recreate_schema=true) |
tags |
Elenco di tag da associare ai dati inseriti, formattati come stringa JSON | with (tags="['Tag1', 'Tag2']") |
validationPolicy |
Stringa JSON che indica quali convalide 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 è in realtà il criterio predefinito) |
zipPattern |
Utilizzare questa proprietà durante l'inserimento di dati dall'archiviazione con un archivio ZIP. Si tratta di un valore stringa che indica l'espressione regolare da usare quando si selezionano i file nell'archivio ZIP da inserire. Tutti gli altri file nell'archivio verranno ignorati. | with (zipPattern="*.csv") |
Autenticazione e autorizzazione
Ogni stringa di connessione di archiviazione indica il metodo di autorizzazione da usare per l'accesso alla risorsa di 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 dei dati dall'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 | Reader |
Token di accesso condiviso | Elenco + lettura | Questo metodo di autenticazione non è supportato in Gen1. |
token di accesso 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 | Reader |
Restituisce
Il risultato del comando è una tabella con quanti record sono presenti partizioni di dati ("extent") generate dal comando. Se non sono state generate partizioni di dati, viene restituito un singolo record con un ID di estensione vuoto (con valore zero).
Nome | Tipo | Descrizione |
---|---|---|
ExtentId | guid |
Identificatore univoco per la partizione di dati generata dal comando. |
Elemento Caricato | string |
Uno o più file di archiviazione correlati a questo record. |
Durata | timespan |
Tempo necessario per eseguire l'inserimento. |
HasErrors | bool |
Se questo record rappresenta un errore di inserimento o meno. |
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 inserita. Se necessario, i dati sono "coerced" in questo schema durante l'inserimento, non l'altro modo in cui le colonne aggiuntive vengono ignorate e le colonne mancanti vengono considerate come valori Null.
Esempio
Archiviazione BLOB di Azure con firma di accesso condiviso
Nell'esempio seguente viene indicato al cluster di leggere due BLOB da Archiviazione BLOB di Azure come file CSV e inserire il contenuto nella tabella T
. Rappresenta ...
una firma di accesso condiviso di Archiviazione di Azure 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 Gen 2
L'esempio seguente consiste nell'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 si usa l'offuscamento 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;...'
)
Azure Data Lake Storage
L'esempio seguente inserisce un singolo file da Azure Data Lake Storage (ADLS). Usa le credenziali dell'utente per accedere ad ADLS (quindi non è necessario considerare l'URI di archiviazione come contenente un segreto). Mostra 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 segreto.
.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
Nell'esempio seguente viene inserito un singolo file da Amazon S3 usando un URL presigned.
.ingest into table T ('https://bucketname.s3.us-east-1.amazonaws.com/file.csv?<<pre signed string>>')
with (format='csv')
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per