Snowflake - «оператор COPY поддерживает только простые операторы SELECT из этапа для импорта «ошибка» при загрузке данных json с использованием flatten

Я пытаюсь загрузить ниже данные json из лазурной сцены, используя flatten

#этап(лазурный)

@json_stage
{
  "location": {
    "city": "Lexington",
    "zip": "40503"
  },
  "price": "75836",
  "sale_date": "4-25-16",
  "sq__ft": "1000"
}
 
-- creating table
create or replace table property_sales(city varchar, zip string, price number, sale_date timestamp_ntz);


 
-- copy into the tabel 
copy into property_sales(city, zip, price, sale_date, sqt_ft) from (select vm.value:city::string, vm.value:zip::number, $1:price::number, to_date($1.sale_date::text,'MM-DD-YY', $1.sq__ft::number) from @json_stage, lateral flatten(input => $1:location) vm);

При выполнении вышеуказанных запросов я получаю сообщение об ошибке ниже

002098 (0A000): SQL compilation error:
COPY statement only supports simple SELECT from stage statements for import

Я также пробовал вставить в команду вместо копирования,

insert into property_sales(city, zip, price, sale_date, sqt_ft) select vm.value:city::string, vm.value:zip::number, $1:price::number, to_date($1.sale_date::text,'MM-DD-YY', $1.sq__ft::number) from @json_stage, lateral flatten(input => $1:location) vm;

Но ошибка ниже

ambiguous column name '$1'

Любое решение для этого?

Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
0
0
82
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это должно исправить ошибку неоднозначного имени столбца:

insert into property_sales(city, zip, price, sale_date, sqt_ft) select vm.value:city::string, vm.value:zip::number, j.$1:price::number, to_date(j.$1:sale_date::text,'MM-DD-YY' ), j.$1:sq__ft::number from @json_stage (file_format => jsonformat) j , lateral flatten(input => j.$1:"location" ) VM ;

Но, основываясь на ваших примерных данных, я не уверен, что вам действительно нужно сгладить. Это должно проанализировать (и вставить) образцы данных:

insert into property_sales(city, zip, price, sale_date, sqt_ft) select $1:location.city::string, $1:location.zip::number, $1:price::number, to_date($1:sale_date::text,'MM-DD-YY' ), $1:sq__ft::number from @json_stage (file_format => jsonformat);

Как следует из сообщения об ошибке, не все функции, обычно используемые в SELECT, поддерживаются в преобразованиях копирования. В частности, из примера выше FLATTEN не поддерживается https://docs.snowflake.com/en/user-guide/data-load-transform.html.

Решение, которое я бы предложил, состоит в том, чтобы создать рабочую таблицу (временную или временную) с полем варианта, в которое вы будете загружать JSON. Затем вы можете выполнить ВСТАВИТЬ В property_sales ВЫБЕРИТЕ .. ИЗ work_table и примените любые преобразования, которые вам нужны, в этом SELECT.

Другие вопросы по теме