Disnidificazione dello schema - AWS Glue

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_UNNEST

Conserva 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_LEVEL

Appiattisce 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: FULL

Appiattisce 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;