sql - Hive 中的分层抽样

标签 sql hive qubole

以下返回 10% A sample 和 XX 的值分层的列.

  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 = X0 所在行的 10%和 Y=Y0
  • X = X0 所在行的 10%和 Y=Y1
  • X = X1 所在行的 10%和 Y=Y0
  • X = X1 所在行的 10%和 Y=Y1
  • 最佳答案

    我会使用你上面的方法,但使用你想要考虑的列的散列。

    关于sql - Hive 中的分层抽样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274641/

    相关文章:

    amazon-web-services - hadoop s3a中的Amazon s3Exception错误请求和位置约束

    elasticsearch - 使用 Hive/Qubole 插入 ElasticSearch

    hadoop - 自动缩放 EMR - 是否需要?我应该只使用 EC2 吗?我应该只使用 Qubole 吗?

    c# - 列名称或提供的值的数量与表定义不匹配。默认值?

    sql - 将 NOT IN 转换为 NOT EXISTS

    sql - 如何在 SQL 中连接这些表

    elasticsearch - 将easticsearch查询转换为regexp的单行格式curl命令

    hadoop - Hive CLI启动引发错误无法识别的Hadoop主要版本号:1.0.4

    SQL Server 选择具有最近日期时间的记录

    php - 如何在要使用PHP开发的网站中使用Hadoop和Hive技术?