Parametri del formato dei dati - Amazon Redshift

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à.

Parametri del formato dei dati

Per impostazione predefinita, il COPY comando prevede che i dati di origine siano costituiti da -8 testo delimitati da caratteriUTF. Il delimitatore predefinito è una barra verticale ( | ). Se i dati di origine sono in un altro formato, utilizza i seguenti parametri per specificare il formato dei dati:

Oltre ai formati di dati standard, COPY supporta i seguenti formati di dati colonnari COPY provenienti da Amazon S3:

COPYdal formato colonnare è supportato con alcune restrizioni. Per ulteriori informazioni, consulta COPYda formati di dati colonnari.

Parametri del formato dei dati
FORMAT[AS]

(Facoltativo) Identifica le parole chiave del formato dei dati. Gli FORMAT argomenti sono descritti di seguito.

CSV[QUOTE[AS] 'quote_character']

Consente l'uso del CSV formato nei dati di input. Per evitare automaticamente i delimitatori, i caratteri di nuova riga e i valori di riferimento, racchiudi il campo nel carattere specificato dal parametro. QUOTE Il carattere virgoletta di default è una virgoletta doppia ( " ). Quando si utilizza il carattere virgolette in un campo, eseguire l'escape del carattere aggiungendo altre virgolette. Ad esempio, se il carattere virgoletta è una virgoletta doppia, per inserire la stringa A "quoted" word il file di input deve includere la stringa "A ""quoted"" word". Quando viene utilizzato il CSV parametro, il delimitatore predefinito è una virgola (,). È possibile specificare un delimitatore diverso utilizzando il parametro. DELIMITER

Quando un campo è racchiuso tra virgolette, lo spazio tra i delimitatori e i caratteri delle virgolette viene ignorato. Se il delimitatore è un carattere di spazio, ad esempio un carattere di tabulazione, il delimitatore non viene trattato come spazio.

CSVnon può essere usato con FIXEDWIDTHREMOVEQUOTES, o. ESCAPE

QUOTE[AS] 'quote_character'

