Как правильно получить Avro-файлы, содержащие JSON, в табличную структуру на Snowflake?
Я изо всех сил пытался перенести свои данные из Azure Event Hub в SQL-таблицу на платформе Snowflake. Я просто не могу понять, как это сделать правильно, если мне нужно преобразовать данные несколько раз. Мои данные находятся в теле Avro-файла.
Я только начал заниматься Снежинкой. До сих пор я пытался следовать этому руководству по этой теме, но на самом деле оно не сохраняет тело в формате 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 из уравнения?
0 ответов
Вместо того, чтобы использовать
copy into avro_as_json_table(body)
from ...
пытаться
INSERT INTO avro_as_json_table(body)
from ...