专栏首页学谦数据运营Tableau 和 Power BI 数据模型之间的四个核心差异

Tableau 和 Power BI 数据模型之间的四个核心差异

Tableau 最近发布了2020.2版本中的逻辑数据模型(The Tableau Data Model),而这一直以来是微软 Power BI 的核心之一。Power BI 的"tabular"模型在 Microsoft 各个产品之间具有共享的沿袭,诸如Power Pivot for Excel 和 Analysis Services,这些产品早于 Power BI 本身,他们拥有相同的引擎。

以下是在 Tableau中定义的简单模型:

以下是在 Power BI 中定义的相同的简单模型:

在 2020.2版本发布之前,Tableau 允许表和表之间进行联结。不过,功能也只是和Power Query中的合并查询类似,将多个表合并为一个。这个功能,现在还在。

而随着 Tableau 2020.2 版本中逻辑模型的引入,单个逻辑表可能由一个或多个物理表组成。两个或多个逻辑表可能彼此相关。这个方法与微软的tabular模型有许多相似之处,但是这并不代表你可以类比在Power BI中的建模方式在Tableau中操作。

之前的一篇文章:从另一个BI平台迁移到BI时应避免的五个错误

文中提到:

“如果要构建Power BI报表以替换旧平台上的现有报表,并询问用户他们希望报表的外观,则最常见的答复是“就像旧的一样”。这是危险信号!如果你正尝试使其执行原本不打算执行的操作,那么结果就是Power BI报表难以构建且运行灰常缓慢。”

同样的道理,企图直接用Power BI中的建模思想在Tableau中进行建模是不可取的。

所以。接下来说一下 Tableau 和 Power BI 之间的逻辑数据建模之间的四个核心区别:

一、多个事实表

Tableau支持多个事实表是其发展逻辑模型的初步尝试,然而逻辑模型却不支持多个事实表指向多个维度,这就奇怪了。

在 Power BI 中,我们通常使用多个事实表来构建数据模型,这些模型一般情况下都会与多个维度相关,如下图所示,上方三个维度表, 下方两个事实表:

但是在Tableau中,只能建立这样的模型,我就想问,这样的模型有啥意义吗?

Tableau的帮助文档《The Tableau Data Model》中有一个“不支持模型”(Unsupported models)的部分:

  • Multiple fact tables related to multiple shared dimension tables. In some use cases it is common to have multiple fact tables related to multiple shared dimension tables. For example, you might have two fact tables, Store Sales and Internet Sales, related to two common dimension tables, Date and Customer. Typically, such scenarios would require creating a circular relationship in your data model. Circular relationships are not supported in 2020.2.You can approximate this type of model by merging some of the tables in the physical layer. For example, you might be able to union Store Sales and Internet Sales into a single table, which can then be related to Date and Customer. Alternatively, you might be able to cross-join Date and Customer to create a single dimension table which can then be related to Store Sales and Internet Sales.
  • Directly relating 3 or more fact tables on shared dimensions. While it is possible to build this model in the logical layer, you might see unwanted results, unless you only use dimensions from a single table.

对于这种不支持的模型,Tableau提供了一种变通的办法:将两张事实表合并成一个表。Tableau还提供了另一种方法:交叉联结维度表。但是过来人告诉你,千万别用,使用谁“草鸡(cǎo jī)”。唯一的建议就是赶紧向Power BI学习,不过,如果完全和Power BI一样,那也就失去了意义,在别人的预设阵地上跟别人拼刺刀,可能就是找死,所以创新出比Power BI还要棒的模型,是当务之急,否则也是死路一条。

二、使用多个字段定义关系

我们知道,Power BI 的tabular模型仅允许由单个字段定义的关系,两张表中如果想对多个字段建立关系,也只能是虚线的未激活的关系,当激活了该关系时,另一个关系相应地就成了未激活。

所以在 Power BI 中,如果需要在多个字段上定义关系,则必须通过将字段串联在一起手动构建该复合键作为解决方法。例如,如果需要基于省份和城市创建地理关系,则最终将创建具有"山东青岛"等值的复合键,而不是单独在"省份"字段和城市字段上分别关联。

不过呢,Tableau 却允许我们在多个字段上定义关系:

