Získať hodnotu kľúča, ak existuje v jednom pole prvkov v variant stĺpec v snowflake

0

Otázka

Mám variant stĺpec, ktorý má pole objektov. Potrebujem sa dostať na hodnotu orgId (iVtXg1iwVmT9Q)z tohto poľa. Ako to mám urobiť, že? Tam bude iba jeden orgId ale neviem prvok index. Nižšie príklad odpoveď je mycolumn[1].údaje.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

Najlepšiu odpoveď

1

Tak vzhľadom neviete, ktorý prvok potrebujete zrevidovaného ich všetky cez ZLÚČIŤ, a potom vyfiltrovať tie, ktoré sa nezhodujú.

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;

S týmto vzor si môžete vybrať akékoľvek iné prvky, ktoré chcete, ako site alebo stage ako dobre.

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

"NÁROK" vyžaduje sa okno funkcie, nie? Myslím, že tam, KDE je dostatok tu.
Gokhan Atil

OMG som si viac keď to, hattip, KDE je dostatok áno! Myslím, že som takmer vždy úhrnu/windowing, takže cez použitie NÁROK...
Simeon Pilgrim
0

"Naivný" text prístup:

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

Údaje príprava:

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

V iných jazykoch

Táto stránka je v iných jazykoch

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