Obtener el valor de una clave de si existe en uno de los elementos de la matriz en una variante de la columna en forma de copo de nieve

0

Pregunta

Tengo una variante de la columna que ha matriz de objetos. Necesito obtener el valor de orgId (iVtXg1iwVmT9Q)a partir de esta matriz. ¿Cómo puedo hacer eso? Sólo habrá una orgId pero no sé el índice del elemento. El ejemplo de abajo, la respuesta es micolumna[1].de datos.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

Mejor respuesta

1

Así que, dado que usted no sabe que el elemento que necesita para desenrollar todos ellos a través de APLANARy, a continuación, filtrar los que no coinciden.

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;

Con este modelo usted puede seleccionar cualquiera de los otros elementos, como site o stage así.

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

"CALIFICAR" requiere que la función de la ventana, ¿no? Creo que es suficiente aquí.
Gokhan Atil

OMG tengo más a pesar de que, hattip, DÓNDE está lo suficientemente sí! Creo que estoy casi siempre de agregación/ventanas, por lo que con el uso de CALIFICAR...
Simeon Pilgrim
0

"Ingenuo" texto enfoque:

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

Preparación de los datos:

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

En otros idiomas

Esta página está en otros idiomas

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