View a markdown version of this page

Connessione di dati in più file in Amazon S3 - AWS Glue DataBrew Guida per gli sviluppatori

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connessione di dati in più file in Amazon S3

Con la DataBrew console, puoi navigare tra i bucket e le cartelle di Amazon S3 e scegliere un file per il tuo set di dati. Tuttavia, non è necessario che un set di dati sia limitato a un solo file.

Supponiamo di avere un bucket S3 denominato my-databrew-bucket che contiene una cartella denominata. databrew-input Supponiamo che in quella cartella siano presenti diversi file JSON, tutti con lo stesso formato di file e la stessa estensione. .json Sulla console, è possibile specificare un URL di origine di. s3://my-databrew-bucket/databrew-input/ Sulla DataBrew console, puoi quindi scegliere questa cartella. Il set di dati è composto da tutti i file JSON in quella cartella.

DataBrew può elaborare tutti i file in una cartella S3, ma solo se sono soddisfatte le seguenti condizioni:

  • Tutti i file nella cartella hanno lo stesso formato.

  • Tutti i file della cartella hanno la stessa estensione.

Per ulteriori informazioni sui formati di file e sulle estensioni supportati, consultaDataBrew input formats.

Schemi quando si utilizzano più file come set di dati

Quando si utilizzano più file come DataBrew set di dati, gli schemi devono essere gli stessi in tutti i file. In caso contrario, Project Workspace tenta automaticamente di scegliere uno degli schemi tra più file e cerca di conformare il resto dei file del set di dati a quello schema. Questo comportamento fa sì che la vista mostrata durante Project Workspace sia irregolare e, di conseguenza, anche l'output del lavoro sarà irregolare.

Se i file devono avere schemi diversi, è necessario creare più set di dati e profilarli separatamente.

Utilizzo di percorsi parametrizzati per Amazon S3

In alcuni casi, potresti voler creare un set di dati con file che seguono una determinata convenzione di denominazione o un set di dati che può estendersi su più cartelle Amazon S3. Oppure potresti voler riutilizzare lo stesso set di dati per dati strutturati in modo identico che vengono generati periodicamente in una posizione S3 con un percorso che dipende da determinati parametri. Un esempio è un percorso denominato in base alla data di produzione dei dati.

DataBrew supporta questo approccio con percorsi S3 parametrizzati. Un percorso con parametri è un URL Amazon S3 contenente espressioni regolari o parametri di percorso personalizzati o entrambi.

Definizione di un set di dati con un percorso S3 utilizzando espressioni regolari

Le espressioni regolari nel percorso possono essere utili per abbinare più file da una o più cartelle e allo stesso tempo filtrare i file non correlati in tali cartelle.

Ecco un paio di esempi:

  • Definisci un set di dati che include tutti i file JSON da una cartella il cui nome inizia con. invoice

  • Definisci un set di dati che includa tutti i file nelle cartelle con 2020 i loro nomi.

È possibile implementare questo tipo di approccio utilizzando espressioni regolari in un percorso S3 del set di dati. Queste espressioni regolari possono sostituire qualsiasi sottostringa nella chiave dell'URL S3 (ma non il nome del bucket).

Come esempio di chiave in un URL S3, vedi quanto segue. Qui my-bucket c'è il nome del bucket, US East (Ohio) è la AWS regione e il nome puppy.png chiave.

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

In un percorso S3 parametrizzato, tutti i caratteri compresi tra due parentesi angolari (<e>) vengono trattati come espressioni regolari. Due esempi sono i seguenti:

  • s3://my-databrew-bucket/databrew-input/invoice<.*>/data.jsoncorrisponde a tutti i file denominatidata.json, all'interno di tutte le sottocartelle databrew-input i cui nomi iniziano coninvoice.

  • s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/corrisponde a tutti i file contenuti nelle cartelle il 2020 cui nome è presente.

In questi esempi, .* corrisponde a zero o più caratteri.

Nota

Puoi usare espressioni regolari solo nella parte fondamentale del percorso S3, la parte che segue il nome del bucket. Quindi s3://my-databrew-bucket/<.*>-input/ è valido, ma non lo è. s3://my-<.*>-bucket/<.*>-input/

