Почему в таблицу записывает дублирующие значения столбца?

Рейтинг: 0Ответов: 0Опубликовано: 19.04.2023

Есть такая таблица

    CREATE TABLE IF NOT EXISTS storage (
      `email` String,
      `apps` Nullable(String) DEFAULT NULL,
      `app_youtube` Int16 DEFAULT 0,
      `app_maps` Int16 DEFAULT 0,
      `lastUpdated` DateTime('Europe/Moscow'),
      `firstName` Nullable(String) DEFAULT NULL,
      `lastName` Nullable(String) DEFAULT NULL,
      `userTypes` Nullable(String) DEFAULT NULL,
      `locations` Nullable(String) DEFAULT NULL,
      `tab_numbers` Nullable(String) DEFAULT NULL,
      `sex` Int16 DEFAULT 0,
      `lang` Nullable(String) DEFAULT 'en',
      `country_code` Nullable(String) DEFAULT NULL,
      `country_name` Nullable(String) DEFAULT NULL,
      `city_name` Nullable(String) DEFAULT NULL
    ) ENGINE = MergeTree()
    PRIMARY KEY (email)
    ORDER BY (email, lastUpdated, sex, country_code, lang)
    SETTINGS allow_nullable_key = 1;

Мне нужно чтобы в эту таблицу не записывались данные если запись с email уже есть в этой таблице.

Запись в БД я делаю так (node js / @clickhouse/client):

await client.insert({
    table: 'storage',
    values: array_data,
    format: 'JSONEachRow',
});

В итоге в таблице появляются повторяющиеся записи с одинаковым значением столбца email

я думал что PRIMARY KEY (email) не должна пропускать дубли.... почему так происходит и как это решить?

UPD. либо удаление дубликатов по столбцу email делает clickhouse сам в фоне а мне просто нужно при выборке делать группировку по ключу?.....

Ответы

Ответов пока нет.