Obține valoarea de o cheie, dacă există într-o matrice de elemente într-o variantă coloană în fulg de nea

0

Problema

Am o varianta coloana care are o serie de obiecte. Am nevoie pentru a obține valoarea de orgId (iVtXg1iwVmT9Q)de la această matrice. Cum fac asta? Nu va fi doar unul orgId dar nu stiu elementul de index. Exemplul de mai jos răspunsul este mycolumn[1].date.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

Cel mai bun răspuns

1

Având, așadar, nu știu ce element ai nevoie pentru a le derula prin intermediul APLATIZA, și apoi se filtrează pe cele care nu se potrivesc.

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;

Cu acest model, puteți selecta oricare dintre celelalte elemente doriți ca site sau stage la fel de bine.

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

"CALIFICA" necesită funcția de fereastra, nu? Cred că în cazul în CARE este suficient aici.
Gokhan Atil

OMG am peste deși, hattip, o în cazul în CARE este suficient de da! Cred că sunt aproape întotdeauna agregarea/ferestre, astfel încât peste folosi CALIFICA...
Simeon Pilgrim
0

"Naiv" text abordare:

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

Date de preparare:

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

În alte limbi

Această pagină este în alte limbi

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