【问题标题】:why does grouping__id can not be filter by having stmt when I use grouping sets(cube rollup)?为什么当我使用分组集(多维数据集汇总)时不能通过 stmt 过滤 grouping__id?
【发布时间】:2016-05-25 11:05:04
【问题描述】:

hive代码如下:

set mapred.reduce.tasks = 100;
create table order_dimensions_cube as
select
        grouping__id as groupid,
        user_level             ,
        city_level             ,
        region_name            ,
        province_name          ,
        city_name              ,
        platform               ,
        sale_type              ,
        item_first_cate_name   ,
        app_module             ,
        department             ,
        sum(COALESCE(complete_sum, 0)) as complete_price
from
        data
group by
        user_level          ,
        city_level          ,
        region_name         ,
        province_name       ,
        city_name           ,
        platform            ,
        sale_type           ,
        item_first_cate_name,
        app_module          ,
        department
with cube having grouping__id >= 704;

事实证明没有生成记录。

更多信息:

  1. 我检查了 table:data 中有很多记录。
  2. 我在没有 stmt 的情况下尝试了这个 sql,并且生成了很多记录。

如果我想对结果进行一些限制,为什么会发生这种情况以及如何解决这个问题?

谢谢。

【问题讨论】:

    标签: sql sql-server oracle postgresql hive


    【解决方案1】:

    由于您没有提供实际数据,请尝试以下操作:

    select grouping_id,count(*) from 
    (select
            grouping__id as groupid,
            user_level             ,
            city_level             ,
            region_name            ,
            province_name          ,
            city_name              ,
            platform               ,
            sale_type              ,
            item_first_cate_name   ,
            app_module             ,
            department             ,
            sum(COALESCE(complete_sum, 0)) as complete_price
    from
            data
    group by
            user_level          ,
            city_level          ,
            region_name         ,
            province_name       ,
            city_name           ,
            platform            ,
            sale_type           ,
            item_first_cate_name,
            app_module          ,
            department 
    with cube) A
    group by grouping_id
    

    并查看每个 grouping__id 有多少条记录。那里可能存在一些问题。 还 - 尝试将外部查询更改为

    select * from 
    (select
            grouping__id as groupid,
            user_level             ,
            city_level             ,
            region_name            ,
            province_name          ,
            city_name              ,
            platform               ,
            sale_type              ,
            item_first_cate_name   ,
            app_module             ,
            department             ,
            sum(COALESCE(complete_sum, 0)) as complete_price
    from
            data
    group by
            user_level          ,
            city_level          ,
            region_name         ,
            province_name       ,
            city_name           ,
            platform            ,
            sale_type           ,
            item_first_cate_name,
            app_module          ,
            department 
    with cube) A
    where grouping__id >= 704 
    

    看看问题是否仍然存在..

    这不是一个解决方案,而是更多地尝试了解发生了什么

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 2016-10-24
      • 2020-01-10
      • 1970-01-01
      • 2019-09-09
      • 2021-12-11
      • 2011-12-14
      • 2014-04-01
      • 1970-01-01
      相关资源
      最近更新 更多