如果是之前一直使用Power BI,那么很可能已经习惯了,当看到Tableau这种骚操作会觉得很惊奇,然后爱不释手。

不过如果是感受过了Tableau的美好,再回到Power BI中,很有可能会掉到坑里去。

三、激活关系和非激活关系

Tableau 和 Power BI 都只允许表之间有单个激活关系。不过,Power BI 允许两个表之间有多个非激活的关系。使用 DAX 度量值可以激活这些非活动关系,并在需要时将已存在的活动关系关闭掉。

比较常见的场景是:事实表中有多个日期,如订单日期和发货日期。通过度量值的激活与否来控制到底使用哪一个关系。但是更多的情况是,我们可以通过建立两个维度的日期表来分别控制这两个日期,这才是最佳实践。

但是,Tableau 不允许表之间的多个关系,非激活的也不行。

四、双向关系

在一对多关系中,Power BI 允许从一侧到多个(单方向)以及从多侧到一个(两个方向)之间的筛选器。除了特殊情况之外,Power BI 中通常不鼓励使用双向关系,因为如果模型中有多个指向同一维度的事实表,则它们可能会导致意外错误的结果。但是呢,在极少数情况下,双向关系偶尔也能产生比较好的作用从而实现目的。比如页面的权限控制一文中说过的:PowerBI 个性化定制你的报告导航

参考文档:

https://help.tableau.com/v2020.2/pro/desktop/en-us/datasource_datamodel.htm

https://www.kasperonbi.com/power-bi-desktop-dynamic-security-cheat-sheet/

最近学习了一下Tableau。Tableau还是比较贵的,不过某宝上几十大洋拿到了一年的授权。但是一年后肯定过期啊,还得重新买。这个时候parallels desktop的作用就出来了。轻松无限使用。

本文分享自微信公众号 - 学谦数据运营(XueQianData),作者:陈学谦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从Power BI“最近使用的源”到盗梦空间的“植梦”

    回忆一下,第一次用Power BI时,你在获取数据时一定是点击“主页-新建源”,然后选择自己的数据源。如果数据源是数据库,那么需要填写服务器和数据库名:

    陈学谦
  • 【强强联合】在Power BI 中使用Python(1)

    近几年,Python是越来越火了,就连地产大佬潘石屹都在年近不惑之时开始学习Python编程语言,我们做数据分析和运营的怎能不熟练运用呢?

    陈学谦
  • 你的报告够专业吗?!——使用微软Power BI绽放你的实力

    作为一名企业的部门管理者,主要工作就是对指标负责。但是经过长期的基层管理工作与学习之后深深感觉到,基层的管理者进行运营管理如果只看完成率这一个指标是远远不够的的...

    陈学谦
  • Nuc 设置断电后自动开机

    技术小黑屋
  • 释放低代码小宇宙,微软 Power Platform 震撼来袭!

    “人工智能和机器学习正在深入地渗透到每种体验中,我们的真正任务不是庆祝这些重大研究突破,而是使人工智能大众化,以便每个开发人员都可以构建这些应用程序。这意味着要...

    寒树Office与RPA
  • 1.6 分享

    花间一壶酒,独酌无相亲。数据报告做的再好,如果不能与他人及时分享,结果等同于0。这个世界上每天有数以亿计的PPT演示文稿在产出,然而90%以上的内容都是浪费的,...

    公众号PowerBI大师
  • 深入讨论阻塞与非阻塞、同步与异步的区别

    异步:某个事情需要10s完成。而我只需要调用某个函数告诉xxx来帮我做(然后我再干其他的事情)

    小程故事多
  • Java面试题总结之JDBC 和Hibernate

    答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象与面向关系数据库存在的互不匹配的现象的技术;简单的说,O...

    AlbertYang
  • 快速学习SpringBoot-Java配置

    在入门案例中,我们没有任何的配置,就可以实现一个SpringMVC的项目了,快速、高效!

    cwl_java
  • idea 控制台输出 中文乱码 解决方法

    使用intellij idea 14.1时,console 会输出中文乱码。下面分两种情况解决这种问题:一种是maven构建项目、一种是tomcat(不以mav...

    YGingko

扫码关注云+社区

领取腾讯云代金券