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à.
Disnidificazione dello schema
Quando ti integri con i servizi di analisi tramite Zero-ETL, puoi scegliere in che modo le strutture annidate vengono rappresentate nelle tabelle di destinazione. AWS Glue Zero-ETL offre opzioni di unnesting dello schema per appiattire strutture di dati complesse in formati più intuitivi per l'analisi.
Opzioni di disnidificazione
Quando si crea un'integrazione Zero-ETL con un'origine, è possibile scegliere tra le seguenti opzioni di disnidificazione. Queste opzioni corrispondono a valori di enumerazione specifici che utilizzerai per chiamare l'API. CreateIntegrationTableProperty
- Nessuna disnidificazione (predefinito)
-
Valore API:
NO_UNNESTConserva la struttura nidificata originale degli elementi DynamoDB. Le mappe e gli elenchi vengono memorizzati come colonne strutturate nella destinazione.
Ideale per: preservare l'esatta struttura dei dati DynamoDB quando gli strumenti di analisi possono funzionare con dati annidati.
- Disnidificazione di un livello
-
Valore API:
TOP_LEVELAppiattisce il livello superiore delle mappe nidificate in singole colonne. Le strutture degli elenchi rimangono annidate.
Ideale per: bilanciamento tra la conservazione della struttura dei dati e la semplicità delle query quando gli elementi di DynamoDB hanno uno schema coerente.
- Disnidificazione di tutti i livelli
-
Valore API:
FULLAppiattisce in modo ricorsivo tutte le strutture annidate (mappe ed elenchi) in singole colonne con notazione a punti per la denominazione.
Ideale per: massimizzare la semplicità delle query quando si lavora con strutture e strumenti di analisi profondamente annidati che preferiscono schemi piatti.
Nota
La disnidificazione completa può portare a tabelle molto ampie con molte colonne se i dati DynamoDB hanno strutture variabili o profondamente annidate.
Esempio Utilizzo delle opzioni di disnidificazione nell'API
Quando configuri il unnesting dello schema tramite l' CreateIntegrationTableProperty API, specifica l'opzione di unnesting nel parametro: UnnestSpec
aws glue create-integration-table-property --resource-arn "arn:aws:glue:us-east-1:123456789012:integration/my-integration" --table-name "my-table" --cli-input-json '{ "TargetTableConfig": { "UnnestSpec": "FULL", "TargetTableName": "my-target-table", } }'
Esempi di disnidificazione
Si consideri un elemento di DynamoDB con la seguente struttura:
{ "ProductId": "P12345", "ProductDetails": { "Name": "Smartphone", "Brand": "TechCo", "Specifications": { "Color": "Black", "Storage": "128GB" } }, "Reviews": [ { "Rating": 5, "Comment": "Great product!" }, { "Rating": 4, "Comment": "Good value." } ] }
Nessun esempio di disnidificazione
Senza disnidificazione, la tabella di destinazione avrebbe delle colonne:
ProductId (Stringa)
ProductDetails (struttura)
Recensioni (array di strutture)
Le query dovrebbero utilizzare modelli di accesso a strutture e array:
SELECT ProductId, ProductDetails.Name, ProductDetails.Specifications.Color FROM product_table;
Esempio di disnidificazione di un livello
Con un solo livello di disnidificazione, la tabella di destinazione avrebbe delle colonne:
ProductId (Stringa)
ProductDetails_Nome (stringa)
ProductDetails_Brand (stringa)
ProductDetails_Specifiche (struttura)
Recensioni (array di strutture)
Le query sarebbero semplificate per il primo livello:
SELECT ProductId, ProductDetails_Name, ProductDetails_Specifications.Color FROM product_table;
Esempio di disnidificazione di tutti i livelli
Con tutti i livelli di disnidificazione, la tabella di destinazione avrebbe colonne e valori:
| Nome della colonna (tipo) | Valore |
|---|---|
| ProductId (Stringa) | P12345 |
| ProductDetails_Nome (stringa) | Smartphone |
| ProductDetails_Brand (stringa) | TechCo |
| ProductDetails_Specifiche_Color (stringa) | Nero |
| ProductDetails_Specifiche_Archiviazione (stringa) | 128 GB |
| Reviews_0_Rating (numero) | 5 |
| Reviews_0_Comment (stringa) | Ottimo prodotto! |
| Reviews_1_Rating (numero) | 4 |
| Reviews_1_Comment (stringa) | Valore buono. |
Le query verrebbero completamente appiattite:
SELECT ProductId, ProductDetails_Name, ProductDetails_Specifications_Color FROM product_table;