在企业项目中,经常遇到几百万甚至上亿的数据场景。为了本地或服务器效率,往往需要提取数据;但 Tableau 的嵌入式数据源难以在“实时”和“提取”之间切换,本地提取超大数据又影响开发(考虑到服务器还有刷新,本地大量提取其实完全是浪费资源和时间)。
如何提前本地开发效率,又能确保服务器提取执行呢?
“空提取”策略就是这个微妙的桥梁。
使用“空提取”可以在本地提取0行、发布数据源0行,避免本地大量无效提取。
📌 空提取策略:通过布尔参数控制数据提取条件,本地提取0行避免资源浪费,发布前切换参数即可让服务器执行全量提取。
📌 改进版本:用“小样本提取”替代完全空提取,便于本地验证数据;通过OR条件结合日期筛选,发布前切换为全集模式。
📌 适用场景:百万至上亿行的超大数据环境,本地开发无需大量提取数据,提升效率的同时确保服务器端数据完整性。
一、简单版本“空提取”的全过程
先说一个市面上流行的“空提取”方法。
1、“空提取”设置之 增加参数
实现创建参数,用于控制提取的 有/无。本地提取“空”,服务器提取“有”,因此本地和服务器的参数值不同,后续介绍。
提取依赖于是/否的条件,因此最简单的方法是创建一个 布尔类型的参数,后期用它控制 提取数据与否的开关。
2、“空提取”设置 之 新增字段,用于后续过滤条件
增加一个“自定义计算”,后续用于数据提取的提取条件。
为什么要增加自定义计算字段?因为参数无法直接作为筛选条件,必须依赖于计算方可。 这里创建“空提取”的计算,只需要引用上述 true/false 的参数即可。
3、在数据提取中,设置刷新条件
把上述的“空提取”字段加入提取的筛选器中,由于 参数默认是TRUE,所以这里也只能看到 TRUE(真)。
如果勾选“真”,就意味着提取所有数据——这是全量提取时的参数配置。
为了让本地提取0行,这里设置“排除真”,即保留“伪”的数据行。
由于参数默认值是“真”,因此本地提取就会是0行——故称之为“空提取”。
上述逻辑有点绕,但却是关键之所在。
4、发布数据源到 Tableau server
本地提取了0行,如果直接发布到服务器,提取计划还是提取0行。因此,这里的关键步骤是:发布工作簿之前,务必把参数改为“伪”(False)。
此时,“空提取”的过滤条件就是 “排除真”,所以数据都是 False,都满足条件,因此后续 Tableau server 的刷新计划就会全量提取。
5、在服务器中,补充“立即运行”,实现全量刷新计划
在浏览器中,查看增量刷新,由于“空提取”实际上发布了空行,因此需要在服务器中立即运行,确保全量刷新。
切记,本地的大量数据提取是没有意义的。
二、改进版“空提取”
2026/06/22 update
上述空提取是经典版本。喜乐君在企业服务器中,特别是上亿的企业项目中,常常用做一个改进,从而避免完全空提取导致难以验证数据的“瑕疵”;同时,上亿的数据常常直接在服务器创建数据模型,直接绕过本地提取。
1、用“小样本提取”代替“完全空提取”
为了验证数据,我常常选择一个具有代表性的小样本,比如提取某一天的数据完成测试,然后发布生产前,切换为 “全集”从而后续完成全量提取。
比如,我可以写一个计算字段“空提取”,计算逻辑如下:
[p_空提取] //参数,默认为 False, 因此全部数据不满足条件
or
[Flt Date] = today() - 7这里的参数“P_空提取”也是布尔类型,默认为 False, 因此全部数据不满足条件。但是,OR 之后的条件会有部分数据满足,这样我就可以查看某一天的数据,提取这一天的数据。
2、发布前,切换为“全集样本”
发布数据源之前,“P_空提取”的参数切换为 TRUE,这样所有行都满足这个条件。
后续数据提取刷新,就能提取全集。
📖 相关阅读: Tableau Server 服务器增量提取详解
📖 理论基础: Tableau 数据提取与刷新:增量、全量与子范围刷新详解
No comments yet