Facoltativo. Speciifica il carattere da utilizzare come virgolette quando si utilizza il parametro. CSV Il carattere predefinito è una doppia virgoletta ( " ). Se si utilizza il QUOTE parametro per definire un carattere di virgolette diverso dalle virgolette doppie, non è necessario evitare le virgolette doppie all'interno del campo. Il QUOTE parametro può essere utilizzato solo con il parametro. CSV La parola chiave AS è facoltativa.

DELIMITER[AS] ['delimiter_char']

Speciifica il singolo ASCII carattere utilizzato per separare i campi nel file di input, ad esempio un carattere pipe (|), una virgola (,) o una tabulazione (\ t). Sono supportati ASCII caratteri non stampabili. ASCIIi caratteri possono essere rappresentati anche in ottale, utilizzando il formato '\ ddd', dove' d 'è una cifra ottale (0—7). Il delimitatore predefinito è un carattere pipe (|), a meno che non venga utilizzato il CSV parametro, nel qual caso il delimitatore predefinito è una virgola (,). La parola chiave AS è facoltativa. DELIMITERnon può essere usato con. FIXEDWIDTH

FIXEDWIDTH'fixedwidth_spec'

Carica i dati da un file in cui ogni larghezza di colonna è fissa, invece di avere colonne separate da un delimitatore. La stringa fixedwidth_spec specifica l'etichetta e la larghezza della colonna definite dall'utente. L'etichetta della colonna può essere sia una stringa di testo sia un intero, a seconda di ciò che sceglie l'utente. L'etichetta della colonna non ha alcuna relazione con il nome della colonna. L'ordine delle coppie etichetta/larghezza deve corrispondere esattamente all'ordine delle colonne della tabella. FIXEDWIDTHnon può essere usato con o. CSV DELIMITER In Amazon Redshift, la lunghezza delle VARCHAR colonne CHAR e è espressa in byte, quindi assicurati che la larghezza della colonna specificata sia adatta alla lunghezza binaria dei caratteri multibyte durante la preparazione del file da caricare. Per ulteriori informazioni, consulta Tipi di carattere.

Di seguito viene mostrato il formato per fixedwidth_spec:

'colLabel1:colWidth1,colLabel:colWidth2, ...'
SHAPEFILE[[] SIMPLIFY ['tolleranza'AUTO]]

Consente l'uso del SHAPEFILE formato nei dati di input. Per impostazione predefinita, la prima colonna dello shapefile è una colonna GEOMETRY o IDENTITY. Tutte le colonne successive seguono l'ordine specificato nello shapefile.

Non è possibile utilizzare SHAPEFILE con FIXEDWIDTHREMOVEQUOTES, oESCAPE.

Per utilizzare oggetti GEOGRAPHY con COPY FROM SHAPEFILE, prima importa in un colonna GEOMETRY, quindi converti gli oggetti in oggetti GEOGRAPHY.

SIMPLIFY[tolleranza]

(Facoltativo) Semplifica tutte le geometrie durante il processo di importazione dati utilizzando l'algoritmo Ramer-Douglas-Peucker e la tolleranza specificata.

SIMPLIFYAUTO[tolleranza]

(Facoltativo) Semplifica solo le geometrie più grandi della dimensione massima della geometria. Questa semplificazione utilizza l'algoritmo Ramer-Douglas-Peucker e la tolleranza calcolata automaticamente se questa non supera la tolleranza specificata. Questo algoritmo calcola la dimensione per memorizzare gli oggetti entro la tolleranza specificata. Il valore tolleranza è facoltativo.

Per esempi di caricamento di uno shapefile, consultare Caricamento di uno shapefile in Amazon Redshift.

AVRO[AS] 'avro_option'

Specifica che i dati sorgente sono in formato Avro.

Il formato Avro è supportato COPY dai seguenti servizi e protocolli:

  • Amazon S3

  • Amazon EMR

  • Host remoti (SSH)

Avro non è supportato COPY da DynamoDB.

Avro è un protocollo di serializzazione dei dati. Un file sorgente Avro include uno schema che definisce la struttura dei dati. Il tipo di schema Avro deve essere record. COPYaccetta i file Avro creati utilizzando il codec non compresso predefinito e i codec di compressione. deflate snappy Per ulteriori informazioni su Avro, consultare Apache Avro.

I valori validi per avro_option sono i seguenti:

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

Il valore predefinito è 'auto'.

COPYmappa automaticamente gli elementi dei dati nei dati di origine Avro alle colonne della tabella di destinazione. Lo fa associando i nomi dei campi nello schema Avro ai nomi delle colonne nella tabella di destinazione. La corrispondenza prevede una distinzione tra lettere maiuscole e minuscole per 'auto' e non fa distinzione tra lettere maiuscole e minuscole per 'auto ignorecase'.

I nomi delle colonne nelle tabelle Amazon Redshift sono sempre in minuscolo, quindi quando si utilizza l'opzione 'auto', anche i nomi dei campi corrispondenti devono essere in minuscolo. Se i nomi dei campi non sono tutti minuscoli, è possibile utilizzare l'opzione 'auto ignorecase'. Con l''auto'argomento predefinito, COPY riconosce solo il primo livello di campi, o campi esterni, nella struttura.

Per mappare esplicitamente i nomi delle colonne ai nomi dei campi Avro, è possibile utilizzare un JSONPathsfile.

Per impostazione predefinita, COPY tenta di abbinare tutte le colonne della tabella di destinazione ai nomi dei campi Avro. Per caricare un sottoinsieme delle colonne, è possibile specificare facoltativamente un elenco di colonne. Se una colonna nella tabella di destinazione viene omessa dall'elenco delle colonne, COPY carica l'espressione della colonna di DEFAULT destinazione. Se la colonna di destinazione non ha un valore predefinito, COPY tenta di NULL caricarsi. Se una colonna è inclusa nell'elenco delle colonne e COPY non trova un campo corrispondente nei dati Avro, COPY tenta di NULL caricarla nella colonna.

Se COPY tenta di eseguire l'assegnazione NULL a una colonna definita come NOTNULL, il COPY comando ha esito negativo.

Schema Avro

Un file di dati sorgente Avro include uno schema che definisce la struttura dei dati. COPYlegge lo schema che fa parte del file di dati di origine Avro per mappare gli elementi di dati alle colonne della tabella di destinazione. L'esempio seguente mostra uno schema Avro.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}] }

Lo schema Avro è definito utilizzando il formato. JSON L'JSONoggetto di primo livello contiene tre coppie nome-valore con i nomi, o chiavi,, e. "name" "type" "fields"

Le chiavi "fields" si accoppiano con un array di oggetti che definiscono il nome e il tipo di dati di ogni campo nella struttura dei dati. Per impostazione predefinita, abbina COPY automaticamente i nomi dei campi ai nomi delle colonne. I nomi delle colonne sono sempre in minuscolo, quindi anche i nomi dei campi corrispondenti devono essere in minuscolo a meno che non si specifichi l'opzione ‘auto ignorecase’. I nomi dei campi che non corrispondono al nome di una colonna vengono ignorati. L'ordine non ha importanza. Nell'esempio precedente, esegue il COPY mapping ai nomi delle colonne idguid,name, eaddress.

Con l''auto'argomento predefinito, COPY abbina solo gli oggetti di primo livello alle colonne. Per eseguire la mappatura a livelli più profondi dello schema o se i nomi dei campi e i nomi delle colonne non corrispondono, utilizzate un JSONPaths file per definire la mappatura. Per ulteriori informazioni, consulta JSONPathsfile.

Se il valore associato a una chiave è un tipo di dati Avro complesso come byte, array, record, map o link, COPY carica il valore come stringa. Qui, la stringa è la JSON rappresentazione dei dati. COPYcarica i tipi di dati Avro enum come stringhe, dove il contenuto è il nome del tipo. Per un esempio, consultare COPYdal formato JSON.

La dimensione massima dell'intestazione del file Avro, che include lo schema e i metadati del file, è di 1 MB.  

La dimensione massima di un singolo blocco dati Avro è di 4 MB. È diverso dalla dimensione massima della riga. Se viene superata la dimensione massima di un singolo blocco di dati Avro, anche se la dimensione della riga risultante è inferiore al limite di 4 MB di dimensione delle righe, il comando ha esito negativo. COPY

Nel calcolo delle dimensioni delle righe, Amazon Redshift internamente conta due volte i caratteri pipe ( | ). Se i dati immessi contengono un numero molto elevato di caratteri pipe, è possibile che la dimensione delle righe superi i 4 MB anche se il blocco di dati è inferiore a 4 MB.

JSON[AS] 'json_option'

I dati di origine sono in formato. JSON

JSONil formato è supportato COPY dai seguenti servizi e protocolli:

  • Amazon S3

  • COPYda Amazon EMR

  • COPYda SSH

JSONnon è supportato COPY da DynamoDB.

I valori validi per json_option sono i seguenti:

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

  • 'noshred'

Il valore predefinito è 'auto'. Amazon Redshift non suddivide gli attributi delle JSON strutture in più colonne durante il caricamento di un documento. JSON

Per impostazione predefinita, COPY tenta di abbinare tutte le colonne della tabella di destinazione alle chiavi dei nomi dei JSON campi. Per caricare un sottoinsieme delle colonne, è possibile specificare facoltativamente un elenco di colonne. Se le chiavi dei nomi di JSON campo non sono tutte minuscole, puoi usare l''auto ignorecase'opzione o a per mappare esplicitamente i nomi delle colonne JSONPathsfile alle chiavi dei nomi di JSON campo.

Se una colonna nella tabella di destinazione viene omessa dall'elenco delle colonne, COPY carica l'espressione della colonna di destinazione. DEFAULT Se la colonna di destinazione non ha un valore predefinito, COPY tenta di NULL caricarsi. Se una colonna è inclusa nell'elenco delle colonne e COPY non trova un campo corrispondente nei JSON dati, COPY tenta di NULL caricarla nella colonna.

Se COPY tenta di eseguire l'assegnazione NULL a una colonna definita come NOTNULL, il COPY comando ha esito negativo.

COPYmappa gli elementi dei dati nei dati di JSON origine alle colonne della tabella di destinazione. Lo fa associando chiavi di oggetti, o nomi, nelle coppie nome-valore di origine ai nomi delle colonne nella tabella di destinazione.

Fare riferimento ai seguenti dettagli su ogni valore json_option:

'auto'

Questa opzione fa distinzione tra lettere maiuscole e minuscole. I nomi delle colonne nelle tabelle di Amazon Redshift sono sempre in minuscolo, quindi quando usi l''auto'opzione, anche i nomi dei JSON campi corrispondenti devono essere in minuscolo.

'auto ignorecase'

Con questa opzione, non si fa distinzione tra maiuscole e minuscole. I nomi delle colonne nelle tabelle di Amazon Redshift sono sempre in minuscolo, quindi quando usi l''auto ignorecase'opzione, i nomi dei JSON campi corrispondenti possono essere minuscoli, maiuscoli o misti.

's3://jsonpaths_file'

Con questa opzione, COPY utilizza il JSONPaths file denominato per mappare gli elementi dei dati nei dati di JSON origine alle colonne della tabella di destinazione. L'argomento s3://jsonpaths_file deve essere una chiave oggetto Amazon S3 che fa esplicito riferimento a un singolo file. Un esempio è 's3://amzn-s3-demo-bucket/jsonpaths.txt'. L'argomento non può essere un prefisso di chiave. Per ulteriori informazioni sull'utilizzo di un JSONPaths file, vedereJSONPathsfile.

In alcuni casi, il file specificato da jsonpaths_file ha lo stesso prefisso del percorso specificato da copy_from_s3_objectpath per i file di dati. In tal caso, COPY legge il JSONPaths file come file di dati e restituisce errori. Ad esempio, supponiamo che i file di dati utilizzino il percorso dell'oggetto s3://amzn-s3-demo-bucket/my_data.json e che il JSONPaths file lo sia. s3://amzn-s3-demo-bucket/my_data.jsonpaths In questo caso, COPY tenta di caricarsi my_data.jsonpaths come file di dati.

'noshred'

Con questa opzione, Amazon Redshift non suddivide gli attributi delle JSON strutture in più colonne durante il caricamento di un documento. JSON

JSONfile di dati

Il file di JSON dati contiene un insieme di oggetti o matrici. COPYcarica ogni JSON oggetto o array in una riga nella tabella di destinazione. Ogni oggetto o array corrispondente a una riga deve essere una struttura autonoma a livello di radice, ovvero non deve essere membro di un'altra struttura. JSON

Un JSON oggetto inizia e finisce con parentesi graffe ({}) e contiene una raccolta non ordinata di coppie nome-valore. Ogni coppia nome e valore è separata da due punti e le coppie sono separate da virgole. Per impostazione predefinita, la chiave oggetto, o nome, nelle coppie nome-valore deve corrispondere al nome della colonna corrispondente nella tabella. I nomi delle colonne nelle tabelle di Amazon Redshift sono sempre in minuscolo, quindi anche le chiavi dei nomi di JSON campo corrispondenti devono essere minuscole. Se i nomi delle colonne e JSON le chiavi non corrispondono, usa a per mappare esplicitamente JSONPathsfile le colonne alle chiavi.

L'ordine in un JSON oggetto non ha importanza. I nomi che non corrispondono al nome di una colonna vengono ignorati. Quanto segue mostra la struttura di un JSON oggetto semplice.

{ "column1": "value1", "column2": value2, "notacolumn" : "ignore this value" }

Un JSON array inizia e finisce con parentesi quadre ([]) e contiene una raccolta ordinata di valori separati da virgole. Se i file di dati utilizzano matrici, è necessario specificare un JSONPaths file per abbinare i valori alle colonne. Di seguito viene illustrata la struttura di un JSON array semplice.

["value1", value2]

JSONDevono essere ben formati. Ad esempio, gli oggetti o gli array non possono essere separati da virgole o altri caratteri tranne lo spazio. Le stringhe devono essere racchiuse tra virgolette doppie. I caratteri virgolette devono essere virgolette semplici (0x22), non oblique o "intelligenti".

La dimensione massima di un singolo JSON oggetto o matrice, comprese le parentesi o le parentesi, è di 4 MB. È diverso dalla dimensione massima della riga. Se viene superata la dimensione massima di un singolo JSON oggetto o matrice, anche se la dimensione della riga risultante è inferiore al limite di 4 MB per la dimensione delle righe, il comando ha esito negativo. COPY

Nel calcolo delle dimensioni delle righe, Amazon Redshift internamente conta due volte i caratteri pipe ( | ). Se i dati immessi contengono un numero molto elevato di caratteri pipe, è possibile che la dimensione delle righe superi i 4 MB anche se la dimensione dell'oggetto è inferiore a 4 MB.

COPYcarica \n come carattere di nuova riga e carica \t come carattere di tabulazione. Per caricare una barra rovesciata, crea una sequenza di escape con una barra rovesciata ( \\ ).

COPYcerca nella JSON fonte specificata un JSON oggetto o un array valido e ben formato. Se COPY incontra caratteri diversi dagli spazi bianchi prima di individuare una JSON struttura utilizzabile o tra JSON oggetti o matrici validi, restituisce un errore per ogni istanza. COPY Questi errori vengono conteggiati ai fini del conteggio degli errori. MAXERROR Quando il conteggio degli errori è uguale o superiore, ha esito negativo. MAXERROR COPY

Per ogni errore, Amazon Redshift registra una riga nella tabella di ERRORS sistema STL _ LOAD _. La NUMBER colonna LINE _ registra l'ultima riga dell'JSONoggetto che ha causato l'errore.

Se IGNOREHEADER è specificata, COPY ignora il numero di righe specificato nei JSON dati. I caratteri di nuova riga nei JSON dati vengono sempre contati per IGNOREHEADER i calcoli.

COPYcarica stringhe vuote come campi vuoti per impostazione predefinita. Se EMPTYASNULL specificato, COPY carica stringhe vuote per CHAR e VARCHAR campi come. NULL Le stringhe vuote per altri tipi di dati, ad esempioINT, vengono sempre caricate con. NULL

Le seguenti opzioni non sono supportate conJSON:

  • CSV

  • DELIMITER

  • ESCAPE

  • FILLRECORD

  • FIXEDWIDTH

  • IGNOREBLANKLINES

  • NULLAS

  • READRATIO

  • REMOVEQUOTES

Per ulteriori informazioni, consulta COPYdal formato JSON. Per ulteriori informazioni sulle strutture di JSON dati, vai su www.json.org.

JSONPathsfile

Se stai caricando da dati di origine JSON -formatted o Avro, per impostazione predefinita COPY mappa gli elementi di dati di primo livello nei dati di origine alle colonne della tabella di destinazione. Lo fa associando ogni nome, o chiave di oggetti, in una coppia nome-valore al nome di una colonna nella tabella di destinazione.

Se i nomi delle colonne e le chiavi degli oggetti non corrispondono o per eseguire il mapping a livelli più profondi nella gerarchia dei dati, puoi utilizzare un JSONPaths file per mappare in modo esplicito gli elementi di dati JSON Avro alle colonne. Il JSONPaths file mappa gli elementi di JSON dati alle colonne facendo corrispondere l'ordine delle colonne nella tabella di destinazione o nell'elenco delle colonne.

Il JSONPaths file deve contenere un solo JSON oggetto (non un array). L'JSONoggetto è una coppia nome-valore. La chiave oggetto, che è il nome nella coppia nome-valore, deve essere "jsonpaths". Il valore nella coppia nome-valore è una matrice di espressioni. JSONPath Ogni JSONPath espressione fa riferimento a un singolo elemento nella gerarchia dei JSON dati o nello schema Avro, in modo analogo a come un'XPathespressione si riferisce agli elementi di un documento. XML Per ulteriori informazioni, consulta JSONPathespressioni.

Per utilizzare un JSONPaths file, aggiungete la AVRO parola chiave JSON or al COPY comando. Specificate il nome del bucket S3 e il percorso dell'oggetto del JSONPaths file utilizzando il seguente formato.

COPY tablename FROM 'data_source' CREDENTIALS 'credentials-args' FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';

Il valore s3://jsonpaths_file deve essere una chiave oggetto di Amazon S3 che fa riferimento esplicitamente a singolo file, come 's3://amzn-s3-demo-bucket/jsonpaths.txt'. Non può essere un prefisso di chiave.

In alcuni casi, se il caricamento avviene da Amazon S3 il file specificato da jsonpaths_file ha lo stesso prefisso del percorso specificato da copy_from_s3_objectpath per i file di dati. In tal caso, COPY legge il JSONPaths file come file di dati e restituisce errori. Ad esempio, supponiamo che i file di dati utilizzino il percorso dell'oggetto s3://amzn-s3-demo-bucket/my_data.json e che il JSONPaths file lo sia. s3://amzn-s3-demo-bucket/my_data.jsonpaths In questo caso, COPY tenta di caricarsi my_data.jsonpaths come file di dati.

Se il nome della chiave è una stringa diversa da"jsonpaths", il COPY comando non restituisce un errore, ma ignora jsonpaths_file e utilizza invece l'argomento. 'auto'

Se si verifica una delle seguenti condizioni, il comando ha esito negativo: COPY

  • JSONè malformato.

  • Esiste più di un JSON oggetto.

  • Tutti i caratteri tranne lo spazio esistono al di fuori dell'oggetto.

  • Un elemento array è una stringa vuota o non è una stringa.

MAXERRORnon si applica al JSONPaths file.

Il JSONPaths file non deve essere crittografato, anche se l'ENCRYPTEDopzione è specificata.

Per ulteriori informazioni, consulta COPYdal formato JSON.

JSONPathespressioni

Il JSONPaths file utilizza JSONPath espressioni per mappare i campi di dati alle colonne di destinazione. Ogni JSONPath espressione corrisponde a una colonna nella tabella di destinazione di Amazon Redshift. L'ordine degli elementi dell'JSONPatharray deve corrispondere all'ordine delle colonne nella tabella di destinazione o nell'elenco delle colonne, se viene utilizzato un elenco di colonne.

I caratteri delle doppie virgolette sono richiesti come mostrato, sia per i nomi dei campi sia per i valori. I caratteri delle virgolette devono essere virgolette semplici (0x22), non oblique o "intelligenti".

Se un elemento dell'oggetto a cui fa riferimento un'JSONPathespressione non viene trovato nei JSON dati, COPY tenta di caricare un NULL valore. Se l'oggetto a cui si fa riferimento non è valido, COPY restituisce un errore di caricamento.

Se un elemento dell'array a cui fa riferimento un'JSONPathespressione non viene trovato nei dati JSON o Avro, COPY restituisce il seguente errore: Invalid JSONPath format: Not an array or index out of range. Rimuovi tutti gli elementi dell'array JSONPaths che non esistono nei dati di origine e verifica che gli array nei dati di origine siano ben formati. 

Le JSONPath espressioni possono utilizzare la notazione tra parentesi o la notazione a punti, ma non è possibile combinare le notazioni. L'esempio seguente mostra le JSONPath espressioni che utilizzano la notazione tra parentesi.

{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }

L'esempio seguente mostra le JSONPath espressioni che utilizzano la notazione a punti.

{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }

Nel contesto della COPY sintassi di Amazon Redshift, un'JSONPathespressione deve specificare il percorso esplicito di un singolo elemento del nome in una struttura dati gerarchica JSON o Avro. Amazon Redshift non supporta alcun JSONPath elemento, come caratteri jolly o espressioni di filtro, che potrebbe risolversi in un percorso ambiguo o in più elementi del nome.

Per ulteriori informazioni, consulta COPYdal formato JSON.

Utilizzo con Avro Data JSONPaths

L'esempio seguente mostra uno schema Avro con più livelli.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "isActive", "type": "boolean"}, {"name": "age", "type": "int"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}, {"name": "latitude", "type": "double"}, {"name": "longitude", "type": "double"}, { "name": "tags", "type": { "type" : "array", "name" : "inner_tags", "items" : "string" } }, { "name": "friends", "type": { "type" : "array", "name" : "inner_friends", "items" : { "name" : "friends_record", "type" : "record", "fields" : [ {"name" : "id", "type" : "int"}, {"name" : "name", "type" : "string"} ] } } }, {"name": "randomArrayItem", "type": "string"} ] }

L'esempio seguente mostra un JSONPaths file che utilizza AvroPath espressioni per fare riferimento allo schema precedente.

{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }

L'JSONPathsesempio include i seguenti elementi:

jsonpath

Il nome dell'JSONoggetto che contiene le AvroPath espressioni.

[ … ]

Le parentesi racchiudono l'JSONarray che contiene gli elementi del percorso.

$

Il segno del dollaro fa riferimento all'elemento root nello schema Avro, che è l'array "fields".

"$.id",

L'obiettivo dell'espressione. AvroPath In questa istanza, la destinazione è l'elemento nell'array "fields" con il nome "id". Le espressioni sono separate da virgole.

"$.friends[0].id"

Le parentesi indicano un indice dell'array. JSONPathle espressioni utilizzano l'indicizzazione a base zero, quindi questa espressione fa riferimento al primo elemento dell'"friends"array con il nome. "id"

La sintassi dello schema Avro richiede l'utilizzo di campi interni per definire la struttura dei tipi di dati record e array. I campi interni vengono ignorati dalle espressioni. AvroPath Per esempio, il campo "friends" definisce un array chiamato "inner_friends", che a sua volta definisce un record chiamato "friends_record". L' AvroPath espressione che fa riferimento al campo "id" può ignorare i campi aggiuntivi per fare riferimento direttamente al campo di destinazione. Le AvroPath espressioni seguenti fanno riferimento ai due campi che appartengono all'"friends"array.

"$.friends[0].id" "$.friends[0].name"

Parametri del formato dei dati a colonna

Oltre ai formati di dati standard, COPY supporta i seguenti formati di dati colonnari COPY provenienti da Amazon S3. COPYdal formato colonnare è supportato con alcune restrizioni. Per ulteriori informazioni, consulta COPYda formati di dati colonnari.

ORC

Carica i dati da un file che utilizza il formato di file Optimized Row Columnar ()ORC.

PARQUET

Carica i dati da un file che utilizza il formato di file Parquet.