Добавление идентификаторов строк в таблицу в Snowflake SQL - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужно добавить столбец с уникальными целыми числами / хэшами в таблицу, чтобы он служил идентификатором строки.

Я создал таблицу DUPLICATES с этим запросом:

CREATE TABLE duplicates AS SELECT "a", "b", COUNT(*) as _count FROM "table" GROUP BY "a", "b" HAVING _count > 1 ORDER BY _count desc

Теперь мне нужно добавить столбец, который будет содержать уникальный идентификатор для каждой строки.Я пробовал ALTER TABLE DUPLICATES ADD 'id' int identity(1,1), однако это возвращает: Ошибка компиляции SQL: Невозможно добавить столбец "id" с непостоянным значением по умолчанию в непустую таблицу "DUPLICATES" .

Сейчас у меня не хватает идей, так как обсуждения Snowflake SQL еще не получили широкого распространения, и страница помощи Snowflake мне не помогла.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Самый простой способ сделать это в Снежинке - это использовать последовательности. Довольно просто, но их можно использовать для генерации значений для первичного ключа или любого столбца, для которого требуется уникальное значение. Как использовать:

https://docs.snowflake.net/manuals/user-guide/querying-sequences.html

0 голосов
/ 25 апреля 2018

Один простой способ - использовать row_number():

CREATE TABLE duplicates AS
    SELECT ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as id,
           "a", "b", COUNT(*) as _count
    FROM "table"
    GROUP BY "a", "b"
    HAVING  _count > 1
    ORDER BY _count desc;
...