hive sql查询获取上周,月,在一个查询中

时间:2018-03-05 19:43:51

标签: hive hiveql

我有以下hive sql查询

我想使用相同的查询来获取

  • 上周的数据
  • 上个月
  • 最近三个月

理想情况下,我希望在一个查询中完成。这可能吗

SELECT
'global_authenticated' AS experiment_type,
--experiment data
experiment_name,
variant_name,
MIN(first_date) AS min_date,
COUNT(DISTINCT visid)
FROM dwo_analysis.spark_global_authenticated_experiment_dashboard_report_activity c    
GROUP BY experiment_name, variant_name;

1 个答案:

答案 0 :(得分:0)

您只需要从表中读取三次,将每组读取数据标记为“last_week”,“last_month”和“last_3_months”,然后将UNION ALL标记为三个数据集。参见:

SELECT *
FROM (
    SELECT 'global_authenticated' AS experiment_type
        ,
        --experiment data
        experiment_name
        ,variant_name
        ,MIN(first_date) AS min_date
        ,COUNT(DISTINCT visid)
        ,"last week" AS date_extract
    FROM dwo_analysis.spark_global_authenticated_experiment_dashboard_report_activity c
    WHERE DATE < "the last week"
    GROUP BY experiment_name
        ,variant_name

    UNION ALL

    SELECT 'global_authenticated' AS experiment_type
        ,
        --experiment data
        experiment_name
        ,variant_name
        ,MIN(first_date) AS min_date
        ,COUNT(DISTINCT visid)
        ,"last month" AS date_extract
    FROM dwo_analysis.spark_global_authenticated_experiment_dashboard_report_activity c
    WHERE DATE < "the last month"
    GROUP BY experiment_name
        ,variant_name
    ) first_union

UNION ALL

SELECT 'global_authenticated' AS experiment_type
    ,
    --experiment data
    experiment_name
    ,variant_name
    ,MIN(first_date) AS min_date
    ,COUNT(DISTINCT visid)
    ,"last 3 months" AS date_extract
FROM dwo_analysis.spark_global_authenticated_experiment_dashboard_report_activity c
WHERE DATE < "the last 3 months"
GROUP BY experiment_name
    ,variant_name
相关问题