es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo convertir JSON a formato de tabla en Snowflake

Tengo una tabla externa INVEXT_TBL (1 columna variante llamada “VALUE”) en Snowflake y tiene 6000 filas (cada fila es un archivo JSON). El registro JSON tiene comillas dobles ya que está en formato dynamo_json.
¿Cuál es el mejor enfoque para analizar todos los archivos JSON y convertirlos en formato de tabla para ejecutar consultas SQL? He dado un ejemplo del formato de solo los primeros 3 archivos JSON.

"{
  ""Item"": {
     ""sortKey"": {
      ""S"": ""DR-1630507718""
    },
    ""vin"": {
      ""S"": ""1FMCU9GD2JUA29""
    }
  }
}"

"{
  ""Item"": {
    ""sortKey"": {
      ""S"": ""affc5dd0875c-1630618108496""
    }
   },
    ""vin"": {
      ""S"": ""SALCH625018""
    }
  }
}"

"{
  ""Item"": {
    ""sortKey"": {
      ""S"": ""affc5dd0875c-1601078453607""
    },
    ""vin"": {
      ""S"": ""KL4CB018677""
    }
  }
}"

He creado una tabla local e inserté datos en ella desde una tabla externa mediante una conversión de tipo de dato. ¿Es este enfoque correcto o debo usar la función parse_json para almacenar los datos en una tabla local?

create or replace table DB.SCHEMA.INV_HIST(VIN   VARCHAR(16777216), SORTKEY VARCHAR(16777216));
insert into DB.SCHEMA.INV_HIST(VIN,SORTKEY)
(SELECT value:Item.vin.S::string AS VIN, value:Item.sortKey.S::string AS SORTKEY FROM INV_EXT_TBL);
Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en la plataforma de datos en la nube Snowflake y el Esquema de Snowflake, recomiendo utilizar la función PARSE_JSON para transformar los archivos JSON en formato de tabla.

    El uso de la función PARSE_JSON puede ayudar a deserializar los documentos JSON en datos relacionales que pueden ser consultados y analizados fácilmente mediante consultas SQL. Este enfoque también puede manejar cualquier posible variación en el formato o estructura de JSON.

    Aquí hay un ejemplo de cómo utilizar la función PARSE_JSON para extraer los valores VIN y SORTKEY de los documentos JSON y almacenarlos en una nueva tabla:

    CREATE OR REPLACE TABLE DB.SCHEMA.INV_HIST (
        VIN VARCHAR(16777216),
        SORTKEY VARCHAR(16777216)
    );
    
    INSERT INTO DB.SCHEMA.INV_HIST (VIN, SORTKEY)
    SELECT
        JSON_VALUE(json_doc, '$.Item.vin.S') AS VIN,
        JSON_VALUE(json_doc, '$.Item.sortKey.S') AS SORTKEY
    FROM (
        SELECT PARSE_JSON(VALUE) as json_doc
        FROM INV_EXT_TBL
    );
    

    Este fragmento de código crea una nueva tabla INV_HIST con dos columnas VIN y SORTKEY, y utiliza PARSE_JSON para extraer los valores VIN y SORTKEY de los documentos JSON y transformarlos en datos relacionales. La función JSON_VALUE se utiliza para extraer valores específicos de los objetos JSON analizados.

    En general, el uso de la función PARSE_JSON proporciona una solución mucho más flexible y eficiente para analizar datos JSON en Snowflake en comparación con la conversión manual de tipos de datos.

Comments are closed.