Как выполнить стратификацию на основе столбца в Снежинке - PullRequest
0 голосов
/ 18 октября 2019

Я использую Snowflake для написания своих sql запросов. У нас есть огромная таблица с миллиардами записей, содержащих информацию о клиентах. Цель состоит в том, чтобы получить случайную выборку и использовать R для просмотра распределений. К сожалению, мы не можем использовать соединение JDBC / ODBC от RStudio к Базе данных. Это ограничение. Поэтому мне осталось извлечь экстракт из Snowflake и импортировать его в R.

Сложность в том, что у нас есть столбец с именем CUSTOMER SEGMENT , который имеет почти 24 уникальных значения. Цель состоит в том, чтобы получить образец, который представляет значительную долю от каждого сегмента. Я попытался следующий запрос:

SELECT DISTINCT *
FROM test sample(10)

, чтобы получить случайную выборку, где каждая строка имеет 10-процентную вероятность выбора. Но я не получаю выборку из каждого значения клиентского сегмента. Могу ли я узнать о любых командах sql, которые могут помочь в разбивке по сегментам клиентов. заранее спасибо.

1 Ответ

1 голос
/ 18 октября 2019

Альтернативным способом выборки для более равных по размеру разделов является использование круговой выборки

select t.*
from (select t.*, 
             row_number() over (partition by segment order by random()) as seqnum,
             count(*) over () as cnt
      from test t
     ) t
where seqnum <= 20;

"20" говорит о 20 строках для каждого сегмента.

Это можно изменить для процентной выборки. Не ясно, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...