Ottenere il valore di una chiave, se esiste una matrice di elementi in una variante colonna fiocco di neve

0

Domanda

Ho una variante colonna che ha array di oggetti. Ho bisogno di ottenere il valore di orgId (iVtXg1iwVmT9Q)da questa matrice. Come faccio a fare che? Ci sarà solo una orgId ma non so l'elemento di indice. L'esempio di seguito la risposta è la colonna[1].dati.orgId

[{
           "data": {
              "isCustomerAuthenticated": false,
              "visibility": "open"
           },
           "schema": "jsonschema/2-0-0"
       },
       {
           "data": {
               "orgId": "iVtXg1iwVmT9Q",
               "site": "us-abcde.qa",
               "stage": "staging"
           },
           "schema": "jsonschema/1-0-0"
       },
       {
           "data": {
               "onboardingType": "form"
           },
           "schema": "jsonschema/1-0-1"
       }
   ]
snowflake-cloud-data-platform sql
2021-11-23 21:22:36
2

Migliore risposta

1

Quindi, dato non si sa quale elemento di cui avete bisogno per svolgere tutti via APPIATTIRE, e poi filtrare quelle che non corrispondono.

SELECT f.value:data:orgId::text as ordId
FROM table t,
    TABLE(FLATTEN(input => t.mycolumn)) f
WHERE f.value:data:orgId::text IS NOT NULL;

Con questo modello è possibile selezionare uno qualsiasi degli altri elementi che si desidera in site o stage come bene.

SELECT 
    f.value:data:orgId::text AS ordId
    f.value:data:site::text AS site
    f.value:data:staging::text AS staging
FROM table t,
    TABLE(FLATTEN(input => t.mycolumn)) f
WHERE f.value:data:orgId::text IS NOT NULL;
2021-11-23 21:53:08

"QUALIFICARE" richiede la funzione di finestra, no? Penso che DOVE è sufficiente.
Gokhan Atil

OMG ho più anche se, hattip, DOVE è abbastanza sì! Penso di essere quasi sempre aggregazione/windowing, quindi, oltre l'uso QUALIFICARSI...
Simeon Pilgrim
0

"Ingenuo" text approccio:

SELECT REGEXP_SUBSTR(ARRAY_TO_STRING(col,''), '"orgId":"([^"]*)"',1,1,'e',1)
FROM T;
-- iVtXg1iwVmT9Q

La preparazione dei dati:

CREATE OR REPLACE TABLE T AS 
SELECT PARSE_JSON('[{
           "data": {
              "isCustomerAuthenticated": false,
              "visibility": "open"
           },
           "schema": "jsonschema/2-0-0"
       },
       {
           "data": {
               "orgId": "iVtXg1iwVmT9Q",
               "site": "us-abcde.qa",
               "stage": "staging"
           },
           "schema": "jsonschema/1-0-0"
       },
       {
           "data": {
               "onboardingType": "form"
           },
           "schema": "jsonschema/1-0-1"
       }
   ]') AS col;
2021-11-23 21:45:02

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................