我刚开始使用德鲁伊,特别是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 :(得分: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)返回间隔的终点。