Ti consigliamo di testare le espressioni regolari per assicurarti che corrispondano solo agli URL S3 che desideri e non a quelli che non desideri.

Ecco alcuni altri esempi di espressioni regolari:

  • <\d{2}>corrisponde a una stringa composta esattamente da due cifre consecutive, ad esempio 07 o03, ma non1a2.

  • <[a-z]+.*>corrisponde a una stringa che inizia con una o più lettere latine minuscole e contiene zero o più altri caratteri dopo di essa. Un esempio èa3, o abc/defa-z, ma no. A2

  • <[^/]+>corrisponde a una stringa che contiene qualsiasi carattere tranne una barra (/). In un URL S3, le barre vengono utilizzate per separare le cartelle nel percorso.

  • <.*=.*>corrisponde a una stringa che contiene un segno di uguale (=), ad esempiomonth=02, o, ma no. abc/day=2 =10 test

  • <\d.*\d>corrisponde a una stringa che inizia e finisce con una cifra e può contenere qualsiasi altro carattere tra le cifre, ad esempio, o01-02-03, 1abc2 ma no. 2020/Jul/21 123a

Definizione di un set di dati con un percorso S3 utilizzando parametri personalizzati

La definizione di un set di dati parametrizzato utilizzando parametri personalizzati offre vantaggi rispetto all'utilizzo di espressioni regolari quando potresti voler fornire parametri per una posizione S3:

  • È possibile ottenere gli stessi risultati ottenuti con un'espressione regolare, senza dover conoscere la sintassi delle espressioni regolari. È possibile definire i parametri utilizzando termini familiari come «inizia con» e «contiene».

  • Quando definisci un set di dati dinamico utilizzando i parametri nel percorso, puoi includere un intervallo di tempo nella definizione, ad esempio «ultimo mese» o «ultime 24 ore». In questo modo, la definizione del set di dati verrà utilizzata in seguito con i nuovi dati in entrata.

Ecco alcuni esempi di quando potresti voler utilizzare set di dati dinamici:

  • Per connettere più file partizionati in base alla data dell'ultimo aggiornamento o ad altri attributi significativi in un unico set di dati. È quindi possibile acquisire questi attributi di partizione come colonne aggiuntive in un set di dati.

  • Per limitare i file in un set di dati alle posizioni S3 che soddisfano determinate condizioni. Ad esempio, supponiamo che il percorso S3 contenga cartelle basate sulla data come. folder/2021/04/01/ In questo caso, puoi parametrizzare la data e limitarla a un determinato intervallo, ad esempio «tra il 01 marzo 2021 e il 01 aprile 2021" o «Settimana scorsa».

Per definire un percorso utilizzando i parametri, definisci i parametri e aggiungili al percorso utilizzando il seguente formato:

s3://my-databrew-bucket/some-folder/{parameter1}/file-{parameter2}.json

Nota

Come per le espressioni regolari in un percorso S3, puoi usare i parametri solo nella parte chiave del percorso, la parte che segue il nome del bucket.

Nella definizione di un parametro sono necessari due campi, nome e tipo. Il tipo può essere String, Number o Date. I parametri di tipo Date devono avere una definizione del formato della data in modo da DataBrew poter interpretare e confrontare correttamente i valori della data. Facoltativamente, è possibile definire le condizioni di corrispondenza per un parametro. Puoi anche scegliere di aggiungere i valori corrispondenti di un parametro come colonna al tuo set di dati quando viene caricato da un DataBrew processo o da una sessione interattiva.

Esempio

Consideriamo un esempio di definizione di un set di dati dinamico utilizzando i parametri nella DataBrew console. In questo esempio, supponiamo che i dati di input vengano scritti regolarmente in un bucket S3 utilizzando posizioni come queste:

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-31.csv

