Снежинка с дубликатом - PullRequest
0 голосов
/ 24 апреля 2020

В моем случае моя запланированная Работа читает CSV и пишет в снежинку.

Когда я планирую это чтение из CSV и запись в снежинку каждый час, я вижу несколько дубликатов в снежинке. Это несмотря на то, что мой ID является PRIMARY KEY (ALTER TABLE tablename ADD PRIMARY KEY (column1).

Я понимаю, что Snowflake поддерживает определение и поддержание ограничений, но не применяет их, за исключением ограничений NOT NULL, которые всегда выполняются. Мне нужна помощь для решения этой проблемы.

Чтобы уточнить, давайте рассмотрим сценарий:

Шаг 1: В 9 утра вставьте данные из CSV в снежинку ID Имя клиента Цена 1111 Джон Мэтью 10 1112 Дэвид Бешам 20

Шаг 2: В 10 вечера я получаю еще одну строку, поэтому мой CSV равен ID Имя клиента Цена 1111 Джон Мэтью 10 1112 Дэвид Бешам 20 1113 Hello World 40

Ожидается в снежинке

ID Имя клиента Цена 1111 John Mathew 10 1112 David Becham 20 1113 Hello World 40

Я получаю дубликаты, как показано ниже ID Имя клиента Цена 1111 Джон Мэтью 10 1112 Дэвид Бешам 20 1113 Hello World 40 1111 Джон Мэтью 10 1112 Дэвид Бе чам 20

1 Ответ

1 голос
/ 24 апреля 2020

Будет полезно, если вы предоставите свой код. Похоже, вы обновляете CSV, что означает, что Snowflake видит весь файл как новый файл для загрузки, который затем снова загружает весь файл. Если вы просто запускаете команду COPY INTO без нижестоящей логики c, то это то, что произойдет.

Два варианта:

1) не обновлять файл CSV. ..просто создайте новый только с новыми данными. Затем команда COPY INTO будет работать нормально.

2) если вы также получаете обновления предыдущих записей, вам следует запустить COPY INTO во временную таблицу, а затем MERGE эти данные в вашу финальная таблица по первичному ключу.

...