1

Druid、特に RDruid を使い始めたばかりで、データセットが非常に大きいため、DB からランダム化された小さなサンプルを取得したいと考えています。

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 に答える