适用于Tableau的BI工具元浏览器

223 篇文章 13 订阅

目录

介绍

背景

要解决的问题

使用BI工具元浏览器(BMB)

怎么运行

BMB仪表板

WsUsageDetailForDash

计算值参考(Calc References)

计算值调用(Calc Calls)

有关Tableau与BMB之间差异的特别说明

实现

Program.cs

WorkbookReader

未来的改进


介绍

我为用C#编写的Tableau创建了一个工具,该工具减少了完成报告所需的时间。通过为您提供易于浏览的Tableau报表,您可以在保存工作时随时刷新该报表,从而省去了记住已使用的计算字段以及在工作簿中的位置的压力。在这里找到它!https://github.com/mcdean/BiToolMetaBrowser

仓库上的发布链接下有一个所需的运行时.zip文件。

背景

一个星期五下午晚些时候,我刚刚在我的第一份真实的表格报告里输入了第60个计算字段,我沮丧地举起手来。一长串与层次相关的字段显然已经超过了我能够推理的范围。字段的依存关系树深度很深,许多字段分散在报告中近2030个工作表和仪表板上。在设计这份报告方面取得任何进展都是不可能的。由于Tableau将您编写的代码隐藏在其视觉设计表面的背后,这已经成为我无法取胜的危险记忆游戏。那时,我认为Tableau需要具有更好的类似IDE的用户体验,尽管我必须自己创建它,但它肯定是缺少的。那个周末,我开始创建一个工具来填补这个用户体验的空白,这是我们开发人员从传统的IDE(如visual studio)中得到的期望,它将帮助我清楚地理解计算字段之间的依赖关系以及它们在我的报告中的使用位置。

要解决的问题

例如,下面显示了总成本计算字段。可以在以下网站上托管的名为 Calculated Fields-Table Calculations-Statistics.twbx的工作簿中找到:http://www.tableaubook.com/v8/workbooks.asp此工作簿的替代版本,其中添加了许多仪表板在整个Wiki中使用。添加到仪表板的工作表组合并不是特别重要,但是可以作为BMB工具的一个很好的例子。

下图说明了Tableau界面存在的问题。

请注意,有九个依赖项,并且它们甚至都没有在工具提示弹出窗口中列出。而是说“ ...还有1。另外,显示的内容实际上不是可点击的。用户也不能从此窗口导航到总成本字段定义中使用的数量单位成本计算字段的定义。

当然,可以在用户界面的左侧窗格中找到计算字段的完整列表。尽管如此,单击每个按钮以了解所计算的字段使用情况及其定义的全貌是很繁琐且令人痛苦的。此外,Tableau仅允许一次打开一个字段定义。

这是工作簿的其他视图。许多工作表都设置为隐藏,并且其中一个仪表板正在显示——隐藏所有工作表是常用的设置。在这种情况下,Tableau根本不显示计算出的字段列表。

