Hive 中的分层抽样

Ame*_*ina 5 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
Run Code Online (Sandbox Code Playgroud)

换句话说,如果X取值,[X0, X1]它返回以下的并集:

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

如何按多列(例如,)的元组值对查询进行分层?XY

例如,如果X采用 values[X0, X1]而 Y 采用 values [Y0, Y1],我想得到一个样本,它是以下各项的并集:

  • 10% 的行在哪里X = X0Y=Y0
  • 10% 的行在哪里X = X0Y=Y1
  • 10% 的行在哪里X = X1Y=Y0
  • 10% 的行在哪里X = X1Y=Y1

Jim*_*phy 2

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