Obter o valor de uma chave se existe uma matriz de elementos em uma variante de coluna em floco de neve

0

Pergunta

Eu tenho uma variante coluna que tem matriz de objetos. Eu precisa para obter o valor de orgId (iVtXg1iwVmT9Q)a partir desta matriz. Como faço isso? Haverá apenas uma orgId mas eu não sei o elemento de índice. Abaixo o exemplo a resposta é mycolumn[1].dados.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

Melhor resposta

1

Assim, você não sabe qual é o elemento que você precisa para desenrolar de todos eles através de ACHATARe, em seguida, filtrar aqueles que não correspondem.

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;

Com este padrão, você pode selecionar qualquer um dos outros elementos que você quiser, como site ou stage bem.

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

"QUALIFICAR" requer a função de janela, não? Eu acho que é o suficiente aqui.
Gokhan Atil

OMG eu tenho mais que ele, hattip, ONDE é suficiente sim! Eu acho que eu estou quase sempre de agregação/janelas, portanto, sobre o uso de se QUALIFICAR...
Simeon Pilgrim
0

"Ingênuo" texto abordagem:

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

Preparação de dados:

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

Em outros idiomas

Esta página está em outros idiomas

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