关于 Tableau Desktop 如何与超大型数据库对话的简单问题
Posted
技术标签:
【中文标题】关于 Tableau Desktop 如何与超大型数据库对话的简单问题【英文标题】:Simple Question about how Tableau Desktop talks to a very large database 【发布时间】:2019-01-19 21:41:47 【问题描述】:我只是很好奇 Tableau 如何与大型数据源对话——例如,如果我有一个包含 140 万条记录的数据源,并且我用这些数据制作了一个简单的表格,可能是图表等,那么如何tableau 能得到这些数据吗?它是否会查询数据源,询问数据源有多少,然后拉入前 10,000 个,它是否返回并检索下一个 10k 等等?还是一口气完成?另外我想知道 Tableau 将接收到的这些数据存储在哪里?
希望我的问题有意义 - 只是想了解底层机制。 谢谢!
【问题讨论】:
您可以通过运行数据库监控工具并查看提交的 SQL 来找出答案。报告工具通常足够聪明,可以提交高效的 SQL。但是,例如,您正在组合两个完全不同的数据源,是的,它可能必须提取所有数据并在 tableau 服务器中组合。 您介意推荐一个我可以使用的工具吗?谢谢 取决于数据库。在 SQL Server 中,您可以使用 SQL Profiler 或 DMV,或者我最喜欢的是sp_WhoIsActive
。您有什么想要解决的问题吗?
是的,我使用 odata- 作为连接,但我不确定 Tableau 是如何查询数据的?在我看来,它只是不限制它对 odata 服务的调用——所以如果我有 400 万客户,它会简单地查询 odata 端点并带回 400 万?这不是 excel 电源查询的工作原理,它限制了它的调用量,如果你想要更多,它会简单地缓冲回到数据库并给你下一个 1000 左右等等......所以基本上 Tableau 不是有点“傻”我这样做?还是低效?
据我了解,Odata 不同于一般的关系数据库。它在网络上,所以完全不同
【参考方案1】:
Tableau 可以通过多种方式使用外部数据源。您可以将整个数据库内容提取到本地文件(称为提取),也可以与数据库建立实时连接。
如果连接处于活动状态,则 Tableau 会发送数据库查询,旨在返回您想要的数据,而不是数据库的全部内容。因此,如果您有 140 万条记录,其中包含例如全年的销售信息,并且您想要每月总计,Tableau 将发送一个查询,要求数据库返回每月总计。这将导致只有 12 个数字返回给 Tableau:数据库本身会完成这项工作,Tableau 不需要提取 140 万个数字并将它们相加。这就是大多数数据源的工作方式:用户请求一个结果(使用 SQL 查询),然后数据库确定如何返回该结果。这意味着您不需要每次想要添加一些数字时都复制整个数据库。
实时查询不会对数据库进行抽样:您得到的答案通常是正确的总数(尽管 Google 的 BigQuery 等一些来源除非另有说明,否则会对某些统计聚合使用抽样)。
Tableau 和许多数据库都会缓存最近完成的查询结果,因此结果会更快。 Tableau 的结果将在本地举行。
【讨论】:
以上是关于关于 Tableau Desktop 如何与超大型数据库对话的简单问题的主要内容,如果未能解决你的问题,请参考以下文章
Tableau Desktop 企业日常问题28Tableau 如何发布到public ?
Tableau Desktop 企业日常问题 31Tableau 如何进行“长”文本换行?