Získat hodnotu klíče, pokud existuje v jednu prvků pole ve variantě sloupec v sněhová vločka

0

Otázka

Mám varianta sloupec, který má pole objektů. Potřebuju získat hodnotu orgId (iVtXg1iwVmT9Q)z tohoto pole. Jak to mám udělat, že? Tam bude pouze jeden orgId ale nevím prvek index. Níže uvedený příklad odpověď je mycolumn[1].data.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

Nejlepší odpověď

1

Takže vzhledem k tomu, nevíte prvek, který musíte rozbalit všechny je přes SROVNAT, a pak odfiltrovat ty, které nechcete odpovídat.

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 vzorem můžete si vybrat některý z dalších prvků, které chcete, jako site nebo stage stejně.

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

"KVALIFIKOVAT", vyžaduje, okenní funkce, ne? Myslím, že KDE je tady dost.
Gokhan Atil

OMG mám i když to, hattip, KDE je dost ano! Myslím, že jsem téměř vždy agregaci/windowing, takže po použití KVALIFIKOVAT...
Simeon Pilgrim
0

"Naivní" text přístup:

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

Příprava dat:

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 jiných jazycích

Tato stránka je v jiných jazycích

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