Случайная выборка из баз данных друидов

Я только начал использовать Druid, особенно с 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-значного числа/строки базовым записям данных и применить фильтр, который сводит только записи с правилами соответствия.

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

Любые идеи?


person Theodore Van Rooy    schedule 15.10.2013    source источник
comment
Если вы покажете мне, как извлечь n-ю запись, я покажу вам, как выбирать любое конкретное количество записей через (псевдослучайные) интервалы.   -  person IRTFM    schedule 16.10.2013


Ответы (1)


 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 (или, по крайней мере, не превышающая 1e-16) того, что runif возвращает конечную точку интервала.

person IRTFM    schedule 15.10.2013