1

我刚刚开始使用 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 之间的所有记录。

有任何想法吗?

4

1 回答 1

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 添加到最大值以使最后一条记录与其余记录具有相同的机会。runif返回区间终点的概率应该接近 0(或至少不大于 1e-16) 。

于 2013-10-15T23:14:27.150 回答