SQL (netezza или proc sql): создание столбца идентификатора (случайные, неповторяющиеся целые числа) - PullRequest
0 голосов
/ 14 марта 2019

Предположим, у меня есть таблица "sourcetable" с colA, colB, colC. Я просто хочу создать столбец id с неповторяющимися, уникальными и случайными целыми числами. Как я могу создать это либо в netezza sql или с помощью proc sql (SAS)?

1 Ответ

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

Чтобы обеспечить уникальность, вы обязательно ограничите id либо первичным ключом, либо уникальным.

Функции SAS UUIDGEN или RANUNI являются кандидатами для генерации значений с очень высокой вероятностью уникальности во время вычислений. Я не думаю, что есть какая-либо простая / изолированная функция, которая может гарантировать 100%, что она не будет вычислять ранее возвращенное значение.

UUIDGEN возвращает значение 36-байтового символа, например 170bf2ef-16c7-4b7f-b25b-000333d9679b

RANUNI, масштабированное до 1E15, вернет целочисленное значение длиной до 14 цифр.

data want;
  do i = 1 to 100;
    id_v1 = uuidgen();
    id_v2 = floor(1e15 * ranuni(0));
    output;
  end;
  format id_v2 15.;
run;

Для Netezza попробуйте взглянуть на SO Как преодолеть отсутствие у Netezza уникального принуждения / обеспечения ссылочной целостности? «

...