2013-10-15 5 views
1

Я только начал использовать Друид, в частности, с RDruid, и поскольку наш набор данных довольно велик, я хотел бы извлечь меньший рандомизированный образец из БД.Случайная выборка из баз данных друида

Использование RDruid У меня есть запрос, который выглядит следующим образом:

res2 = druid.query.groupBy(
    url = druid.url("hostname", port=8080), 
    dataSource = "playback", 
    intervals = interval(
    fromISO("2013-09-20T00:00:00"), 
    now() 
), 
    dimensions = list(dimension("platformInfo_deviceType"), dimension("isp")), 
    granularity="hour", 
    aggregations = list(
    sum(metric("streamStartCount")) 
) 
) 

Я хотел бы, чтобы он строить почасовой/поминутно накопительные на случайной части исходных данных.

Возможно ли это? Возможно, я мог бы попробовать что-то вроде назначения случайного 4-значного числа/строки в базовые записи данных и применить фильтр, который только сворачивает записи с соответствующими правилами.

E.g. если случайная строка> 8888, то она будет выбирать все записи между 8889 и 9999.

Любые идеи?

+0

Если вы покажете мне, как вытащить n-ю запись, я покажу вам, как пробовать любое количество записей в (псевдо) -случайных интервалах. –

ответ

0
sample.big.n <- function(n, max) trunc(runif(n, max=max+1)) 

sample.big.n(5, 1e9) 
[1] 960118066 734686176 291924461 238165419 195301121 
sample.big.n(5, 1e9) 
[1] 682097669 519657711 435974111 420722901 266094914 
sample.big.n(5, 1e9) 
[1] 134806446 281796597 595062788 551378278 648440525 

Добавлен 1 в макс, чтобы дать последней записи равный шанс с остальными. Должна быть вероятность приближения 0 (или, по меньшей мере, не более 1е-16) от runif, возвращающая конечную точку интервала.