首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合并三大查询表

合并三大查询表
EN

Stack Overflow用户
提问于 2019-11-16 00:14:09
回答 2查看 75关注 0票数 1

我已经将数据从Google Analytics拉到了几个大查询表中。Google Analytics将维度数量限制为7,指标数量限制为10。

我有三个表,每个表都有相同的7个维度。我总共有30个指标(每个表中有10个)。

如何将这些表合并为一个表?JOIN或UNION似乎不是正确的方法,因为所有的“维”都有相同的名称,我不想追加额外的行;基本上只是根据维的“键”向第一个表添加20列?

EN

回答 2

Stack Overflow用户

发布于 2019-12-20 21:32:28

如果我对你的理解正确的话,你有以下几点:

表1(这里只有3个样本,而不是10个):

代码语言:javascript
运行
复制
SELECT 'metric_name_1' as metric_name, 
       'val_1' as dim_1, 
       'val_2' as dim_2, 
       'val_3' as dim_3,
       'val_4' as dim_4, 
       'val_5' as dim_5, 
       'val_6' as dim_6, 
       'val_7' as dim_7
 UNION ALL 
 SELECT 'metric_name_2', 
        'val_8', 
        'val_9',
        'val_10', 
        'val_11', 
        'val_12', 
        'val_13', 
        'val_14'
 UNION ALL 
 SELECT 'metric_name_3',
        'val_15',
        'val_16', 
        'val_17', 
        'val_18', 
        'val_19',
        'val_20',
        'val_21'

第二个表:

代码语言:javascript
运行
复制
SELECT 'metric_name_4' as metric_name, 
       'val_22' as dim_1, 
       'val_23' as dim_2, 
       'val_24' as dim_3,
       'val_25' as dim_4, 
       'val_26' as dim_5, 
       'val_27' as dim_6, 
       'val_28' as dim_7
UNION ALL 
SELECT 'metric_name_5', 
       'val_29', 
       'val_30',
       'val_31', 
       'val_32', 
       'val_33', 
       'val_34', 
       'val_35'
UNION ALL 
SELECT 'metric_name_6',
       'val_36',
       'val_37', 
       'val_38', 
       'val_39', 
       'val_40',
       'val_41',
       'val_42'

从这里,你想要得到一个这样的表:

这并不是太简单,可以通过两个步骤来实现:

代码语言:javascript
运行
复制
resulting_join as (select first_table,second_table  from first_table join second_table on True)
SELECT * EXCEPT (pos, pos_1)
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY first_table.metric_name) AS pos, 
            ROW_NUMBER() OVER (PARTITION BY second_table.metric_name) AS pos_1,
  FROM resulting_join
)
WHERE pos = pos_1

我认为在这种情况下只使用UNION ALL并添加新行要好得多。希望这对你有所帮助--如果你需要进一步的解释--我很乐意回复。

票数 1
EN

Stack Overflow用户

发布于 2019-11-16 00:24:31

我觉得你想要full join

代码语言:javascript
运行
复制
select dim1, dim2, dim3, dim4, dim5, dim6, dim7,
       t1.* except (dim1, dim2, dim3, dim4, dim5, dim6, dim7),
       t2.* except (dim1, dim2, dim3, dim4, dim5, dim6, dim7),
       t3.* except (dim1, dim2, dim3, dim4, dim5, dim6, dim7)
from t1 full join
     t2
     using (dim1, dim2, dim3, dim4, dim5, dim6, dim7) full join
     t3
     using (dim1, dim2, dim3, dim4, dim5, dim6, dim7);

这假设指标具有不同的名称,而表只有维度和指标。

如果所有表都具有相同的维度,则可以改用inner join

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58880882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档