Как правильно получить Avro-файлы, содержащие JSON, в табличную структуру на Snowflake? - PullRequest
0 голосов
/ 19 февраля 2019

Я изо всех сил пытался получить свои данные из 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 в последнем утверждении вместо copy, но мой вопрос больше состоит в том, как бы я исключил избыточную avro_as_json_table из уравнения?

1 Ответ

0 голосов
/ 06 марта 2019

Вместо использования

copy into avro_as_json_table(body)
from ...

try

INSERT INTO avro_as_json_table(body)
from ...
...