首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qubole的数据比较

Qubole的数据比较
EN

Stack Overflow用户
提问于 2021-12-06 23:40:06
回答 1查看 42关注 0票数 2

我对Qubole.We非常陌生,最近将Oracle数据迁移到Saleforce.We,在Qubole数据中有ebiz和Salesforce数据,Lake.There和Salesforce.What之间存在一些差异,我可以在Qubole上使用这种技术来发现这些差异吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-13 12:26:32

这是我用来比较两个表的方法。将两个表组中的所有度量按所有维度进行聚合,然后使用完全连接进行比较,它将返回来自两个表的所有连接记录,而不是连接记录。这样,您就可以在表中发现缺少数据,也可以在度量中发现差异。

例如,使用Hive:

代码语言:javascript
复制
with 
sf as (
select dimension1, dimension2, ... dimensionN,
       sum(metric1) as metric1,
       sum(metric2) as metric2,
       ...
       sum(metricN) as metricN,
       count(*)     as cnt
  from Salesforce_table 
 group by dimension1, dimension2, ... dimensionN
),
eb as (
select dimension1, dimension2, ... dimensionN,
       sum(metric1) as metric1,
       sum(metric2) as metric2,
       ...
       sum(metricN) as metricN,
       count(*)     as cnt
  from Ebiz_table 
group by dimension1, dimension2, ... dimensionN
)

--compare data
select sf.*, eb.*
  from sf full join eb on NVL(sf.dimension1,'')=NVL(eb.dimension1)
                      and sf.dimension2=eb.dimension2
                      ...
                      and sf.dimension3=eb.dimension3
--Filter discrepancies only
 where (   sf.metric1!=eb.metric1 
        or sf.metric2!=eb.metric2
        ...
        or sf.metricN!=eb.metricN
        or sf.cnt!=eb.cnt
        or sf.dimension1 is null
        or eb.dimension1 is null
        )

此外,您还可以轻松地在Excel中进行比较,而不是在其中进行筛选。

度量是可以聚合的一切。例如,您可以使用一些维度作为度量,比如这个count(distinct user) as user_cntgroup by date, site_name。使用完全连接的查询将显示不同的内容。如果联接条件中使用的某些维度可以为null,请使用nvl()来匹配这些行,如我的示例所示。当然,不要在groupby中使用太多的维度,您可以跳过其中的一些维度,只有在发现聚合级别上的差异之后才能向下挖掘。

在聚合中出现差异之后,可以向下钻取并比较未聚合的行,并通过一些度量进行过滤。

另见:https://stackoverflow.com/a/67382947/2700344

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

https://stackoverflow.com/questions/70253290

复制
相关文章

相似问题

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