Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Estrarre dati JSON dalle stringhe

Modalità Focus
Estrarre dati JSON dalle stringhe - Amazon Athena

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

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

È possibile che alcuni dei dati di origine che contengono stringhe codificate JSON non debbano essere necessariamente deserializzate in una tabella Athena. In tal caso, è comunque possibile eseguire operazioni SQL su questi dati utilizzando le funzioni JSON disponibili in Presto.

Considera questa stringa JSON come un set di dati di esempio.

{"name": "Susan Smith", "org": "engineering", "projects": [ {"name":"project1", "completed":false}, {"name":"project2", "completed":true} ] }

Esempi: proprietà di estrazione

Per estrarre le proprietà name e projects dalla stringa JSON, utilizza la funzione json_extract, come nell'esempio seguente. La funzione json_extract analizza la colonna contenente la stringa JSON e vi esegue la ricerca impiegando un'espressione LIKE JSONPath con la notazione del punto ..

Nota

JSONPath esegue un attraversamento semplice della struttura. utilizzando il simbolo $ per indicare la radice del documento JSON, seguita da un punto e da un elemento nidificato direttamente sotto il livello radice, ad esempio $.name.

WITH dataset AS ( SELECT '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false}, {"name":"project2", "completed":true}]}' AS myblob ) SELECT json_extract(myblob, '$.name') AS name, json_extract(myblob, '$.projects') AS projects FROM dataset

Il valore restituito è una stringa con codifica JSON e non un tipo di dati Athena nativo.

+-----------------------------------------------------------------------------------------------+ | name | projects | +-----------------------------------------------------------------------------------------------+ | "Susan Smith" | [{"name":"project1","completed":false},{"name":"project2","completed":true}] | +-----------------------------------------------------------------------------------------------+

Per estrarre il valore scalare dalla stringa JSON, utilizza la funzione json_extract_scalar(json, json_path). È simile ajson_extract, ma restituisce un valore di varchar stringa anziché una stringa con codifica JSON. Il valore del json_path parametro deve essere uno scalare (un valore booleano, un numero o una stringa).

Nota

Non utilizzare la funzione json_extract_scalar su matrici, mappe o strutture.

WITH dataset AS ( SELECT '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}' AS myblob ) SELECT json_extract_scalar(myblob, '$.name') AS name, json_extract_scalar(myblob, '$.projects') AS projects FROM dataset

Questa query restituisce:

+---------------------------+ | name | projects | +---------------------------+ | Susan Smith | | +---------------------------+

Per ottenere il primo elemento della proprietà projects nella matrice di esempio, utilizza la funzione json_array_get e specifica la posizione indice.

WITH dataset AS ( SELECT '{"name": "Bob Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}' AS myblob ) SELECT json_array_get(json_extract(myblob, '$.projects'), 0) AS item FROM dataset

Restituirà il valore nella posizione indice specificata nella matrice codificata JSON.

+---------------------------------------+ | item | +---------------------------------------+ | {"name":"project1","completed":false} | +---------------------------------------+

Per restituire un tipo di stringa Athena, utilizza l'operatore [] all'interno di un'espressione JSONPath, quindi utilizza la funzione json_extract_scalar. Per ulteriori informazioni su [], consulta Accedi agli elementi dell'array.

WITH dataset AS ( SELECT '{"name": "Bob Smith", "org": "engineering", "projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}' AS myblob ) SELECT json_extract_scalar(myblob, '$.projects[0].name') AS project_name FROM dataset

Tale operazione restituisce questo risultato:

+--------------+ | project_name | +--------------+ | project1 | +--------------+

In questa pagina

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.