hive - 使用 hive 的随机样本
问题描述
我正在尝试从一张大桌子中获取 5% 的随机样本。
create table database.five_percent_table as select * from (select distinct id from database.customer_list) where rand() <= 0.05 and month = 06;
编译语句时出错:FAILED: ParseException line 3:0 cannot identify input near 'where' 'rand' '(' in subquery source
我无法弄清楚原因。非常感谢这里的任何帮助。提前致谢。
解决方案
CREATE TABLE database.five_percent_table AS
SELECT * FROM (
SELECT distinct id
FROM database.customer_list
) alias
WHERE rand() <= 0.05 AND month = 06;
从文档:
Hive 仅在 FROM 子句中支持子查询(通过 Hive 0.12)。必须为子查询指定名称,因为 FROM 子句中的每个表都必须有名称。子查询选择列表中的列必须具有唯一名称。子查询选择列表中的列在外部查询中可用,就像表的列一样。子查询也可以是带有 UNION 的查询表达式。Hive 支持任意级别的子查询。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SubQueries
推荐阅读
- javascript - 字体真棒图标不改变颜色反应
- java - NullPointerException 试图更新包含带有版本字段的数据透视表的实体
- javascript - 如何从 Javascript 中的过滤器返回特定值
- r - 将任何比例四舍五入为最接近的 1/r 形式的算法
- node.js - 使用 node-mssql 将 SQL 日期作为字符串处理
- javascript - 如何从在 WSH 中运行的 Javascript 访问 UDP?
- c - 我的 dev++ 正在返回非静态警告。代码有什么问题?
- python - 2个不同驱动器中的Anaconda文件?帮助 Anaconda + Jupyter 笔记本不工作
- dynamic - Acumatica - 网格中的动态组合框/下拉列表,基于另一列的值
- mysql - 优化 MySQL 表以在日期范围内选择多行