使用 CTE 的子集依赖于 Hive
Subsets count on Hive using CTE
我想计算 Hive 中的行数 table,同时计算单个查询中的子集(基于 WHERE 子句中的特定条件)。我在这个 post 中遇到了 CTE,我认为它适用于非 Hive SQL。我研究了一下,发现 Hive 有 CTE。但是,当我尝试时,此表单在 Hive 中不起作用:
WITH MY_TABLE AS (
SELECT *
FROM orig_table
WHERE base_condition
)
SELECT
(SELECT COUNT(*) FROM MY_TABLE) AS total,
(SELECT COUNT(*) FROM MY_TABLE WHERE cond_1) AS subset_1,
...
(SELECT COUNT(*) FROM MY_TABLE WHERE cond_n) AS subset_n;
有人对 Hive 有解决方法或类似的工作想法吗?
不需要通用 table 表达式。用例 when 子句对条件求和:
select count(1) as total
, sum(case when cond_1 then 1 else 0 end) as subset_1
--...
, sum(case when cond_n then 1 else 0 end) as subset_n
from orig_table
where base_cond
;
我想计算 Hive 中的行数 table,同时计算单个查询中的子集(基于 WHERE 子句中的特定条件)。我在这个 post 中遇到了 CTE,我认为它适用于非 Hive SQL。我研究了一下,发现 Hive 有 CTE。但是,当我尝试时,此表单在 Hive 中不起作用:
WITH MY_TABLE AS (
SELECT *
FROM orig_table
WHERE base_condition
)
SELECT
(SELECT COUNT(*) FROM MY_TABLE) AS total,
(SELECT COUNT(*) FROM MY_TABLE WHERE cond_1) AS subset_1,
...
(SELECT COUNT(*) FROM MY_TABLE WHERE cond_n) AS subset_n;
有人对 Hive 有解决方法或类似的工作想法吗?
不需要通用 table 表达式。用例 when 子句对条件求和:
select count(1) as total
, sum(case when cond_1 then 1 else 0 end) as subset_1
--...
, sum(case when cond_n then 1 else 0 end) as subset_n
from orig_table
where base_cond
;