加入数据建模专家和作家 Kirk Munroe,了解 Tableau 中的关系和多事实关系。
Kirk Munroe Kirk Munroe Paint with Data 首席分析官兼创始合伙人
2024 年 9 月 9 日
分享:LinkedIn Twitter Facebook
Paint with Data 首席分析官兼创始合伙人和 Tableau DataDev 大使 Kirk Munroe 解释了在 Tableau 数据模型中使用关系的价值。
让 Tableau 为您编写 SQL — 您的仪表板消费者会感谢您
我最近在 LinkedIn 上看到一篇帖子,其中一位 Tableau 专家询问他的网络人们在 Tableau 中使用自定义 SQL 的频率。在近 230 名受访者中,41% 的人回答“一直”或“经常”!
当然,这组答案并不能明确代表整个 Tableau 社区。我有点惊讶它这么高,但我也没有完全震惊。我经常参加 Tableau 用户组并在社交媒体上观看 Tableau 专家的演示,在 Tableau 中看到自定义 SQL 或联接是很常见的事。
您可能会问:“自定义 SQL 和联
接有什么问题?” 且不论自定义 SQL 在 Tableau 中的运行速度非常慢(在实时连接中,Tableau 会在与仪表板的大多数交互中将您的 SQL 代码作为子查询运行),联接通常会使您的数据爆炸式增长,并限制您可以使用数据集回答的问题数量。没错 — 数据更多,答案更少!
这怎么可能呢?原因是,当您联接数据时,您正在创建一个数据集,该数据集旨在从总数据的子集中回答任何问题 — 除非您在任何地方都使用完全外联接,但那时您的数据集将非常大并且充满 NULL 值。
具有联接和关系的动态 SQL
20 年前,Tableau 从第一天起就动态生成 SQL。但是,它生成的 SQL 只能针对单个物理表进行。 Tableau 添加了用户界面以允许连接,但这些连接发生在您拉入视图的药丸生成的 SQL 之前。
关系于 2020.2(4 年多前!)发布,让您无需担心在将数据引入 Tableau 之前连接数据。在此之前,Tableau 中有一些动态数据建模功能。这些功能要么隐藏在幕后(例如连接剔除),要么在 UI 中难以操作且脆弱(例如混合)。
数据库会定期更新,以确保传真号码准确无误。我们会仔细 传真号码列表 检查以确保传真号码真实无误。您可以根据需要查找传真号码,例如公司所在地或业务类型。您可以使用过滤器来准确查找所需内容,例如特定规模或位置的企业。
关系的演变是神奇的!
我们首先编写(基于 SELECT)SQL 的全部原因是为了回答数据中的问题。在知道问题是什么之前,我们如何才能切实地编写此 SQL?我们只需让 Tableau 知道表 搜索特定网站上的电话号码 是如何关联的,然后 Tableau 会根据视图中的字段完成其余工作。
让我们看一个简单的例子。想象一下,超市销售额在一张带有明细项目的表中,而产品目录在另一张表中。如果我们将这些表连接在一起会发生什么?
Tableau 对话框
可选择内连接、左连接、右连接或完全外连接。
在这里我们可以看到我们有四个选项:左连接、右连接、内连接、(完全)外连接。每个选项都有其缺点。如果我们选择左连接,我们看不到尚未售出的产品;如果我们选择右连接,我们看不到没有产品的销售额;如果我们选择内连接,我们只能获得有产品的销售额和已售出的产品;如果我们选择外连接,我们会得到大量混乱的 NULL 值。此外,无论我们选择哪一个,我们最终都会得到一个比两个输入表的大小相加还要大的表。
如果我们决定在这些表之间创建关系,会发生什么?
两个表,Line Items 和 Product DB,在 Tableau 数据模型中通过关系将它们连接起来
首先,Tableau 不会爆炸数据。模型的大小是两个表的大小相加。其次,我们可以回答任何我们想要的问题!
让我们以订单和产品
销售为例只需在产品 ID 上创建关系,我们就可 以发现 销售线索 哪些产品已售出,哪些产品尚未售出。通过将我们的产品 ID 药丸从我们的 ProductDB 表拖到视图,然后引入项目数量……瞧!已售出和未售出的所有产品的列表!
Shazeera Ahmad Zawawi 关于她的数据之旅的可视化。Shazeera Ahmad Zawawi 在 Tableau Public 上的“我的数据之旅”
Shazeera 还热衷于与 Tableau 社区互动并向其学习,她称其为她的支柱和她进入数据分析领域的最佳支持者。Shazeera Ahmad Zawawi 在 Tableau Public 上制作的 My State of Mind 可视化。Shazeera 以前的每日 Viz“我的心境”在 Tableau Public 上制作。