在Snowflake上将包含JSON的Avro文件放入表结构的正确方法是什么?

问题描述 投票:0回答:1

我一直在努力将Azure Event Hub中的数据导入Snowflake平台上的SQL表。如果我必须多次转换数据,我就无法正确地理解如何正确地完成它。我的数据位于Avro文件的正文中。

我刚开始做雪花。到目前为止,我已经尝试在这个主题上关注this tutorial,但它实际上并没有将JSON格式的主体保存在视频中的任何位置。到目前为止,我尝试过这样的事情

CREATE DATABASE IF NOT EXISTS MY_DB;
USE DATABASE MY_DB;
CREATE OR REPLACE TABLE data_table(
  "column1" STRING,
  "column2" INTEGER,
  "column3" STRING
);
create or replace file format av_avro_format
  type = 'AVRO'
  compression = 'NONE';

create or replace stage st_capture_avros
  url='azure://xxxxxxx.blob.core.windows.net/xxxxxxxx/xxxxxxxxx/xxxxxxx/1/'
  credentials=(azure_sas_token='?xxxxxxxxxxxxx')
  file_format = av_avro_format;

copy into avro_as_json_table(body)
from(
    select(HEX_DECODE_STRING($1:Body))
    from @st_capture_avros
);

copy into data_table("Column1", "Column2", "Column3" )
from(

  select $1:"jsonKeyValue1", $1:"jsonKeyValue2", $1:"jsonKeyValue3"
  from avro_as_json_table
);

这不起作用,因为它产生“SQL编译错误:COPY语句只支持从舞台语句导入的简单SELECT”错误,我知道我应该在最后一个语句中使用INSERT INTO而不是复制但我的问题更多的是如何做我从等式中消除了多余的avro_as_json_table?

sql azure avro snowflake-datawarehouse
1个回答
1
投票

而不是使用

copy into avro_as_json_table(body)
from ...

尝试

INSERT INTO avro_as_json_table(body)
from ...
© www.soinside.com 2019 - 2024. All rights reserved.