Team DataFam Tableau User Group 05 Aug 2026
53 min 10,491 words transcribed
Summary
Sahil Choudhary — a senior analytics manager and innovation lead at Sigmoid, who also teaches Tableau and Power BI at Data Discourse — argues that a published dashboard is the start of the job rather than the end of it. At Fortune 500 scale an organisation accumulates thousands of near-identical reports, each carrying compute and storage cost, almost none documented, and nobody holding a catalogue of what exists. His answer is metadata, and he shows where it lives: rename a .twbx to .zip, unzip it, rename the .twb inside to .xml, and every chart, filter, formatting choice and data-source dependency is sitting there in a stable, predictable structure. Once an asset is XML you can parse it, which turns a day of clicking into five lines of Python — counting worksheets across ten thousand workbooks, find-and-replacing a field name everywhere at once, restyling to a new brand palette, pulling out embedded logos Tableau will not let you download. For server-side assets the same information comes from the REST and GraphQL APIs, which also expose activity logs, refresh history, subscriptions and adoption. He closes with three things worth building on that foundation: a report rationaliser that tags every asset consolidate, deprecate or modernise against your own SLAs; conversational BI, where the LLM maps a question onto your data model and the API returns real numbers; and embedded analytics, the only route to the underlying data points rather than the metadata about them. His parting point is that InterWorks, Atlan and Markup API are all businesses built on exactly this, using APIs anyone can read for free.
Key points
- Treat Tableau as a governance and business-solutions platform, not a reporting tool. Once a dashboard is published it carries cost, SLAs and an audit obligation — publishing is where the work starts.
- At scale you get near-identical reports, the same KPI under two definitions, and almost no documentation. Most organisations cannot answer which reports are actually used or which are high-value assets.
- When an upstream table or column changes, nothing tells you which of ten thousand downstream reports break. That impact analysis is a metadata problem, and it is unanswerable by hand.
- A .twbx is a zip. Unzip it, rename the .twb inside to .xml, and you have every dashboard, worksheet, filter, mark-pane setting and formatting choice in one predictable hierarchy of opening and closing tags.
- That structure is identical across every workbook you will ever open, which is exactly what makes it automatable — Looker and Power BI keep the same information, just in their own formats.
- Counting the worksheets in a workbook is five lines of Python against the XML. The same loop scales to bulk rename, bulk reformat to a new brand palette, and extracting the static images Tableau gives you no way to download.
- For server-side assets the metadata comes from the APIs instead: roughly thirty to forty endpoints cover most governance problems, and GraphQL needs far less code than REST for the same result.
- Activity logs, refresh cadences, user groups, engagement, adoption, subscriptions and alerting are all one or two endpoints away — the hard part is knowing the endpoints exist.
- Product idea one, a report rationaliser: score every asset against your own rules and tag it consolidate, deprecate or modernise, using refresh history and activity logs to find what has quietly failed or gone unused.
- Product idea two, conversational BI: the LLM translates the question and maps a column name onto your data model, the API returns the actual numbers. You are integrating endpoints, not asking the model to know your data.
- Product idea three, embedded analytics: metadata tells you what a chart is, but the Embedding API is the only way to get the data points inside it.
- InterWorks, Atlan and Markup API are companies built on this metadata, solving niche problems Tableau has not. Everything they started from is free to read, and a Tableau Developer sandbox costs nothing if you have no server of your own.
Jump to a chapter (29)
- 0:00 Welcome to Team DataFam meeting 86
- 0:31 Introducing Sahil and today's topic
- 1:56 About Sahil
- 2:37 Why a dashboard is not the finish line
- 3:37 What goes wrong at scale: duplication and no documentation
- 5:36 Upstream changes and downstream breakage
- 6:28 Risky migrations and missing inventory
- 7:09 Tableau as a governance platform, not a reporting tool
- 8:14 What metadata actually is
- 9:39 Where metadata lives: workbooks, data models, files
- 12:02 Demo: twbx to zip to twb to XML
- 14:01 How the XML hierarchy is structured
- 15:11 Reading dashboards and worksheets out of the file
- 16:52 If it is XML, you can automate it
- 18:49 Bulk rename, and why it beats opening ten thousand workbooks
- 20:48 Server-side: REST APIs and authentication
- 22:58 What the server exposes: usage, engagement, adoption
- 24:04 Product one: a report rationaliser
- 28:25 GraphQL instead of REST, and why it is less code
- 29:43 Product two: conversational BI
- 32:12 Product three: embedded analytics and real data points
- 39:17 Bulk formatting and brand colour changes
- 39:53 Extracting static images out of a workbook
- 40:38 Companies built on this: InterWorks, Atlan, Markup API
- 41:26 Everything you need is free, including a Developer sandbox
- 45:19 Q&A: does any of this work on Tableau Cloud?
- 46:34 The quiz, and how the questions are made
- 50:56 Next time: Aiden on Tableau Next
- 51:54 Wrap up
Transcript
0:01 Chris McClellan: So welcome to TeamDataFam Tableau User Group meeting number eighty-six. This TUG aims to capture all the in-person and unrecorded presentations and give them a wider audience. So I don't really care where you've presented before, or if you've never presented before, or if you've presented at TC for five years in a row. It doesn't matter.
0:22 Everyone's welcome here. We'll find a slot for you.
0:25 Email me at team.DataFam@Gmail.com, and we can find something that works for both of us.
0:31 But today we've got Sahil talking about, uh, from dashboards to products, unlocking Tableau's API ecosystem.
0:40 So obviously very technical about APIs, metadata, automating.
0:45 Um, I'm not sure. He's the expert, so I'll hand it over to you, and you can take it from here.
0:52 Sahil Choudhary: Perfect.
0:54 Thanks, Chris.
0:56 Awesome. So, hi. So the topic for the discussion for today will be from going from dashboards to products, and technically we will be talking about the metadata which Tableau gives us in the form of the verbose of the workbook, be it XML files or in the form of the APIs also. So we'll talk about all of those things.
1:17 So agenda will be, first I'll talk about, like, how do you shift the mindset and why do you need to shift the mindset from just building the dashboards to going to the product route also. And then how do you want to go there. So there will be some intrinsics of Tableau that we'll need to know about. That's like TWB file. We'll see that. And then we'll see some APIs, and then we'll see how we can start leveraging all this information to build some automation, some metadata-driven automations on top of that.
1:44 So this will be more or less the agenda.
1:46 If you have any questions during the session, you can ask me during the session also, and in that later part also when the session ends, we can take up all the Q&A as well. So anything works with me. So about me, uh, hi, everyone. My name is Sahil. Uh, currently I'm working as senior analytics manager and innovation lead at Sigmoid. Previously, I have worked in Ogham Solutions with Viraj.
2:06 And apart from my nine-to-five, uh, I'm a online ed tech educator also. I teach at Data Discourse, mostly courses about Tableau, Power BI, Fabric, the data analytics. I'm also into mentoring. I'm mentoring on TopMate. I have been speaking in the past Microsoft and Google conferences also. And I do have built various products, accelerators, which have been used by the Fortune five hundred, mostly CPG and retail companies.
2:30 So this is going to be the pointer that I want to talk about today as well.
2:34 So yeah, this is a brief introduction about me. Now, going to the subject of today. So we all, I'm assuming, have been using Tableau, right? And mostly we use Tableau to build dashboards, right? We can convert the insights, build some s-centralized governed data models, and then we can start creating reports on top of it, and then our business users can consume them, right?
2:57 But the quote Spider-Man has alwa-already in the theaters, that with great power comes great responsibility, right? If we have a big company, if you're working in a Fortune five hundred or Fortune hundred company, they tend to create a lot of reports, right? Because there will be few reports for the sales function, few reports for the finance function, and this leads to a lot of inventory of reports in the BI environment, in this case, Tableau, right?
3:24 So it's not just about, hey, I can build a dashboard, and this is how quickly I can build a dashboard. It's always about, are you building the right thing or not? Or are you even governing what's going into your BI environment or not, right? So typically, when we work at a scale in Tableau, these are the kind of problems you, which you might not see, but this exists and typically solution architects or the BI leads have to solve, right?
3:48 The first one being, if everyone is creating dashboards nowadays, self-serve is also a big thing, right?
3:54 We tend to get a lot of near identical, almost similar reports. Two reports having same KPI, might be having different definition also in the environment of Tableau, right? So that's a lot of inventory of Power BI reports and Tableau reports in the environment, and every Tableau report has a compute and storage cost attached to that, right? I'm not even talking about the cost of consumption, the time it takes for people to clean it, to consume it.
4:19 That's a altogether separate ballpark game.
4:22 But if everyone is publishing report, no one has centralized governance layer on top of it, it tends to create problem. And typically, when we even create dashboards, the mindset which we have is, "Hey, this is my requirement. I want to visualize my sales KPI and discount KPI, for example.
4:39 I'll create some charts, I'll create some dashboards, I'll publish it to the Tableau server." But very rarely do we create documentations for our dashboards also. So mostly what happens is when you work at a service principal levels or at a tenant level, you will see that a lot of dashboard don't even have the documentations attached to them. And this is not even in one company or two company.
4:59 Almost every single company is facing this problem, that they have a lot of inventory of dashboards, but no one even knows that where is the catalog of the inventory, where is the catalog of the report, for example.
5:10 Due to this, there is no documentation for the reports, for example. This leads to governance issues, right?
5:16 If I have to audit and find out how many reports are actually used by my company and how many reports are high-value assets for me, there is no way for me to find it out, right? So these are the few problems that comes into the picture when you think at a scale of a Tableau server and the Tableau reports. Of course, there could be a number of different problem statements also.
5:33 For example, let's say your company or organization is going through some changes in the back end. Let's say your data sources are changing, your tables are changing, or your columns are changing. This will lead to breakage in your reports also because your reports have one-to-one mapping with your datasets, right?
5:50 Now, if a company is going through the change, how will they find out that which reports are going to be affected if some X table or some Y column of X table is getting changed?
6:00 Right. So typically we have to do the audit of those kinds also that what's the impact of any one upstream change to the downstream reports also. And we tend to forget that how do we do this at a scale, right? If you do not know how do you play with metadatas, if you do not know how do you use APIs, you won't be able to solve these kind of problems as well.
6:20 Of course, if it's just a one report or two report, it's fairly easy. But talk– I'm talking about maybe thousand reports or ten thousand reports as per se, right? Then this becomes a issue.
6:28 And another point could be risky migrations, right? That whenever we tend to move from, let's say, server to cloud or let's say I'm changing my capacity and the tenants, I need to know how much is the inventory of my reports. Where is each report present, right? If I don't have all these data points, at scale, this starts becoming a issue for me. The issue of governance, the issue of maintenance, the issue of I don't know, I don't have the visibility, and I don't have a catalog of my reports, right?
6:55 So it's always good that we have a BI tool, and it helps us to create dashboards very quickly, but we also have to make sure that we are using it with full responsibility, and we also know how do we consume the dashboards and maintain and govern the dashboards as well.
7:09 So the one point I want to highlight here, right? Typically, when we work as analysts, we treat dashboards as our end products, right? We treat Tableau as a reporting tool. Generally, we should think that Tableau is a governance or a business solutions platform, right? Dashboards is one part of the problem that you're solving, but you should also think about that, hey, dashboard is the first starting point for me if I'm talking about governance or maintaining the entire tenant and server.
7:38 Because once a dashboard is published, a cost is attached to the dashboard. You have to make sure that everyone is following the rules. There are some gov– company SLAs that, like, they are written there, and you have to follow. You have to make sure that your guidelines of the companies, the SLAs and the policies of the companies have been followed, and you are publishing good content on the server also, right?
7:59 So this is the first point or the finish line that don't just think that you have built a dashboard, the job is done. You have to make sure that there is a governance layer set up on top of it also, because everyone needs audit and a catalog of a dashboarding environment as well, right?
8:14 Now, if, let's say, I have given you these statements that, hey, don't just think that you will just build a dashboard.
8:21 Always think of men– creating a maintenance and governance layer on top of it, that always catalog your dashboards also.
8:27 But then next question could be, how should we go ahead with that, right?
8:30 The only thing which you need to know to solve the problem of governance, maintenance, or even building products to solve the problem of product maintenance and governance is you need to know what is a metadata.
8:40 Metadata is going to be your best friend, and it's going to help you build enormous number of useful products and accelerators for Tableau environment, right? Now, if in case you do not know what is metadata, whenever we have to create dashboards and reports, we create it on top of data, right? Let's say you're building a sales report. There will be a sales table in the back-end.
8:59 It will be having a column. Let's say there's a fact table. It will be having a column of sales, quantities, discounts, and profits, right?
9:06 That is the actual data points, right? Now, when I talk about metadata, metadata is a data that describes your content, right? That, for example, my table can have a sales column which is totaling or summing up to hundred millions, for example. That is my data point. But the metadata would be, what does that sales as a field or as a column represent?
9:28 What is the data type of that column?
9:30 In which– From which table is that column coming from? What is the decimal precision in that column? These are the kind of metadata that I'm talking about.
9:39 Now, whenever we work with any BI tool, there are different layers in which this metadata will exist. For example, I'm talking about Tableau here. There will be metadata about workbooks and dashboards, and the metadata will differ based on whatever the BI asset we are talking about. For example, we talk about workbooks. There will be metadata around who created that workbook, how many pages are present in that workbook, how many charts are present, maybe what kind of formatting has been applied to that workbook.
10:07 When we talk about data models, the metadata would be what are the connection strings, what are the data sources names, how many relationships are there. Those kind of metadata details exist in your Tableau workbooks as well, right? And again, when we keep drilling down the metadata, metadata, these two things that, metadata about workbooks, metadata about data sources, exist in your local files also, right?
10:30 You can have your TWBX file, you can open it, unzip it, and you will be able to see the metadata. But when you work with a Tableau server, there is a different approach that you have to use the APIs that Tableau has given you, right? Almost every BI tool, every SaaS, to be very frank, they give you APIs that will help you scrape the information or the metadata about each and every BI asset that exist, right?
10:53 For example, I have written that we can get the activity logs from Tableau. We can get the things like refresh cadences, the user groups, the engagement, the adoption of your reports, the subscription, the alerting of your reports. Everything is available by one or two API endpoints. You just need to be aware of those endpoints. Okay.
11:11 I have written some KPIs on the right side that ninety percent of the governance issues that happens in the companies, that traces back to bad governance policies. Okay. To solve almost all these governance policies, governance issues, we have close to forty-plus Tableau API endpoints. Again, Tableau has given us very endless library to consume the APIs, but mostly thirty to forty are the APIs that you will typically need to solve these kind of issues.
11:34 Okay. So think of metadata of your BI environment, of your BI asset as the operating system of your platform.
11:41 Because every single click that you do on your Power BI or Tableau report, maybe you are dragging a field to rows and columns, for example, maybe you're creating a bar chart. Every single click is getting tracked as a metadata in your XML files or JSON files as per the BI environment. Okay. So this is a bit about metadata.
12:03 Now, this was the introduction about metadata, like, but next question could be, "Hey, Sahil, I know now that what is a metadata, but how do I see the exact metadata of my Tableau file?" Right? So it's not that tough by the way, whenever you create a Tableau report, if you're using the UI of Tableau Desktop application, this will give you a TWBX file, right, if the data model exists in your report.
12:25 The TWBX file is nothing but a zip file, okay? If you rename TWBX to z-zip, you will see a lot of files beneath that folder. So maybe I'll do very quick demo here. So let's say this is a dashboard, Book My Show dashboard, and it's a TWBX file. What I can do is I can quickly rename this file.
12:47 And if I make a zip, I can unzip this file, and this– there will be a lot of files present beneath this folder also. We have a data folder, we have a image folder. Images will contain all the static files present in your dashboard. Data will have a data model, but of course it will be Hyper file and encoded one. You won't be able to consume the data models without opening them in the Tableau.
13:08 But this specific file, TWB file, this is a XML file which contains every metadata about your report.
13:16 If I just rename this TWB file to XML file, because TWB is nothing but XML.
13:23 So if I do this,
13:26 you will see all the metadata present of your file locally in your system. I can open it with any coding IDE. For example, I'll open this with id- Antigravity, and I will get to see this.
13:40 So every single chart, every single filter that you see on your dashboard has been traced back to this XML file. Right? XML is a language that helps us to format the data.
13:49 Now, there could be different version of this metadata file. Like, for example, Looker maintains in different format, Power BI maintains in a JSON format, and Tableau specifically maintains their metadata in this XML file.
14:01 This might look very overwhelming to you guys if you haven't used XML or if you are not, like, very immune to the Python and the coding environment, but it's not that tough. The– how the hierarchy of this XML and metadata file works is there will be few tags. Tags could be workbook, data sources, worksheets, columns, and those kind of things. Every tag will have a opening tag and a closing tag.
14:24 Within this tag, you will find all the relevant information about your asset. For example, this is the entire workbook, and I can get to see that there is a opening and closing tag for the same.
14:35 And I'll see which Tableau version have been used, which computer was used to build the same, and if the report has been published to server also, you will get to see the server credentials as well. Now when you start drilling down to the workbook, you will find a lot of tags. If I start collapsing them, it will make more sense. Yes. So within a workbook, and it makes sense also the way that Tableau has structured this, uh, metadata.
15:00 There is a preference file, there's a data sources file, there's a map sources file, shared views file, actions, worksheets, and data s-dashboards, right? Now, to make things very easy for you, maybe I'll go with the dashboards first, and then we can see the other things also.
15:12 So based on how many dashboards are present in your Tableau file, everything will be present here. So, for example, here I'm seeing that in the dashboards tag, I have just one tag as dashboard. That means in my workbook, there is only one dashboard present. The name of the dashboard is Dashboard One, right? I can start drilling down into the dashboard also.
15:30 I'll get to know how the dashboard is built, what kind of data sources have been used, was there any dependency of the data sources also or not. But every single thing that you do on your screens when you click on a button in Tableau is mapped here.
15:44 This was about dashboard. The same thing you will find about worksheets as well.
15:49 If I collapse the dashboards, for example, and open worksheets, right?
15:53 If you have ten worksheets present, worksheet mean charts, by the way, in Tableau, you will find all those worksheets present here. So, for example, there is a worksheet present, Average Lead Time, okay?
16:03 If you want to see how this worksheet has been created in Tableau, you can simply click on it. You will get to know that, hey, if I collapse this, that this is a table, and if I open this, you will get to see which, what data sources have been used. Was there any dependencies of that data source?
16:19 Is there any slicer applied to that sheet or not? You will get to see here, right? And on the panes also, whatever formatting would– you would have applied in the marks pane, you will get to see almost every setting here. Even the formatting settings of your visual, you will be able to see here, right? So this is the local metadata of a Tableau files, and this exists for every workbook that you create in Tableau, and this exists in this specific standardized syntax only.
16:46 You will all– You can create any kind of dashboard, you will find the same structure in your workbook, right?
16:53 Now, the beauty of metadata is that, and this is, by the way, this stays consistent across all the tools in the software in-industry also.
17:00 If you can get your asset in a code or in a XML or JSON file, you can automate it. You can write your parsers, you can write your scripts to do any kind of bulk changes to this file.
17:12 What do I mean by that?
17:14 For example, let's say I want to know how many worksheets were present in my dashboard, right?
17:20 Crude way, if I don't know XML is, I will open the workbook of Tableau, I'll click on each sheet, I'll count it. This works well w- if you are working with one or two workbooks, but when we work with the organizations, they have ten thousand, twelve thousand workbooks. We can't do that here. But now since you know that every workbook is nothing but a XML file, you can simply scrape the XML, just loop again.
17:41 You can use any coding language which you prefer. For example, Python is very widely used for the parsing and the extraction part.
17:48 What I need to do is if I want to know how many sheets were present in this dashboard is I'll go through the XML, I'll go to the– I'll find the worksheets as a tag in the XML, I'll loop through this w-worksheets tag, and I'll find how many elements were present within this worksheet. If there were ten elements, I'll say that, "Hey, this worksheet had ten sheets." Now, the time saving- This action gives me is enormous because I don't need to open every dashboard to see this, right?
18:13 I'll just write one simple script. It won't even take me more than five lines of code to write it.
18:17 And I can take any workbook as input, and in output, I can tell you how many worksheets were present in that XML file or in Tableau file, right? The same concept can be scaled down to extract almost every metadata. Maybe you want to know, let's say, how many dashboards were present, which visual was having what kind of formatting, how many pages were present in which sheet, what kind of slicer and filter was applied.
18:40 Every single thing can be scraped from this worksheet.
18:44 Use case could be enormous, enormous. I'm going to talk about the use cases in future slides also. But typical use case could be bulk automation or bulk formatting, for example.
18:54 Let's say you had a chart called aver-average lead time, okay? And you want to rename this chart, and this chart have– Let's say this word average lead time has been used in a lot of places in the workbook, right? Instead of opening a Tableau file, doing it one by one, if I have this workbook, I can simply do Control + F, find and replace the word, and then simply convert your XML to TWB again, and then zip it again.
19:17 You can open it in Tableau, and everything will be automated on its own, right? So you don't need to do things one by one.
19:23 This is just one of the use case. There exists n number of use case, and I am going to talk about them also. But this was a one-on-one off, like what exists as a local metadata for you in the Tableau ecosystem, right? So if you talk about your report, the TWB file will help you. If you talk about Hyper, Hyper is a me-metadata, and it contains the actual data points of your data also.
19:46 For that, we have different libraries to extract the information.
19:50 So this was about local, uh, Hyper and local reporting metadata.
19:55 Now, this was the structure I talked about that every XML hierarchy will be standardized. Workbooks, workbooks will have data sources, worksheets, dashboards, windows, and preferences, right? This stays consistent for all the reports.
20:06 Now, this metadata, the local metadata, could be useful if you are working in your local environment that, hey, I want to download a report, extract the metadata, and maybe publish it, save it, document it, right? This, by the way, can also be used to build Tableau documenters, right? Almost every other week, you will see one post on LinkedIn that, "Hey, I built a documentation engine for Tableau, that you upload your workbook, it will give you a documentation," right?
20:30 Those tools, those products are built with this logic that they will sc– zip, unzip your file, take your XML, parse the entire XML, and then they will give you counts, like how many dashboards are present, how many worksheets are present, how many dash– data sources are present, right? That is nothing, but they are parsing the XML.
20:48 But when you want to work with the scale that, hey, I don't want to take inputs one by one, and it doesn't even make sense. For example, when you work with companies, they will have thousands of scale of report, right?
20:58 Then the same metadata can be extracted but in a different way. That way is called REST APIs, okay? REST APIs, by the way, if you guys do not know, every tool releases their some specific website URLs that you can hit. Of course, if you're authenticated, then only you will be able to hit them. And then the same information which I was showing you that you will be able to extract through the service or through the Tableau servers directly.
21:19 You don't need to download the workbook and check the XMLs, right? So this is the third pillar that metadata can not only be extracted locally, you can do it by the APIs also. But when FYI, you can't just go and hit the API endpoints to extract your metadata. You will need to be authenticated. There could be several way, several ways to get authenticated, but PATs are very oftenly used, right?
21:38 That you go to a settings page and generate a personal access token, and then you use that specific token to hit the endpoints, the API endpoints, right? Now, API endpoints could be n– There are n number of API endpoints. Each of them solve a different use case. For example, I have listed very few of them here. For example, if you want to see how many sites are present in a server, you hit /sites.
22:00 If you want to know how many workbooks are present in your Tableau environment, you just write the sites. Whatever site you want to refer to, write the ID of that specific site, and then write /workbooks. You will get the count of every single workbook present.
22:13 Similarly, if you want to see the data sources present, just hit the site, hit some specific site ID, and then write /datasources. You will se– get the number of data sources present. In case you are trying to link this to the governance layer, which I was talking about, this is the kind of inventory and the cataloging companies are trying to do, and they have done it in the past also, right?
22:32 And every company typically maintains a report for the admins. Typically, it's a task of administrators, but they maintain this layer that what's the inventory they're dealing with, right? That how many workbooks, how many data sources, how many tasks have been there, how many connections are there, how many worksheets also. If they want to go to that detail also, they can do that very easily.
22:51 If they want to see how many users are present, what kind of user has what kind of details, for that they have /users API for the same, right?
22:58 So the same API which was same metadata which was present in your local systems, in your local file, can be extracted by the API. Plus it gives you some more metadata, for example, about usage. Because everything which you do on your server, Tableau server, is getting tracked, and that simple adoption engagement of users is shown to you by the APIs also, right?
23:18 For example, the usage, engagement, adoption, how many users open my report, how many users use my report, all those things are exposed by the Tableau, by the APIs.
23:27 So that's about the API endpoints.
23:31 Now, once, let's say, you know this information that, hey, I know what API metadata is, I know how to scrape the metadata from local files, I know how to scrape the metadata from APIs. What can I do with this?
23:43 I'll give you some ideas, and all these ideas have been implemented by me and by other various companies also in the com– organizations, that you can use these ideas to build some products, okay? And to be very frank, there exist standalone companies also, and their only product is, "Hey, we have these kind of products." And building these products, we call it accelerators also, is not that tough if you understand APIs well.
24:04 For example, the product one idea, content rationalizer.
24:09 The problem statement that exists in almost every companies, they have typically hundreds of workbooks across their sites and projects.
24:15 And if they want to know How many reports are getting used quite often, how many reports are there which are redundant, no one is using them, no one is opening those reports. Or maybe if, let's say, a client wants to know that are there any two reports which are very similar to each other. For example, there could be a case here that you built a report called Sales twenty twenty-five.
24:35 I built a report called Sales twenty twenty-six, and the only difference between your report and my report was that I just changed the filter, right? Typically, this could have been achieved by just one report, right? And we always try to reduce the inventory and the scale in the reports.
24:48 So these kind of rationalizations that you take every BI asset of your Tableau server, let's say dashboards and the workbooks and the data sources, and you tag them under four categories.
25:00 One is consolidate. Consolidate means that, hey, two reports can be clubbed together or grouped together into one single report. You can tag that under consolidate. Eliminate means that, hey, I have seen the report metadata, I have seen the usage. No one is using it.
25:13 Remove the report.
25:14 Review could be, hey, I have seen the– let's say you set up four or five rules. That rules are, let's say, rationalization rules. Maybe you have written that if a report has not been used quite oftenly, if there are very less user of a report, or let's say if a report has a na– in the report name, there is a keyword called draft or delete or version true.
25:35 These are SLAs which companies said that, "Hey, if these are my rules, if these rules are triggered, just tell me so that I can delete the report." Right? There can be n number of other rules also. For example, if let's say in any one of the Tableau report, there is some broken visual present, that could be one trigger point for me to see that, hey, if a report is broken, why do you need that server.
25:56 Set up all these rules, and based on these rules, you can tag them under elimination or a review a report that if there is some broken visual present, just review it, and even modernize. Modernize mean that, hey, I will see every single report. I will see what kind of visuals are present in that report. If there some SLAs, let's say SLA could be all the visuals present in a report are tabular visuals, or maybe a lot of visuals are present in that report, that you can tag under modernize that, hey, I don't like this report, maybe I'll convert it to some better report, right?
26:25 To build this kind of rationalizer that I don't want to have– I want to have an entire end-to-end, uh, visibility across my BI asset, BI tenant, you can build this rationalizer. And to build this rationalizer, it's not that complicated because the only thing which you need is the workbook metadata, the data source metadata, the refresh history. Maybe you need refresh history to know that has there any past refresh of your dashboard that has failed.
26:50 Because let's say if there's a report and the past five refreshes of that report has been failing, then why do you need that report? Because that means that no one is consuming the data of that report, right?
27:00 You can see the activity log data also that if the report is not getting used, we'll tag it. You can also see the subscriptions of a report that, hey, is there any user who is not just consuming my report directly, but they are setting up the email alerts, and they are consuming the report by the emails.
27:15 You can use all these endpoints and the API limits. You can hit all these metadata to build this kind of rationalizer, right? The same thing can be done to tag reports under complexity also because nowadays no one wants to have very high complicated reports because everyone wants to lead toward governance and self-service analytics, right? If a report is more complex, it's going to be more complex by your AI models to find insights also.
27:38 So let's say the task is you have ten thousand reports in your server, and you want to tag each report under high complexity, medium complexity, and low complexity. This can be built very easily by just parsing the XML of each file and tagging it how many data sources were present, how many relationships were present, how many worksheets were present, how many dashboards were present.
27:57 Based on these, you can create some weighted score and tag each report as high, medium, and low complexity, right?
28:03 So yeah, this is the first idea, and this you can implement right away after going through this slide. I'll share the slides also. I have written some API endpoints also, some requirements also. You can use all that to build this rationalizer. Okay.
28:15 Again, this is the endpoints to see all the inventory because to tag each inventory under eliminate, review, consolidate, and modernize, we'll need to see how many reports exist, right? For that, use list projects. To see the data sources, you can use the GraphQL API. GraphQL API is, uh, another method which Tableau has given us to extract the metadata.
28:35 And it's very easy for us to extract the metadata by not using REST API, but using GraphQL APIs, right? There are two different technologies. One is REST and one is Graph.
28:44 In REST, you'll need to write a lot more code to extract a, an, a metadata. In Graph, you just need to write very smaller queries to get the metadata.
28:51 Same, otherwise, there is no difference. You get the same metadata from both the technologies, right?
28:56 To see the usage statistics, you can hit the usage include metrics. Again, Tableau also gives you a PostgreSQL database. You can hit that to see all the metadata as well. To access the usage, like how many users are present for each report, you can have the permissions API endpoint. To see the refresh cadences, you can have the extract refreshes API endpoint.
29:16 To see how many report subscriptions have been set up, you can see the subscription endpoint, and same thing for the API logs also, right?
29:22 If you combine all these API endpoints, if you hit the APIs, build some front-end to consume this information, you have product ready that will help any organization to plug and play their credentials and see the rationalization part of their input reports, right? This is the first idea, and this is widely popular nowadays in all, most all the service-based companies also.
29:43 The second product, very widely used nowadays, conversational BI.
29:47 Let's say the problem statement is, hey, you want, uh, me to build a conversational chatbot. I don't want to, let's say, use Tableau Einstein.
29:54 Uh, I build my own product. The product will take Tableau dashboard as input, and it will allow my user to ask questions, and then it will show the answers on the front screen. If you have to build this kind of product also, the only thing you need to know is nothing but the endpoints and the APIs, which I was talking about, right? So how it will work is user will ask a question about the data.
30:14 And let's say I'm writing, "Hey, give me the numbers sales KPA of my some XYZ sale report." Right? So they'll ask a question To find or to map this question to my data point or data sources, I need to see all the data sources present in my Tableau server. For that, I need to see the list of all the data sources and then pick the right one, right? To list all the data sources of a Tableau server, you will need to see the slash data sources endpoint, right?
30:38 And of course, how will you pick the right one? Leave that to the LLM models, leave that to Claude. They are very good in reasoning, but they can't– LLMs can't interact with your data product site. You have to integrate them with the API endpoints only.
30:51 Once you have that, once you have the data model selected, you will see the schema of that data source, and you will see the API. Again, GraphQL is a great technology for that. Once you have the data source or data model name ready, just give that name to the GraphQL to see all the columns present in that data model.
31:08 Once you have the columns present, let's say the question was: Give me the sum of sales for each country. Your Claude or LLM will tag country column to the name of a country column present in your data model. The sales as– The keyword sales will be mapped to the sales column present in your data model because you have already extracted the schema to the GraphQL.
31:28 You will pass both things. You will convert your English sentence, by the way, to some keywords and the phrases which your data model will exi– uh, will understand, and then you just want to execute your da– the VisQL query. You will send the query to the data model. Whatever the results are returned, you will show them back to the screen.
31:46 This product is also not very difficult to build. We have also built it. And again, nowadays technology have been demo-democratized, right? Everyone nowadays don't care about technology. They can ask Claude to build it also. But this is the flow, and you can only build it if you know how to use APIs. In the right side, I have also given you API endpoints, that for each step, what kind of information or API endpoint you will need, right?
32:08 So this is the second product you can build with the help of APIs information.
32:13 Third po-point is embeddings or embedded analytics, right?
32:18 Till now, I have been talking about, hey, you can use metadata either through the local systems, by the XML, or through the service by the API of REST or Graph.
32:29 This is the third vertical that Tableau also releases your analytics and the metadata through the Embeddings API.
32:36 Now, the reason you should use Embeddings API is there are some specific metadata which will only be released, which Tableau will only show you if you're using Embeddings Analytics or Embeddings API. What do we mean by that? For example, you have a Tableau dashboard, and there are different charts in the dashboard. And you want to extract every single data point present in that chart.
32:58 Maybe you have a bar chart of country and sales.
33:01 And you also want to extract the data points that for each country, what was my number.
33:06 This kind of data you cannot extract by any other method other than Embeddings API. Okay? So ideal way to extract the actual data, not only metadata, is if you integrate or embed your report into your custom products.
33:20 For that, again, there is a process. You have to get the Embeddings API, you have to generate JWT, and then the same API endpoint which existed for normal REST API. There are slightly different variations for that, but the same APIs can be mapped to the Embeddings APIs also. And I already told you, the prime use case of using Embeddings API is you can also extract that data present in each worksheet.
33:41 Okay.
33:42 The use case could be, let's say, you want to automate your testing of reports. And the typical testing approach would be, you will compare your Tableau charts data with your, let's say, Snowflake data or whatever is your back end. For this, you need two things, right? You need the data of a Tableau report, Tableau chart, and then you will need the data of a Snowflake chart, Snowflake data point, right?
34:04 To get the Snowflake data, you can write SQL query. Very easily you can write it, and you will get the result. But how will you get the data present of your chart? Because you need to compare Snowflake's output with Tableau's output, right? To extract the chart's output, the chart's data, you will need to use the Embeddings API, otherwise there is no other way.
34:21 At least I'm not aware of any other way to extract the data for the same.
34:24 Okay. So typically in the market, you will see tools like automated testings, automated validation. There is a company, by the way, called Datagaps. Their only product is that, hey, we have solved the automated testing, and they are using Embeddings API for that.
34:38 Okay.
34:40 The fourth product is migrations, right? Everyone nowadays is trying to migrate reports from tool A to tool B, or maybe they're migrating from legacy tools to Tableau and vice versa also, right? Or maybe they want to create reports by code. They don't want to go to open, open the Tableau report, Tableau application, click on some buttons, and then get the report.
35:00 They want to migrate and rebuild the reports, and this migrations can also be done automate, in automated fashion if you understand that API exists for the same.
35:10 Now, let's say you want to migrate from Power BI to Tableau. Okay, you have ten thousand reports.
35:16 Ideal way would be, of course, you will lift and shift, you will see the report, build the same in Tableau. That is not preferred, by the way. The typical way of doing it in automated fashion could be, hey, I will first connect to my Tableau server.
35:28 Uh, there's a TC, TSC library that helps you connect to the server directly. You will read the metadata present of a data model. You will read the XML of your report. You will rewrite the same XML, but in a language of Tableau. Or you will rewrite the XML of Power BI, because if you're migrating from Power BI to Tableau, you will read the metadata of Power BI file.
35:48 That will be JSON, and you just need to convert that JSON to XML, right? This translation is not very complicated. Just extract the metadata, mask it, give it to LLMs, and they will give you the converted code. So whenever nowadays companies are also doing the migration activities or building by code that, hey, I will write that I want a sales workbook, you can use the same steps which are written here that connect to the workbook, connect to data source, get the schema.
36:13 If you want to translate to it to some other tool, maybe to Power BI application or to some Looker application or, let's say, from Looker to Tableau, from Power BI to Tableau, it's just a matter of metadata translation, right? So that can be done very easily if you understand that a metadata or API endpoint exists for the same.
36:29 Because Metadata will be same for every report. That means I can create a report, uh, code. That code will parse and do the translation part for me. Okay, so this is a fourth product which is also very widely nowadays used in the companies as well.
36:45 Bonus that– Again, I'll talk about few of the bonus points that there is a thing called activity logs, and this is very helpful when you want to audit and see is there any report which is not getting used in your environment.
36:58 If you want to see the admin insights, there are Tableau Server events, Tableau Server users. You can see both of them, combine them to see the usage of your report.
37:06 Activity log exists as a JSON file in your Tableau Clouds also, and you can also see if you want to see the compiled list of historical events, the each click the user has been doing, you will need to use the PostgreSQL databases, which the Tableau has also released.
37:21 Right? So all these activity logs can be built to find that I can have thousand reports, but am I using those thousand reports or I'm just using ten reports and all other nine hundred and ninety reports are waste. So all those kind of questions can be answered by the activity logs APIs.
37:36 Then next bonus is, this is very widely used. You can build an inventory of your tenant that, hey, I'll have a one single Tableau report. The Tableau report will have a list of all the data sources, all the workbooks, all the users present in my company, right? And how do you build it? You first need to have the list of workbooks. You need to have the user statistics, and then you just, if you want to tag that, is the report getting refreshed or not, just hit the jobs refresh API.
38:00 So you'll get that specific element also, and then you can tag the same in the documentation, right? So building a full content inventory of your BI environment is also very widely, uh, discussed problem statement, and this can be solved if you know the APIs.
38:13 Some automations that you can do when you do the delivery of your projects. Again, I have written this example because I have solved the problems in the past. For example, once a CPG company came to us that, "Hey, we are changing our logo, and we have five thousand reports, and the same logo has been used in five thousand reports. How do I change it?" One way could be doing it manually, other way could be if in case you paid attention to the XML part, right?
38:36 All the files of the images are present in that folder. Now, if I have to automate this, right, I will download the Tableau workbook. There is API to download the workbook also. I will write a parser. That parser will go to the specific dashboard, go to the image, find the logo, and replace the logo with a new logo, and that's it. Just unzip the file again, and your report is present.
38:57 Just publish it the server again.
38:58 So if you understand the XMLs, if you understand the APIs, these kind of bulk automations or performing actions in bulk, for example, this, that, hey, I want to add some logo on every report, I want to add some text on every report, this is a matter of a day or two for a task.
39:14 Okay? So the metadata-driven automations are a big thing.
39:18 Then you can also do formattings of your reports. Typically, what happens is when there are some company migrations or acquisitions is happening, right? Let's say there was a company, and they sold a small BU of their company, right?
39:29 And now the same report exists for that specific smaller company, and now let's say they want to change the colors of the reports based on their brand formattings. One way would be you will do it manually. Other way would be there is a preference tag in the workbook, go to that, change the colors automated, in automated fashion, write a parser for that, and you're good to go, right?
39:48 So these kind of bulk operations are only possible if you know the metadata well.
39:53 Static resource extraction, if you have used some in– some logo in your report. I'm not sure this is possible in Tableau right now, but I used… I tried to do it one to two years back. This was not possible that if I have used some logo in my Tableau report and I want to download that image, there is no way to do that. I'm not sure again that if it's possible right now, maybe Viraj or Chris can correct me.
40:13 But if that is still the case that Tableau doesn't allow me to download the images which are present in your dashboard, there is an automated fashion or there is a manual way that, hey, unpack that TWBX, open that image folder, extract it, right? The static resource extraction is also a big thing, uh, and, and can be solved by the metadata way, right?
40:34 And all these products, all these problem statements can be solved, and people have been doing it. And I have given you few examples here. There's a company called InterWorks. There's a company called Atlan. There's a company called Markup API.
40:45 Of course, Tableau is also re-releasing their custom integrations every day and then, right. But typically, if you think that there is any problem statement that cannot be solved by Tableau on its own, if you understand APIs, if you under-understand metadata, you can build your own company, and you can build your own accelerator product to solve that problem.
41:03 And these are few examples. I'll show you the slides also, and you can go through that what these companies are trying to solve. But all of them are doing good, and their only code or meet is they have built products, and the product solves some specific niche problems that Tableau hasn't solved yet, and they're capitalizing on that. And how do they solve that problem?
41:20 With the help of same metadata, with the help of same APIs that you and me know.
41:25 Okay.
41:27 To try this out, that I'm telling you guys that, hey, try to explore the metadata because this can leverage or help you to build some products.
41:34 Everything you need to know is free. The biggest blocker could be, hey, I don't have a Tableau server. How do I use APIs, right? Tableau has a developer program. You can just go to Tableau developer program, sign up. Within, uh, five to ten minutes, they will give you the link, right? I think for thirty days, if I'm not wrong, or fourteen days, you will get the server free of cost.
41:52 So spin up a free server, hit the PATs, generate that, and then you will be able to release the, or use the, or test the APIs, right.
41:59 If you want to test the APIs again and again, there's a software called Postman. Use that to hit the APIs, see the results and the responses of your APIs.
42:07 To understand the libraries of Tableau, because not every time you want to write everything from scratch. Maybe let's say you want to authenticate to your Tableau server. One way could be, hey, I will write the entire authentication code manually.
42:20 Other way could be, people have already wrote these reusable functions and converted them to functions to some co-codes and libraries that you can import. TAC is one library, Hyper API is one library, Documentation API, Document API is another library. So feel free to choose your SDK. Everything that's been written here solves a very dedicated purpose and problem statement.
42:39 You can use that, right?
42:41 And yeah, use all these things, combine them together, and you can actually build accelerator for your company and for your own specific problem statement as well.
42:50 Listing few of other libraries, some open source tools that you can have a look. TCS, very famous library, Tableau PyLib, Pandab. Again, I'll show you the list, you can have a look at it. But the only thing which you need to know is API endpoints, uh, XML, how do you play with XML, and a bit of a Python language. You need to have a Python, uh, knowledge.
43:11 How do you write some loops? How do you write the code?
43:14 If you know that, you can converge every single thing which was shared in this presentation and build some products. Again, I have also given you some sample open source tools also which exist, and of course, every single thing is solving some niche problem. But input for all these tools remain same, APIs and the metadatas.
43:33 Cool. So I think I'm good for the, uh, s-stuff I wanted to talk about. Few takeaways is the tab… TWBX file or the Tableau file which you work with the UI is nothing but a zip file. Extract the metadata out, and then you can unlock a lot of things, right? Feel free to use the usage logs because that will help you to save some m-money in terms of cost and compute in the Tableau Server also.
43:55 Whenever you think of a problem that you have to solve on, let's say, more than ten reports, don't think of a manual way, think of automated way. There is going to be API to solve the same problem. Okay. And of course, metadata is not given that importance, but it's a foundation of BI.
44:10 And nowadays, when everyone wants to converge their reports to some conversational bots, it's going to be a big thing because if you don't have your metadata documented well, well, it's not– if it's not governed well, you will never be able to have a conversational layer on top of your reports. So it's going to be big. It was always big, but the problem statement was very small that, hey, only administrators or the architects were using it.
44:32 But nowadays, companies are going to pay more attention because it's going to be the foundation for the conversational AI layer as well.
44:39 Cool. So that was everything. Uh, I'll take a pause. If you have any questions, uh, feel free to ask me. I have given a QR code of my LinkedIn profile. If you want to ask me questions after the session is done, just scan the QR, connect with me over LinkedIn, and you can have my, uh, answers there as well.
44:56 Chris McClellan: Surprisingly, I don't think there was any questions in the chat. There was a lot of chat, but I didn't see many questions in there.
45:04 Sahil Choudhary: Yes, Tableau. Uh, Viraj has already dropped a few of the links for the Tableau Community and the Tableau program as well.
45:11 Chris McClellan: Any questions at all?
45:12 Yeah, same comment in the chat. Great session. It was a lot of detail and a lot of good tips in there as well.
45:19 Viraj Bhargave: I think there was one question, like, about how, how this can be Tableau Cloud, right? So is this any idea if any of this is available for Tableau Cloud?
45:30 Sahil Choudhary: Yeah. The same APIs exist for the cloud and the server, so you won't find a diff-difference in the APIs for the same.
45:36 Chris McClellan: Awesome. I think that's all. We might move on.
45:41 So here's also Sahil's contact details. So LinkedIn, as he said before, or his website or Tableau Public.
45:48 And just give some people some time to finish the quiz. I don't know if people have done it or not done it, but, um-
45:55 Viraj Bhargave: That's impossible
45:56 Chris McClellan: … the clock won't last for three minutes, but we can start the clock anyway. But, uh, the link's in the chat or the QR code's there. Just scan the QR code and do it on your phone, or you can just do it on the computer by clicking on the link as well.
46:08 Um, ten easy questions. Some of them are related to, to the content we've been looking at. Um, but again, I've built the questions without actually knowing what the content is. So, um, it gets a little bit tricky sometimes as to I'm just guessing what the content is.
46:27 Uh, but there's some good API questions there as well.
46:31 And, and then coupled with a normal question. Sorry, Viraj, go.
46:35 Viraj Bhargave: No, I was going to say the questions were good, and I think quite on track with the topic.
46:40 Chris McClellan: Yep.
46:41 Viraj Bhargave: Not exactly picked from the presentation, but quite relevant to the one we shared.
46:45 Chris McClellan: Yeah, sure.
46:46 Viraj Bhargave: That's good. But yeah, it, it, it was a good reminder that I had to submit it. I had actually selected it, but the final submit was pending, so I did that now.
46:55 Chris McClellan: Oh, when you've got to actually press the button? Yeah.
46:59 Viraj Bhargave: Yeah. Yeah. Yeah.
47:01 Chris McClellan: So without rushing people too much because obviously people are, are, are, they're either doing the quiz as we go through or they're doing it now.
47:08 But the first question is pretty easy. Where do you live? Just to get a chance or to get an indication of where people are from.
47:15 India, different parts, Sri Lanka, Australia.
47:19 I would have expected more Europe at this time of the day, but that's okay. Uh, what industry do you work in? Purely to just see what Tableau can be used for. So all the normal stuff, but then solar manufacturing stands out today as being something fairly unique that we don't usually see.
47:36 And how many years have you been using Tableau? Again, it's all different, right? Everyone started back down at not knowing Tableau at all, um, but there's a good range today. And the quiz, so the, the scored questions for today is what's the primary purpose of the Tableau Server client library?
47:55 Usually to automate administrative tasks.
47:59 And that was sort of buried in that presentation, but, um, someone might have answered it before we got to that answer as well.
48:05 And which Tableau API is used to embed visualizations into web applications?
48:11 That's the JavaScript API, and there's other different APIs you can use for that, but, um, that's the main one there.
48:18 And what is the purpose of the metadata API? Is to retrieve metadata about workbooks and data sources.
48:25 And which Tableau API is used to create and manage data extracts? It's the data extract API.
48:31 And the, the experience with this is to, is to just get in and play around with the APIs, right? You might need to read a bit of documentation, but, um, you can see what those APIs do. As Sahil said, they're all designed for a very specific purpose, so you need to find out what you're trying to do or know what you're trying to do, and then find the API that does what you're trying to do.
48:54 Uh, but what is the benefit of using the, as we call, TCS Tableau Ser- Tableau Server client library to automate admin tasks? Just to reduce the workload. Like, do you want to click through and do all this process, or do you wanna actually write a script which does it for you? And obviously, that script can be used a million times, it'll never get it wrong, et cetera.
49:16 And what topics do we want to see at future TUG meetings? So M- MCP, deep diving into dashboards, AI and BI, all the good things as well. That just helps me in the future. And probably the hardest question is, who would you like to present? People keep on putting my name up there. I host the TUG, but, um, but yeah, I might have to do a presentation one time just so I can get my name off the list.
49:41 Viraj Bhargave: You should-
49:41 Chris McClellan: And, uh-
49:41 Viraj Bhargave: You should do one, one presentation, Chris.
49:45 Chris McClellan: What should I do?
49:47 Viraj Bhargave: Um, yeah. There are a lot of topics for you, I know. Mm.
49:52 Chris McClellan: Sure.
49:52 Viraj Bhargave: Maybe I, I'll share some list of topics for you.
49:54 Chris McClellan: Okay, cool. You can help me out.
49:58 And the most important slide in the presentation, right, is who got the most answers right.
50:03 Um, and Viraj comes in in third place because he put his initials in, and V is the lowest in the alphabet out of all of those.
50:13 Hot tip for when you're doing the quiz next time.
50:15 Um, but again, it doesn't matter if you're right or wrong, it's just interesting to see what people have got and, um, and hopefully you've learnt something during that and during the presentation.
50:26 As I said, for all those questions today, the questions were generated by AI. I did check the answers, I didn't just blindly use AI.
50:35 But if you want to submit questions for any quiz that we use in the future, just again, QR code or that link, you can submit them for this TUG or any other TUGs that use that system. A few more TUGs are using that now.
50:48 Um, and your questions can be included in a future TUG as well.
50:53 Again, QR codes. We've got QR codes everywhere, right?
50:57 But the next TUG is Aiden talking about dashboards and public data sources in Tableau Next.
51:04 So how to actually combine those, those two things. That'll be really cool.
51:09 Uh, again, next week, it depends on where you are in the world. For all the people in India, uh, I would suggest you're not going to be here live, you're gonna be watching a recording. I don't expect people to be here at that time of the morning when you're in India.
51:22 But obviously, if you're in the US it's gonna be a lot better. Even Europe's gonna be pretty hard as well.
51:29 But this recording, everything else that we do, everything else that a lot of TUGs do, Viraj is, um, involved with the newbies TUG, and there's a whole heap of other TUGs that all put their stuff on YouTube at Team DataFam.
51:42 And if you don't have time to watch it on YouTube, you can listen to it on the audio podcast on Spotify and Apple. And if you've got any questions at all, please email me at team.DataFam@Gmail.com.
51:55 But thanks for that, Sahil. That was great to see how that works. Um, and just get people interested in using APIs more and metadata and, and automating that sort of stuff as well.
52:06 Sahil Choudhary: Thanks, team. Thanks for organizing this.
52:09 Chris McClellan: Awesome.
52:10 No worries. And if anyone else has got any questions, feel free to unmute, or that's the end of the meeting for today.
52:16 Sahil Choudhary: Thank you.
52:16 Viraj Bhargave: Great seeing you, Sahil, after a long time.
52:18 Sahil Choudhary: Same here, Viraj.
52:20 Viraj Bhargave: Bye. Take care.
52:21 Chris McClellan: All right.
52:22 Sahil Choudhary: Bye.
52:23 Chris McClellan: Thanks a lot, guys. Talk to you soon