Snowflake'deki varyant sütunundaki bir dizi öğesinde varsa bir anahtarın değerini alın

0

Soru

Bir dizi nesneye sahip bir değişken sütunum var. Bu diziden orgİd (ıVtXg1ıwVmT9Q)değerini almam gerekiyor. Bunu nasıl yapacağım? Yalnızca bir orgId olacak, ancak öğe dizinini bilmiyorum. Aşağıdaki örnekte cevap mycolumn[1] şeklindedir.veri.Orgidname

[{
           "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

En iyi cevabı

1

Bu nedenle, hangi öğenin hepsini FLATTEN ile açmanız gerektiğini bilmediğiniz ve daha sonra eşleşmeyenleri filtrelemeniz gerektiği göz önüne alındığında.

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;

Bu desenle, istediğiniz diğer öğelerden herhangi birini seçebilirsiniz site veya stage ayrıca.

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İTELEMEK" pencere işlevi gerektirir, değil mi? Bence burada yeterince yer var.
Gokhan Atil

OMG, yine de bitti, hattip, nerede yeterli evet! Sanırım neredeyse her zaman toplama/pencereleme yapıyorum, bu yüzden aşırı kullanım HAK kazanıyor...
Simeon Pilgrim
0

"Naif" metin yaklaşımı:

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

Veri hazırlama:

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

Diğer dillerde

Bu sayfa diğer dillerde

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