Qui ci sono due parti dinamiche: un prefisso internazionale, ad esempio US, e una data nel nome del file, ad esempio 30-03-2021. Qui puoi applicare la stessa ricetta di pulizia per tutti i file. Supponiamo che tu voglia eseguire il tuo lavoro di pulizia ogni giorno. Di seguito è riportato come definire un percorso parametrizzato per questo scenario:

  1. Accedere a un file specifico.

  2. Quindi seleziona una parte variabile, ad esempio una data, e sostituiscila con un parametro. In questo caso, sostituisci una data.

    Percorso S3 con data 2021-03-23 evidenziato per la sostituzione con un parametro.
  3. Apri il menu contestuale (fai clic con il pulsante destro del mouse) per Crea parametro personalizzato e imposta le relative proprietà:

    • Nome: data del rapporto

    • Tipo: data

    • Formato della data: yyyy- MM-dd (selezionato tra i formati predefiniti)

    • Condizioni (intervallo di tempo): Ultime 24 ore

    • Aggiungi come colonna: true (selezionato)

    Mantieni gli altri campi con i valori predefiniti.

  4. Scegli Create (Crea).

Dopo averlo fatto, viene visualizzato il percorso aggiornato, come nella schermata seguente.

Percorso S3 con segnaposto parametrico che mostra 6 file corrispondenti trovati nel bucket.

Ora puoi fare lo stesso per il prefisso internazionale e parametrizzarlo come segue:

  • Nome: prefisso internazionale

  • Tipo: String

  • Aggiungi come colonna: true (selezionato)

Non è necessario specificare condizioni se tutti i valori sono pertinenti. Nella new-cases cartella, ad esempio, abbiamo solo sottocartelle con codici nazionali, quindi non sono necessarie condizioni. Se hai altre cartelle da escludere, potresti utilizzare la seguente condizione.

Campo con valori di tipo stringa contenente il modello regex A-Z seguito da 2 tra parentesi.

Questo approccio limita le sottocartelle dei nuovi casi a contenere due caratteri latini maiuscoli.

Dopo questa parametrizzazione, hai solo i file corrispondenti nel nostro set di dati e puoi scegliere Crea set di dati.

Nota

Quando si utilizzano intervalli di tempo relativi in condizioni, gli intervalli di tempo vengono valutati al momento del caricamento del set di dati. Questo vale sia che si tratti di intervalli di tempo predefiniti come «Ultime 24 ore» o intervalli di tempo personalizzati come «5 giorni fa». Questo approccio di valutazione si applica indipendentemente dal fatto che il set di dati venga caricato durante l'inizializzazione di una sessione interattiva o durante l'avvio di un processo.

Dopo aver scelto Crea set di dati, il set di dati dinamico è pronto per l'uso. Ad esempio, è possibile utilizzarlo prima per creare un progetto e definire una ricetta di pulizia utilizzando una sessione interattiva. DataBrew È quindi possibile creare un processo programmato per l'esecuzione giornaliera. Questo processo potrebbe applicare la ricetta di pulizia ai file del set di dati che soddisfano le condizioni dei parametri al momento dell'avvio del lavoro.

Condizioni supportate per set di dati dinamici

Puoi utilizzare le condizioni per filtrare i file S3 corrispondenti utilizzando i parametri o l'attributo della data dell'ultima modifica.

Di seguito, puoi trovare elenchi di condizioni supportate per ogni tipo di parametro.

Condizioni utilizzate con i parametri String
Nome in DataBrew SDK Sinonimi SDK Nome nella console DataBrew Description

è

eq, ==

È esattamente

Il valore del parametro è uguale al valore fornito nella condizione.

non è

non eq,! =

Is not (Non è)

Il valore del parametro non è lo stesso del valore fornito nella condizione.

contiene

Contiene

Il valore di stringa del parametro contiene il valore fornito nella condizione.

non contiene

Non contiene

Il valore di stringa del parametro non contiene il valore fornito nella condizione.

inizia_con

Inizia con

Il valore di stringa del parametro inizia con il valore fornito nella condizione.

not starts_with

Non inizia con

Il valore di stringa del parametro non inizia con il valore fornito nella condizione.

fine_con

Ends with

Il valore di stringa del parametro termina con il valore fornito nella condizione.

non finisce con

Non termina con

Il valore di stringa del parametro non termina con il valore fornito nella condizione.

fiammiferi

Corrispondenze

Il valore del parametro corrisponde all'espressione regolare fornita nella condizione.

non corrisponde

Non corrisponde

Il valore del parametro non corrisponde all'espressione regolare fornita nella condizione.

Nota

