当前位置: 首页 > 知识库问答 >
问题:

对配置单元表执行验证和检查(不能重复)

姜乐家
2023-03-14
  1. 计算记录数。
  2. 每列上的空值数
  3. 每列上唯一/不同值的数目
  4. 基于列/数据类型的列级统计数据,如min、max等
  5. 使用配置单元的内置函数to_date和其他函数检查日期列的验证

我确信,我们可以执行很少的检查或验证来验证配置单元表上的数据。欢迎提出任何建议。

共有1个答案

孟智志
2023-03-14

不幸的是,您不能为配置单元中的每个列生成此查询。像这样手动执行,或者使用shell或其他工具生成基于description table输出:

select count(*)                                 as total_records,
       --repeat these for each column
       count(case when col1 is null then 1 end) as col1_nulls_cnt,
       count(distinct col1)                     as col1_distinct,
       min(col1)                                as col1_min,
       max(col1)                                as col1_max
from your_table;

日期可以使用强制转换(col1为日期):

select cast(col1 as date) --returns NULL if the date is in wrong format

您可以像第一个查询一样计算由强制转换产生的空值:

count(case when cast(col1 as date) is null then 1 end) as col1_wrong_dates_cnt
select col1,
       case when d.dt is not null then 'Ok' else 'Wrong date' end date_check 
  from your_table t
  left join date_range d on t.col1=d.d.dt
 类似资料:
  • 下面的查询是我通过配置单元客户端、Java程序JDBC和Beeline执行的。 在Hive cilent上执行时,只需21s就完成了,而Java程序JDBC和beeline分别需要110s和200s。 配置单元客户端仅使用一个映射器就完成了此操作。 Java JDBC和beeline执行了5个MR作业。每个MR作业需要2个映射器和1个还原器。 下面是每个表的行计数。 table_one有44981

  • 然后,如果我运行这个命令来获取设施表的计数:val facTable=hivec.hql(“select count(*)from facility”),我将得到以下输出,我认为它无法找到要查询它的设施表: 如能提供任何协助,将不胜感激。谢了。

  • 问题内容: 问题已经解决了这里,但没有工作,我(不相同的弹簧引导版本我猜)本 尝试编写自定义约束验证器代码,以在保留之前检查帐户电子邮件是否存在。 // ------------------------------------------------ -------------------------- // --------------------------------------------

  • 问题已经在这里解决了,但对我不起作用(我猜不是同一个Spring启动版本) 尝试编写自定义约束验证器,在持久化之前检查帐户电子邮件是否存在。 // -------------------------------------------------------------------------- // ------------------------------------------------

  • 为了提高配置单元查询的性能,有哪些优化参数 配置单元版本:-Hive 0.13.1-cdh5.2.1 配置单元查询:- 设置hive.exec.parallel=true; 您能建议任何其他设置,除了以上,以提高配置单元查询的性能,我正在使用的类型查询。

  • 我在java中开发了一个工作正常的配置单元udf,我的函数返回输入与配置单元表中列之间的最佳匹配,因此它有以下简化的伪代码: 我的问题是,如果这个函数是由Hive调用的,为什么我需要在代码中连接到Hive?我可以使用使用我的功能的用户所连接的当前连接吗?