使用BI工具元浏览器(BMB

BMB有两个部分:

  1. 元浏览器提取器(BiToolMetaBrowser.exe
  2. 元浏览器工作簿(BiToolMetaBrowser.twb

提取程序将读取您的Tableau工作簿并创建一组CSV文件,其中包含计算出的字段信息。Meta Browser工作簿使用这些CSV文件作为源数据,以在其仪表板中显示字段信息。

怎么运行

提取程序可执行文件可以从批处理文件或命令行运行。这是一个示例批处理文件:

第一个参数是Tableau工作簿的路径。第二个参数是元浏览器工作簿的位置,或您要放置CSV文件的位置。当然,您必须在浏览器工作簿中编辑CSV文件的源位置。

提取程序将弹出一个控制台窗口,并指出要提取哪个文件以及提取了多少次。保存Tableau工作簿并每次执行提取时,提取器都会侦听。

BMB仪表板

Tableau工作簿的计算字段使用情况和依存关系将显示在元浏览器工作簿内的以下仪表板集合中。

WsUsageDetailForDash

第一个称为Dashboards的仪表板显示了仪表板和工作表的摘要以及使用了多少个计算字段。可以单击仪表板工作表以在WsUsageDetailForDash下方的右侧显示它们使用的字段定义。

下一个称为工作表 ”的仪表板是相似的,但不包括仪表板类别。

计算值参考(Calc References)

计算值参考仪表盘显示如下。它显示了右上角CalcFieldCallers列表中CalcFieldSummary中哪些字段称为所选字段。它还显示哪些工作表包含CalcFieldWsUsers中的选定字段,以及CalcFieldDashUsers中显示相应的包含仪表板。最后,所选字段的定义显示在CalcFieldDetail的右下角。

计算值调用(Calc Calls)

如下所示的计算值调用仪表板在右上方显示CalcFieldUsageByCaller中的字段的定义,这些定义用于左侧CallerSummary中的所选字段。所选字段的定义也显示在右下角的CallerFieldDetail中。

有关TableauBMB之间差异的特别说明

Tableau将(尝试)在工具提示中显示可传递(或下游)依赖性。而BMB仅列出直接依赖关系,但将来可能会进行升级以包括传递依赖关系的完整列表。当前,您只需单击每个直接依赖项即可查看它们。例如,如果在Calc References”仪表盘中查看总成本” ,则它依赖于Retail TotalProfit。如果单击零售总额,则以下视图将显示折扣零售作为调用者字段:

Tableau将在工具提示的依赖项列表中显示Discounted Retail

实现

Tableau文件提取器的实现跨越两个文件:Program.csWorkbookReader.cs

Program.cs

Program.cs的代码包括一种使用FileSystemWatcher的标准文件监视技术,除了它还处理Tableau的一种奇特行为,即每次用户按下用户界面上的save按钮时,它会连续快速保存三次。在Tableau版本2018.1.820181.18.1213.2251)中观察到此行为。锁定对象Locker 用于同步对变量isExporting的访问,该变量是由Tableau的第二个和第三个文件保存操作启动的线程访问。500 ms的等待时间应用于第一个保存操作线程的执行,以延长第二个和第三个线程出现的时间。之所以可行,是因为不会期望用户在如此短的时间内保存、编辑然后再次保存。

除了协调Tableau文件的提取和导出之外,该类还负责将日志消息写入标准输出。

internal class Program {
        private static int exportCount;
        private static string outputPath = string.Empty;
        private static string tableauFile = string.Empty;
        private static bool isExporting;
        private static readonly object Locker = new object();

        private static void Main(string[] args) {

            tableauFile = args[0];
            outputPath = args[1];

            Console.WriteLine($"Watching tableau file: {tableauFile}");
            Console.WriteLine($"Writing export to path:{outputPath}");

            // Create a new FileSystemWatcher and set its properties.
            var watcher = new FileSystemWatcher {
                Path = Path.GetDirectoryName(tableauFile),
                NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                                        | NotifyFilters.FileName 
                                                        | NotifyFilters.DirectoryName,
                Filter = Path.GetFileName(tableauFile)
            };

            watcher.Changed += OnChanged;
            watcher.EnableRaisingEvents = true;

            //export on startup
            Export();
            Console.ReadLine();
        }

        private static bool GetIsExporting() {
            lock (Locker) {
                return isExporting;
            }
        }

        private static void SetIsExporting(bool x) {
            lock (Locker) {
                isExporting = x;
            }
        }

        private static async void OnChanged(object source, FileSystemEventArgs e) {
            //Tableau version 2018.1.8 (20181.18.1213.2251) 
            //saves three times back-to-back when user clicks the save button
            //this ensures that only one save is performed per half-second
            if (GetIsExporting())
                return;

            SetIsExporting(true);
            await Task.Delay(500);
            Export();
            SetIsExporting(false);
        }

        private static void Export() {
            exportCount++;
            Console.WriteLine($"Exporting #{exportCount} File: {tableauFile}");
            var wr = new WorkbookReader(tableauFile);
            wr.ExportToCsv(outputPath);
            Console.WriteLine($"Complete.");
        }
    }
}

WorkbookReader

WorkbookReader类提取物和导出Tableau文件的内容。为简便起见,这里仅是其重要方法的描述。

方法:WorkbookReader(构造函数)

构造函数从Tableau文件读取元数据并将其提取到一系列Dictionary中。这是它的签名:

public WorkbookReader(string workbookFile)

方法:ExportToCsv

此方法在path参数指定的位置创建一组CSV文件。

public void ExportToCsv(string path)

未来的改进

源代码中有一些关于小代码改进的“TODO”注释。该项目可以轻松移植到.NET Core,以便Mac用户可以使用它。另外,Tableau报告中还可以报告其他一些方面,例如表计算,标记配置或过滤器使用情况。最后,可能有或可能没有一个好的参数来包括传递依赖性的完整列表,因为它的有用性可能不超过元浏览器WooKBook所需的复杂度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
合并,整形和清理数据以使用Tableau Prep进行分析 Tableau Prep更改了组织中传统数据准备的执行方式。通过提供直观,直接的方式来组合,成形和清除数据,Tableau Prep使分析人员和业务用户更容易更快地开始分析。 Tableau Prep由两种产品组成:用于构建数据流的Tableau Prep Builder和用于在组织内调度,监视和管理流的Tableau Prep Conductor。 三个协调的视图使您可以查看行级数据,每一列的配置文件以及整个数据准备过程。根据手头的任务选择要与之交互的视图。 如果要编辑值,请选择并直接编辑。更改您的联接类型,并立即查看结果。每次执行操作时,即使是数百万行的数据,您都可以立即看到数据更改。通过Tableau Prep Builder,您可以自由地重新排序步骤并进行实验,而不会产生任何后果。 使用智能功能解决常见的数据准备挑战。Tableau Prep Builder使用模糊聚类将重复任务(例如按发音分组)转变为一键式操作。 无论是数据库还是电子表格,都可以连接到本地或云中的数据。无需编写代码即可访问,合并和清除不同的数据。Tableau Prep Builder会在可能的情况下智能地将操作推送到数据库,让您利用现有的数据库投资来提高流程执行性能。 留在您的分析流程中。使用Tableau Desktop打开输出或通过Tableau ServerTableau Online与他人共享输出很容易。轻松共享可减少摩擦,并帮助您弥合数据准备和分析之间的鸿沟,以获得更好的业务成果。 使用Tableau Prep Conductor,您可以轻松地在服务器环境中发布和运行流。使用Tableau ServerTableau Online安全共享您的数据源。创建一个环境,组织中的每个人都可以使用准备好的最新数据。 安排您的流量在白天或晚上需要时运行。使您的数据准备过程自动化,以便始终准备好新鲜数据并准备进行分析。 使用当今Tableau Server上可用的相同工具监视流。使用“状态”页面,“管理员视图”和运行历史记录来查看整个服务器上的流的运行状况,以便您可以快速解决任何问题。通过主动警报始终知道您的流量是否健康。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值