Tutte le condizioni per i parametri String utilizzano il confronto con distinzione tra maiuscole e minuscole. Se non sei sicuro del tipo di maiuscole/minuscole utilizzato in un percorso S3, puoi utilizzare la condizione «matches» con un valore di espressione regolare che inizia con. (?i) In questo modo si ottiene un confronto senza distinzione tra maiuscole e minuscole.

Ad esempio, supponete di volere che il parametro di stringa inizi conabc, ma che Abc sia ABC anche possibile. In questo caso, puoi utilizzare la condizione «matches» con (?i)^abc come valore della condizione.

Condizioni utilizzate con i parametri Number
Nome nell' DataBrew SDK Sinonimi SDK Nome nella console DataBrew Description

è

eq, ==

È esattamente

Il valore del parametro è uguale al valore fornito nella condizione.

non è

non eq,! =

Is not (Non è)

Il valore del parametro non è lo stesso del valore fornito nella condizione.

minore_di

lt, <

Less than

Il valore numerico del parametro è inferiore al valore fornito nella condizione.

meno di uguale

litigio, <=

Minore o uguale a

Il valore numerico del parametro è minore o uguale al valore fornito nella condizione.

maggiore_di

gt, >

Greater than

Il valore numerico del parametro è maggiore del valore fornito nella condizione.

greater_than_equal

arrivare, =>

Maggiore o uguale a

Il valore numerico del parametro è maggiore o uguale al valore fornito nella condizione.

Condizioni utilizzate con i parametri Date
Nome nell' DataBrew SDK Nome nella console DataBrew Formato del valore delle condizioni (SDK) Description

after

Start (Avvio)

Formato di data ISO 8601 come o 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

Il valore del parametro date è successivo alla data fornita nella condizione.

before

End

Formato di data ISO 8601 come o 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

Il valore del parametro date è precedente alla data fornita nella condizione.

relativo_dopo

Inizio (relativo)

Numero positivo o negativo di unità di tempo, ad esempio -48h o+7d.

Il valore del parametro date è successivo alla data relativa fornita nella condizione.

Le date relative vengono valutate quando il set di dati viene caricato, quando viene inizializzata una sessione interattiva o quando viene avviato un processo associato. Questo è il momento che negli esempi viene chiamato «adesso».

relative_before

Fine (relativa)

Numero positivo o negativo di unità di tempo, ad esempio -48h o+7d.

Il valore del parametro date è precedente alla data relativa fornita nella condizione.

Le date relative vengono valutate quando il set di dati viene caricato, quando viene inizializzata una sessione interattiva o quando viene avviato un processo associato. Questo è il momento che negli esempi viene chiamato «adesso».

Se utilizzi l'SDK, fornisci le date relative nel seguente formato:±{number_of_time_units}{time_unit}. Puoi usare queste unità di tempo:

  • -1h (1 ora fa)

  • +2d (tra 2 giorni)

  • -120m (120 minuti fa)

  • 5000 secondi (tra 5.000 secondi)

  • -3w (3 settimane fa)

  • +4M (tra 4 mesi)

  • -1y (1 anno fa)

Le date relative vengono valutate quando il set di dati viene caricato, quando viene inizializzata una sessione interattiva o quando viene avviato un processo associato. Questo è il momento chiamato «adesso» negli esempi precedenti.

Configurazione delle impostazioni per set di dati dinamici

Oltre a fornire un percorso S3 parametrizzato, puoi configurare altre impostazioni per set di dati con più file. Queste impostazioni filtrano i file S3 in base alla data dell'ultima modifica e limitano il numero di file.

Analogamente all'impostazione di un parametro di data in un percorso, puoi definire un intervallo di tempo in cui i file corrispondenti sono stati aggiornati e includere solo quei file nel tuo set di dati. Puoi definire questi intervalli utilizzando date assolute come «30 marzo 2021" o intervalli relativi come «Ultime 24 ore».

Specificare la casella di controllo dell'intervallo di date dell'ultimo aggiornamento selezionata nel menu a discesa Ultime 24 ore.

Per limitare il numero di file corrispondenti, seleziona un numero di file maggiore di 0 e scegli se desideri i file corrispondenti più recenti o quelli più vecchi.

Casella di controllo selezionata per Specificare il numero di file da includere nel menu a discesa Più recente e 10 file.