在 Impala 中创建表或视图时不同的行数

Posted

技术标签:

【中文标题】在 Impala 中创建表或视图时不同的行数【英文标题】:Different row count while creating a table or view in Impala 【发布时间】:2019-01-23 14:08:44 【问题描述】:

尝试在 Impala 中创建表和视图时的不同行数

我正在尝试在 Impala 中运行与另一个表有左外连接的查询。表结构如下:

SELECT COUNT (*)
FROM (
SELECT A.*,
    B.ORDERED_DATE,
    B.PROMISE_DATE,
    B.REQUEST_DATE,
    B.SCHEDULE_SHIP_DATE,
    A.SCHEDULED_START_DATE,
    A.SCHEDULED_COMPLETION_DATE,
               A.DATE_RELEASED,
               A.DATE_COMPLETED,
               B.ORDERED_DATE_DT,
               B.PROMISE_DATE_DT,
               B.REQUEST_DATE_DT,
               B.ORDERED_QUANTITY,
               a.DEMAND_SOURCE_LINE_NUMBER,
               B.FLOW_STATUS_CODE,
               A.ORDER_NUMBER
          FROM TABLE A
LEFT OUTER JOIN TABLE B
ON (A.DEMAND_SOURCE_LINE_ID) = (B.LINE_ID)
) AAAAA

Demand_source_line_id 在这里可以为空。

如果我选择 count(*), count(1),行数总是不同的。此外,内部选择使我的行数与外部选择不同。此外,如果我尝试使用此查询创建视图,则记录数与使用同一查询创建表时不同。

有人可以帮我吗?

预计应该是 3585 条记录。我在 count(*) 上只得到 299,在 count(1) 上只得到 662——662 条记录的需求源行 ID 不为空。

【问题讨论】:

【参考方案1】:

正如您提到的 Demand_source_line_id 可以为 null 并且您正在使用 in 条件,因此您肯定不会得到预期的输出,它也会影响计数。 你可以在条件下使用合并函数,例如合并(A.DEMAND_SOURCE_LINE_ID,-1)=合并(B.LINE_ID,-1)。

【讨论】:

以上是关于在 Impala 中创建表或视图时不同的行数的主要内容,如果未能解决你的问题,请参考以下文章

在 Impala DB 中创建表作为选择百分比子查询

Oracle创建用户角色授权建表空间

Oracle创建用户角色授权建表

Oracle创建用户角色授权建表

Oracle创建用户角色授权建表(转)

如何在存储过程中创建视图