蜂巢中的分层抽样

时间:2014-08-12 21:50:40

标签: sql hive qubole

以下内容返回按10%值分层的AX列的X个样本。

  select A, X from(
  select A, 
      count(*) over (partition by X) as cnt, 
      rank() over (partition by X order by rand()) as rnk
      from my_table) table 
  where rnk <= cnt*0.1

换句话说,如果X取值[X0, X1],则返回以下联合:

  • X = X0
  • 行的10%
  • X = X1
  • 行的10%

如何根据多个列的元组值对我的查询进行分层(例如XY)?

例如,如果X取值[X0, X1]而Y取值[Y0, Y1],我想得到的样本是:

  • X = X0Y=Y0
  • 行的10%
  • X = X0Y=Y1
  • 行的10%
  • X = X1Y=Y0
  • 行的10%
  • X = X1Y=Y1
  • 行的10%

1 个答案:

答案 0 :(得分:1)

我使用上面的方法,但请使用您要考虑的列的哈希值。