<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.highperformance.tech/blogs/tag/tableau/feed" rel="self" type="application/rss+xml"/><title>High Performance Technologies - High Performance Technologies Blog #tableau</title><description>High Performance Technologies - High Performance Technologies Blog #tableau</description><link>https://www.highperformance.tech/blogs/tag/tableau</link><lastBuildDate>Thu, 23 Apr 2026 04:47:09 -0700</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[Why "If It Ain't Broke" Is the Wrong Strategy for Tableau Server]]></title><link>https://www.highperformance.tech/blogs/post/tableau-server-update-strategy</link><description><![CDATA[<img align="left" hspace="5" src="https://www.highperformance.tech/Blog Images/Tableau Server Updates Blog/Size and Scope_thumbnail_linkedin.jpg"/>Deferring Tableau Server updates turns routine maintenance into a project — and eventually, an outage. Here's how to choose an update cadence that works.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_LWzwuUJpQ92YzqUwx25P8Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_OV0P56DoSRazMdsMFA3LCQ" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content- " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_1QQZR6_GRWyzFWJkYRop4Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_w4O2VKhFSdyvPhco-dcs0w" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><p></p><div><p style="text-align:left;">There is a version of this story that plays out more often than it should.</p><p style="text-align:left;"><br/></p><p style="text-align:left;">A company's Tableau Server has been humming along for years without issue. Then something changes — an SSL certificate expires, an OS patch is applied, a staff member turns over — and suddenly the server is down. The team calls Tableau support. Support pulls up the version number and says, essentially: You are too far out of date, and your version is no longer supported.</p><p style="text-align:left;"><br/></p><p style="text-align:left;">That is not a hypothetical. It is what happens when people mistake &quot;if it ain't broke, don't fix it&quot; for an infrastructure strategy.</p><p style="text-align:left;"><br/></p><p style="text-align:left;">The good news is that this outcome is entirely preventable — it just requires putting a plan in place.</p></div><p></p></div>
</div><div data-element-id="elm_XA8aANa2UhkULUYQp305aA" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"></style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-align-mobile-center zpdivider-align-tablet-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_Zuc_IwmxXQmfVXRbEYH3Fw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>The Pegboard Problem<br/></span></h2></div>
<div data-element-id="elm_G43P9z_pfLdYyqQG1Yasaw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>&quot;Wait,&quot; you might say. &quot;Why should we mess with things that are working just fine?&quot;</p><p><br/></p><p>Because no connected system operates in isolation, and most people are only in control of a subset of the infrastructure, not all of it. There's an illustration we use to drive this point home.</p><p><br/></p><p>Imagine, if you will, all the different pieces of your analytics infrastructure as pegs on a pegboard. Every individual aspect of your infrastructure — Tableau Server,&nbsp;<em>the Tableau Support contract</em>, the hardware it's running on, Tableau Desktop, database drivers, the data warehouse itself, authentication configuration (I'm looking at you, Snowflake) — these are the individual&nbsp;<strong>rows</strong>&nbsp;of holes on the pegboard.</p></div></div>
</div><div data-element-id="elm_iLIdRzYSBWSj4vHVKAGjSw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_iLIdRzYSBWSj4vHVKAGjSw"] .zpimage-container figure img { width: 518px !important ; height: 587px !important ; } } [data-element-id="elm_iLIdRzYSBWSj4vHVKAGjSw"] .zpimage-container[class*='zpimage-overlay-effect-'] figure:hover figcaption , [data-element-id="elm_iLIdRzYSBWSj4vHVKAGjSw"] .zpimage-container[class*='zpimage-overlay-effect-'] figure figcaption { background:rgba(101,98,99,1) ; } [data-element-id="elm_iLIdRzYSBWSj4vHVKAGjSw"] .zpimage-container figure figcaption .zpimage-caption-content { color:rgba(101,98,99,0.41) ; font-size:12px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/Tableau%20Server%20Updates%20Blog/Pegboard%201.png" size="custom" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Each row represents an individual component of your analytics infrastructure.</span></figcaption></figure></div>
</div><div data-element-id="elm_VbtEPdjfifYBqDKALhGLPA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>The versions of those components are the columns—and versions tend to increase over time, so you can also imagine the columns as &quot;when was this version released.&quot; Some components iterate slowly (like Tableau Server's supported version) and some iterate quickly (like Tableau Server itself), which shows up as peg holes being closer together on some rows and farther apart on others.</p></div><p></p></div>
</div><div data-element-id="elm_j_elkvlktPij_vVdPbsnPA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_j_elkvlktPij_vVdPbsnPA"] .zpimage-container figure img { width: 518px !important ; height: 587.86px !important ; } } [data-element-id="elm_j_elkvlktPij_vVdPbsnPA"] .zpimage-container[class*='zpimage-overlay-effect-'] figure:hover figcaption , [data-element-id="elm_j_elkvlktPij_vVdPbsnPA"] .zpimage-container[class*='zpimage-overlay-effect-'] figure figcaption { background:#656263 ; } [data-element-id="elm_j_elkvlktPij_vVdPbsnPA"] .zpimage-container figure figcaption .zpimage-caption-content { color:rgba(101,98,99,0.41) ; font-size:12px; letter-spacing:0px; } [data-element-id="elm_j_elkvlktPij_vVdPbsnPA"].zpelem-image { margin-block-start:7px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/Tableau%20Server%20Updates%20Blog/Pegboard%202.png" size="custom" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Columns represent versions over time. Some components release more frequently than others.</span></figcaption></figure></div>
</div><div data-element-id="elm_j7KIFBw5eoC4_EBIbLc_Bw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>The pegs themselves are placed in the holes for which versions are relevant for each component. Remember, you probably only control&nbsp;<em>some of these</em>&nbsp;pegs.</p><p><br/></p><p>Now, imagine rubber bands looping around the pegs that need to work together.</p><p><br/></p><p>If the versions of the components are compatible, those pegs are closer together, and the rubber band can fit around all the pegs without snapping. It might be totally slack, with room to give as things change. Or it might have a little bit of tension, but nothing the rubber band couldn't handle. As long as the tension in the rubber band isn't too much to handle, everything works.</p></div><p></p></div>
</div><div data-element-id="elm_TkhFOxZI1VrUKlOUhVU_sw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_TkhFOxZI1VrUKlOUhVU_sw"] .zpimage-container figure img { width: 518px !important ; height: 587px !important ; } } [data-element-id="elm_TkhFOxZI1VrUKlOUhVU_sw"] .zpimage-container figure figcaption .zpimage-caption-content { color:rgba(101,98,99,0.41) ; font-size:12px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/Tableau%20Server%20Updates%20Blog/Pegboard%203.png" size="custom" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Rubber bands stretch across compatible versions. A little tension is fine.</span></figcaption></figure></div>
</div><div data-element-id="elm_J-tn81f6K_akEpRa9Mv-tA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>But when one of those pegs drifts too far — especially the ones that aren't in your control — the rubber band stretches and, eventually, snaps. And if you've ever been hit by a rubber band when it snaps… it doesn't feel good.</p><p><br/></p><p>That is the situation organizations find themselves in when deferred maintenance finally catches up: a down server, no vendor support, and a team scrambling to reconstruct years of configuration decisions from memory.</p></div><p></p></div>
</div><div data-element-id="elm_NG-p2ujRb2fhmZ_u6Oz0Ig" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_NG-p2ujRb2fhmZ_u6Oz0Ig"] .zpimage-container figure img { width: 518px !important ; height: 587px !important ; } } [data-element-id="elm_NG-p2ujRb2fhmZ_u6Oz0Ig"] .zpimage-container figure figcaption .zpimage-caption-content { color:rgba(101,98,99,0.41) ; font-size:12px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/Tableau%20Server%20Updates%20Blog/Pegboard%204.png" size="custom" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">When versions drift too far apart, something eventually snaps.</span></figcaption></figure></div>
</div><div data-element-id="elm_blfSLM1f9NPlqaxFbYuv9g" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"></style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-align-mobile-center zpdivider-align-tablet-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_qWqxsXREcRQsj1ogXdq8dw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Scope and Size: A Better Way to Think About Updates<br/></span></h2></div>
<div data-element-id="elm_cSR7X-KCxltydrRlVvONKA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>Not all updates are created equal. Two factors determine how much work any given update actually requires:</p><p><br/></p><h3 style="font-weight:bold;"><em>Scope</em>&nbsp;<span style="color:rgba(101, 98, 99, 0.69);">describes the types of things that change from your current version to the target version.</span></h3><ul><li style="margin-bottom:6px;">A&nbsp;<strong>patch</strong>&nbsp;release typically carries only bug fixes — small changes, narrow impact.</li><li style="margin-bottom:6px;">A&nbsp;<strong>minor</strong>&nbsp;release introduces new features, and may require a bit more: it may contain several bug fixes you need to communicate to your stakeholders, but it also contains new functionality to assess and potentially implement. Users&nbsp;<em>love</em>&nbsp;new features!</li><li style="margin-bottom:6px;">A&nbsp;<strong>major</strong>&nbsp;release with backwards-incompatible changes may require an adjustment to your infrastructure's architecture, or configuration reviews — and as a result, it probably requires more planning and preparation than the other two scopes.</li></ul><h3 style="font-weight:bold;"><em>Size</em>&nbsp;<span style="color:rgba(101, 98, 99, 0.69);">describes how many of those changes accumulate before you act.</span></h3><ul><li style="margin-bottom:6px;">If you update <span style="font-weight:bold;">monthly</span>, a given release might carry a few bug fixes and one small feature.</li><li style="margin-bottom:6px;">If you update <span style="font-weight:bold;">yearly</span>, you're handling 12 months of patches, features, potential regressions, and breaking changes.</li></ul><p>Together, scope and size reflect the amount of work required to perform the maintenance, as well as the potential amount of&nbsp;<em>risk</em>&nbsp;that work carries. A sustainable maintenance strategy keeps both as small as possible.</p></div><p></p></div>
</div><div data-element-id="elm_prXy-XCu06QOzxlXpt5uRA" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"></style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-align-mobile-center zpdivider-align-tablet-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_5JZgcgU1lS2-qwTtnrISxQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>What Deferred Maintenance Actually Costs<br/></span></h2></div>
<div data-element-id="elm_IwMUwp4Gqqau6FtMXybMbg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>When you defer updates long enough, something beyond technical debt accumulates:&nbsp;<em>organizational</em>&nbsp;debt. The team member who understood the original configuration moves on. Documentation grows stale. And when something eventually breaks — because something always eventually breaks — no one knows where to start.</p><p><br/></p><p>Consider the practical math. A customer running a 2021 version of Tableau Server who needed to reach a current 2025 release was technically dealing with one upgrade. <a href="https://public.tableau.com/app/profile/tableau.core.product.marketing/viz/ReleaseNavigator-V21/FeaturesInVersionDash" title="See for yourself: use  the dash at this link to select the Tableau Server product versions between 2021.1 and the latest version. There's a lot to consider." target="_blank" rel="">But that upgrade contained&nbsp;</a><strong><a href="https://public.tableau.com/app/profile/tableau.core.product.marketing/viz/ReleaseNavigator-V21/FeaturesInVersionDash" title="See for yourself: use  the dash at this link to select the Tableau Server product versions between 2021.1 and the latest version. There's a lot to consider." target="_blank" rel="">four</a></strong><a href="https://public.tableau.com/app/profile/tableau.core.product.marketing/viz/ReleaseNavigator-V21/FeaturesInVersionDash" title="See for yourself: use  the dash at this link to select the Tableau Server product versions between 2021.1 and the latest version. There's a lot to consider." target="_blank" rel="">&nbsp;years of accumulated changes</a>:</p><ul><li style="margin-bottom:6px;">dozens of individual patch releases rolled into one,</li><li style="margin-bottom:6px;">over 200 new or updated features,</li><li style="margin-bottom:6px;">more than 20 features deprecated,</li><li style="margin-bottom:6px;">all in all, roughly 315 items to consider (excluding bug fixes).</li></ul><p>That is a fundamentally different undertaking than a routine maintenance window.</p></div><p></p></div>
</div><div data-element-id="elm_1DiY4860nUMQITHQYUOLTQ" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"></style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-align-mobile-center zpdivider-align-tablet-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_VB6gYGRMbNgjLKfqB1rKNQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>How Often Should You Update?<br/></span></h2></div>
<div data-element-id="elm_J-gR_OTNEkLtpRpKQSbb7Q" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span>The answer depends on your risk tolerance, your team's capacity, and how critical Tableau is to your organization — but the options break down clearly.</span></p></div>
</div><div data-element-id="elm_utJ-n1C7polAzjy8NgqVSg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_8_A02DBc29YLC--M6uNs5Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_Zj0E7Kq8pAoZQ-1EC69tBg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><ul><li style="margin-bottom:6px;"><strong>Monthly</strong>&nbsp;is the lowest-risk posture.<ul><li style="margin-bottom:6px;">Each release carries the least accumulated change.</li><li style="margin-bottom:6px;">Scope is narrow, size is minimal, and updates become routine enough that they stop feeling like events.</li><li style="margin-bottom:6px;">If something&nbsp;<em>does</em>&nbsp;go wrong, the workarounds are inconvenient, but not show-stopping.</li><li style="margin-bottom:6px;">This is the option that makes Tableau Server maintenance boring — and boring maintenance is exactly what you want.</li></ul></li><li style="margin-bottom:6px;"><strong>Quarterly</strong>&nbsp;is manageable.<ul><li style="margin-bottom:6px;">Contains a larger update window and will contain a few months of patches.</li><li style="margin-bottom:6px;">You will typically stay within the same major version, avoiding the impact of several backwards-incompatible changes at once.</li><li style="margin-bottom:6px;">You may have more workarounds to manage, depending on the scope and size of the changes between versions.</li></ul></li><li style="margin-bottom:6px;"><strong>Semi-annually</strong>&nbsp;is better than nothing.<ul><li style="margin-bottom:6px;">If you're not changing major versions during one maintenance window, you will be during the next one.</li><li style="margin-bottom:6px;">The scope expands accordingly: what was a recurring maintenance task starts to look more like a recurring project.</li></ul></li><li style="margin-bottom:6px;"><strong>Ad hoc or annual</strong>&nbsp;updates lead to more work, at best.<ul><li style="margin-bottom:6px;">These often require project planning, stakeholder communication, thorough testing cycles, and meaningful downtime risk.</li><li style="margin-bottom:6px;">The gap between versions is no longer a maintenance consideration — it is the project itself.</li><li style="margin-bottom:6px;">If you approach these tasks as if they are routine maintenance instead of projects, you may only learn about the risks after they've materialized. By then, you've committed to dealing with the impacts, even though they can't be quantified until everything is back to normal.</li></ul></li></ul></div><p></p></div>
</div></div><div data-element-id="elm_PgtqL9DzyjOMP-MXTayR-Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_BSJOLa_B9F8k6Wad3eVmxw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_BSJOLa_B9F8k6Wad3eVmxw"] .zpimage-container figure img { width: 500px !important ; height: 511.37px !important ; } } [data-element-id="elm_BSJOLa_B9F8k6Wad3eVmxw"] .zpimage-container figure figcaption .zpimage-caption-content { color:rgba(101,98,99,0.41) ; font-size:12px; } [data-element-id="elm_BSJOLa_B9F8k6Wad3eVmxw"].zpelem-image { margin-block-start:194px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/Tableau%20Server%20Updates%20Blog/Size-and-Scope.png" size="custom" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Update cadence shapes how much work—and risk—each maintenance window carries.</span></figcaption></figure></div>
</div></div></div><div data-element-id="elm_mbJzIErsMHLqqKpd6NxpvQ" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"></style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-align-mobile-center zpdivider-align-tablet-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_MVMEIfpfhfr0jwlQQ9qj9w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Making Updates Part of the Routine<br/></span></h2></div>
<div data-element-id="elm_pZxaqUDBCPTbHqCY0IkNXw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>The organizations that handle Tableau Server best are not necessarily the ones with the most sophisticated environments.</p><p><br/></p><div><strong style="color:rgb(106, 90, 205);">They are the ones that treat updates as routine rather than optional.</strong></div><div><strong><br/></strong></div><p>They have a maintenance schedule. They stick to it. And if something goes wrong, it doesn't take a ton of effort to remediate, because the size and scope of the maintenance was appropriately constrained.</p></div><p></p></div>
</div><div data-element-id="elm_TqYW2ln9lRTmGerSyh8O9Q" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_TqYW2ln9lRTmGerSyh8O9Q"] div.zpspacer { height:30px; } @media (max-width: 768px) { div[data-element-id="elm_TqYW2ln9lRTmGerSyh8O9Q"] div.zpspacer { height:calc(30px / 3); } } </style><div class="zpspacer " data-height="30"></div>
</div><div data-element-id="elm_-r0Z61f1NO9SJW7cCLB73w" data-element-type="box" class="zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_-r0Z61f1NO9SJW7cCLB73w"].zpelem-box{ background-color:rgba(237,28,36,0.12); background-image:unset; border-style:solid; border-color:#ED1C24 !important; border-width:1px; border-radius:12px; padding:15px; margin:0px; } </style><div data-element-id="elm_kNyEGPoE70m0MxKMFs9j4Q" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Need Help Getting Current?<br/></span></h2></div>
<div data-element-id="elm_RPs6UpXIixjZIpDoReFNGA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>If your Tableau Server is behind on updates — or if you are not sure where it stands — High Performance Technologies can help you assess the gap and build a path forward. Whether that means a one-time upgrade to get you current, or an ongoing managed services arrangement to keep you there, we can scope what makes sense for your environment.</p><p><br/></p><p>Learn more at&nbsp;<a href="https://www.highperformance.tech/services">highperformance.tech/services</a>&nbsp;or reach out directly at&nbsp;<a href="https://www.highperformance.tech/contact-us">highperformance.tech/contact-us</a>.</p></div><p></p></div>
</div></div><div data-element-id="elm_5581ggqZTayueILbIsBBxQ" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center zpbutton-align-mobile-center zpbutton-align-tablet-center"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md " href="javascript:;" target="_blank"><span class="zpbutton-content">Get Started Now</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 21 Apr 2026 11:48:18 -0500</pubDate></item><item><title><![CDATA[Introducing ViewAs: User Impersonation for Tableau Server]]></title><link>https://www.highperformance.tech/blogs/post/tableau-server-impersonation</link><description><![CDATA[<img align="left" hspace="5" src="https://www.highperformance.tech/Blog Images/ViewAs_Set Up Screen.png"/>ViewAs is a small application that lets Tableau Server administrators view the server exactly as another user sees it — through the actual UI, not just the API.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_1AgEe0FYRtqE3OO6PX4yhQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Ybv4JJFmQ8KwkPKlwpG6ZQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_ncUi9D0dQdKRJ-gEZM63eA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_bzrPvprYuxAuUc912sQptA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>I've had the pleasure of working with Tableau Server administrators for over a decade and a half now, and one question that comes up somewhat frequently is some variation of: &quot;A user says they can't see this dashboard, but from my end it looks fine. How do I see what <i>they</i> see?&quot;</p><p><br/></p><p>In most cases the answer, until now, has been: outside of Tableau Desktop, you can't. Not easily, anyway.</p></div><p></p></div>
</div><div data-element-id="elm_F1s8G9CNQZUGfmIcmhlP5w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>The Typical Approaches</span></h2></div>
<div data-element-id="elm_NKPYv2G8p8sXECjDoKB6Wg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>How you handle this depends on your environment. If you're embedding Tableau in a custom application, your wrapper app can impersonate the user and render the viz as them. This works well when it's available, but it requires that you have embedding set up in the first place and that your portal actually implements impersonation. If you're not in that situation, it doesn't help you.</p><p><br/></p><p>For row-level security issues, the workbook author or other Creators could troubleshoot in Tableau Desktop. This is effective, but now you're potentially pulling someone else into the investigation and waiting on their availability.</p><p><br/></p><p>You can also check effective permissions in the Tableau Server content permissions dialog. It's easy enough to access, but interpreting the results takes some practice — and it only tells you about permissions, not what the user actually experiences when they navigate the server.</p><p><br/></p><p>My go-to approach has been scheduling a Zoom call for a screenshare. I like this because you can troubleshoot user behavior and technical issues at the same time — sometimes the problem isn't permissions at all, it's just that the user doesn't know where to click. But scheduling a call isn't always convenient, and sometimes you just need a quick answer without the coordination overhead.</p></div><p></p></div>
</div><div data-element-id="elm_0POoyX17KPu8MgHuRCpbXQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Introducing: ViewAs</span></h2></div>
<div data-element-id="elm_DwgVnnhupXRLnoazXbhgwg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p>ViewAs is a small application that lets Tableau Server administrators <span style="font-weight:bold;">view the server&nbsp;</span><span style="font-weight:bold;">exactly as another user sees it</span> — through the actual UI, not just the API.</p><p><br/></p><p>The workflow is simple:&nbsp;</p><ol><ol><li>You authenticate as yourself</li><li>Select the user you want to impersonate from a searchable list</li><li>Launch a session</li></ol></ol><p><span style="font-family:-apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;"><br/></span></p><p><span style="font-family:-apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif;">From there, you see what they see. Their navigation, their row-level security filtering, their dashboard behavior, their effective permissions at every level. When someone reports they can't see the Sales Dashboard, you can verify in thirty seconds whether the issue is permissions, RLS, or something the user is doing on their end.</span></p><p><br/></p><p>This is also useful for validating RLS across tenants, testing how dashboards appear for different user roles, verifying that new users have appropriate access on their first day, and documenting access controls for audit purposes. Automation is still the right answer for anything you need to do repeatedly at scale — but manual validation lets you iterate quickly when you're building something new, and it gives you peace of mind that what you've built actually works the way you expect. Both have their place.<br/></p></div>
</div><div data-element-id="elm_u_c8G_T7Lwpu9sXjA1z7IA" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_IHyEHg0CtstqN-34k1GhRg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_ZuO6IRMNNNnMv9Dud5GsCA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_ZuO6IRMNNNnMv9Dud5GsCA"] .zpimage-container figure img { width: 472.52px !important ; height: 312px !important ; } } [data-element-id="elm_ZuO6IRMNNNnMv9Dud5GsCA"] .zpimage-container[class*='zpimage-overlay-effect-'] figure:hover figcaption , [data-element-id="elm_ZuO6IRMNNNnMv9Dud5GsCA"] .zpimage-container[class*='zpimage-overlay-effect-'] figure figcaption { background:#013A51 ; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit zpimage-overlay zpimage-overlay-effect-static-bottom hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/ViewAs_Select%20User%20to%20Impersonate.png" size="custom" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Logged in as myself (ironman) and prompted to impersonate a user.</span></figcaption></figure></div>
</div></div><div data-element-id="elm_Gu_pYFDU0pMYzZHgxlXJRQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_gl0V4dJVUWdgWJZxUvA43Q" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_gl0V4dJVUWdgWJZxUvA43Q"] .zpimage-container figure img { width: 350px ; height: 202.93px ; } } [data-element-id="elm_gl0V4dJVUWdgWJZxUvA43Q"] .zpimage-container[class*='zpimage-overlay-effect-'] figure:hover figcaption , [data-element-id="elm_gl0V4dJVUWdgWJZxUvA43Q"] .zpimage-container[class*='zpimage-overlay-effect-'] figure figcaption { background:#013A51 ; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit zpimage-overlay zpimage-overlay-effect-static-bottom hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/ViewAs_Impersonating%20User.png" size="fit" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Impersonating a user (thehulk) on my server. Now I see what he sees — exactly as he sees it.</span></figcaption></figure></div>
</div></div></div><div data-element-id="elm_HZkf9WkiLM5omhxp2pPKWQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Tableau Cloud</span></h2></div>
<div data-element-id="elm_P_7PmuxXQ82JKY5jzbWdtA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p>This version of ViewAs is for Tableau Server on-premises deployments. Tableau Cloud has tighter restrictions around impersonation — API impersonation requires Connected Apps with JWT authentication, which is significant overhead just to debug a permission issue. I'm exploring options for a Cloud version, but the architectural constraints are real. If you're a Cloud customer running into these friction points, I'd like to hear about your specific scenarios.</p></div><p></p></div>
</div><div data-element-id="elm__B9saYcPXaepPlU-fo7TSg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Getting Started</span></h2></div>
<div data-element-id="elm_x05Ho2_fkVOZax-mz9VOkQ" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_HuuffqGnHz5rP7BByUlzew" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_0PXNyIic5v4lAA30PpeDtw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p><strong>ViewAs is available now for free at&nbsp;</strong><a href="https://viewas.hpt.tools/"><strong>viewas.hpt.tools</strong></a><strong>&nbsp;</strong>(email required for download).&nbsp;</p><p><br/></p><p>It works on Mac, Windows, and Linux, and takes less than a minute to set up. If you're using Tableau Server authentication, you can sign in with your credentials directly. Otherwise, if you are using SSO or another method, you'll need a Personal Access Token.</p><p><br/></p><p>Questions? Reach out at&nbsp;<a href="mailto:hello@highperformance.tech">hello@highperformance.tech</a>.</p></div><p></p></div>
</div></div><div data-element-id="elm_erPXGUPy528RD81gOsFisw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-6 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_-VIZqd5-wRj6dMY-jTEciA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_-VIZqd5-wRj6dMY-jTEciA"] .zpimage-container figure img { width: 350px ; height: 202.34px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Blog%20Images/ViewAs_Set%20Up%20Screen.png" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 16 Feb 2026 11:57:00 -0600</pubDate></item><item><title><![CDATA[Tableau Server Log Reference]]></title><link>https://www.highperformance.tech/blogs/post/tableau-server-logs</link><description><![CDATA[<img align="left" hspace="5" src="https://www.highperformance.tech/files/img/abstract code.png"/>Comprehensive Tableau Server log troubleshooting reference. Maps symptoms like login failures, slow dashboards, and extract errors to specific log folders across 20+ processes. Includes Linux/Windows paths and quick reference tables. Features open-source ts-olly tool for log ingestion.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_3TnYPRdTTgyIheBF-j4l2A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Kbo85UDkRMWk9GLL6Ne3hA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_ifiuZmxaRqOQqi2G4AVzHQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_n7p5yRRzRgKse2BhTGojrw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><p></p><div><div><p style="text-align:left;"><span style="font-size:16px;">Tableau Server writes logs across dozens of folders in different formats. It can be a bit tough to find info on which logs you need, given the context you’re trying to find. Tableau's documentation covers it, but you have to cross-reference multiple pages to find what you need.</span></p><span style="font-size:16px;"></span><p style="text-align:left;"><span style="font-size:16px;">&nbsp;</span></p><span style="font-size:16px;"></span><p style="text-align:left;"><span style="font-size:16px;">This quick reference should help!</span></p></div>
</div><p></p></div></div><div data-element-id="elm_uPnKsjMIPUbM1hMYZIR1Hg" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><!-- HPT Bookmark Callout - Info Purple --><div class="hpt-bookmark-inline" style="font-family:Arial, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif;background:rgb(240, 239, 255);border-radius:10px;padding:24px 28px;margin:32px 0;display:flex;align-items:center;justify-content:center;gap:12px;position:relative;overflow:hidden;border:2px solid rgb(106, 90, 205);text-align:center;box-shadow:0 3px 10px rgba(106, 90, 205, 0.15);"><div style="content:&quot;&quot;;position:absolute;left:0;top:0;bottom:0;width:5px;background:rgb(106, 90, 205);"></div>
<div style="color:rgb(106, 90, 205);flex-shrink:0;"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:22px;height:22px;"><path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path></svg></div>
<p style="font-size:16px;font-weight:600;color:rgb(61, 59, 60);margin:0;"><strong style="color:rgb(106, 90, 205);">Don't forget to bookmark this page</strong> so you can easily find it when you need it. </p></div>
</div></div><div data-element-id="elm_xZeIGbwyVIpg5cDHGvZUzw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><div><p><span style="font-size:16px;">Log base path on Linux: <b>/var/opt/tableau/tableau_server/data/tabsvc/logs/</b></span></p><span style="font-size:16px;"></span><p><span style="font-size:16px;">Log base path on Windows: <b>C:\ProgramData\Tableau\Tableau Server\data\tabsvc\logs\</b></span></p><span style="font-size:16px;"></span><p><b><span style="font-size:16px;">&nbsp;</span></b></p><span style="font-size:16px;"></span><p><b><span style="font-size:16px;">Note: </span></b><span style="font-size:16px;">if you installed to a non-default location, look there for the relevant <b>data → tabsvc </b>directory, and you’ll find the logs directory inside.</span></p></div>
</div><p></p></div></div><div data-element-id="elm_GJlzS0SCaDm10TBYo8zRtw" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><!-- COMPLETE TABLEAU SERVER LOGS REFERENCE TABLES --><style> /* HPT Table Styles - Embedded */ .hpt-table-container { margin: 32px 0; border-radius: 10px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); border: 1px solid #e8e8e8; } .hpt-table { width: 100%; border-collapse: collapse; font-family: Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #fff; margin: 0; } .hpt-table th { background: #3D3B3C !important; /* HPT Dark Gray from brand guidelines */ color: #fff !important; padding: 16px 20px !important; font-weight: 600 !important; font-size: 14px !important; text-align: left !important; border: none !important; letter-spacing: 0.3px !important; } .hpt-table th:first-child { border-top-left-radius: 10px; } .hpt-table th:last-child { border-top-right-radius: 10px; } .hpt-table td { padding: 16px 20px; border-bottom: 1px solid #f0f0f0; color: #656263; font-size: 14px; line-height: 1.6; vertical-align: top; } .hpt-table tbody tr:hover { background: #fafafa; transition: background 0.2s ease; } .hpt-table tbody tr:last-child td { border-bottom: none; } .hpt-table td strong, .hpt-table td b { color: #3D3B3C; font-weight: 600; } .hpt-table code { background: #f5f5f5; padding: 2px 6px; border-radius: 3px; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; font-size: 12px; color: #656263; } /* Header Styles */ .hpt-section h2 { font-family: Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #656263; font-size: 28px; font-weight: 600; margin: 48px 0 24px 0; } .hpt-section h3 { font-family: Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #3D3B3C; font-size: 22px; font-weight: 600; margin: 36px 0 16px 0; } @media (max-width: 768px) { .hpt-table-container { overflow-x: auto; -webkit-overflow-scrolling: touch; } .hpt-table { min-width: 600px; } .hpt-table th, .hpt-table td { padding: 12px 16px; font-size: 13px; } .hpt-section h2 { font-size: 24px; } .hpt-section h3 { font-size: 20px; } } </style><div class="hpt-section"><!-- QUICK TROUBLESHOOTING SECTION --><h2>Quick Troubleshooting</h2><div class="hpt-table-container"><table class="hpt-table"><thead><tr><th>Symptom</th><th>Logs to Check</th></tr></thead><tbody><tr><td><strong>Users can't log in</strong></td><td><code>authnservice/</code>, <code>vizportal/</code>, <code>httpd/</code></td></tr><tr><td><strong>Dashboard won't load</strong></td><td><code>vizqlserver/</code>, <code>dataserver/</code>, <code>hyper/</code>, <code>httpd/</code></td></tr><tr><td><strong>Extract refresh failed</strong></td><td><code>backgrounder/</code>, <code>hyper/</code>, <code>filestore/</code></td></tr><tr><td><strong>Search not working</strong></td><td><code>indexandsearchserver/</code>, <code>noninteractive/</code></td></tr><tr><td><strong>Cluster node unhealthy</strong></td><td><code>tabadmincontroller/</code>, <code>clustercontroller/</code>, <code>tabadminagent/</code></td></tr><tr><td><strong>TSM commands failing</strong></td><td><code>tabadmincontroller/</code>, <code>tabadminagent/</code>, <code>appzookeeper/</code></td></tr></tbody></table></div>
<!-- PROCESS LOG REFERENCE SECTION --><h2>Process Log Reference</h2><!-- CORE REQUEST PROCESSING --><h3>Core Request Processing</h3><div class="hpt-table-container"><table class="hpt-table"><thead><tr><th>Process</th><th>Log Folder</th><th>Check When</th></tr></thead><tbody><tr><td><strong>Gateway</strong></td><td><code>httpd/</code></td><td>User-facing errors, SSL problems</td></tr><tr><td><strong>Application Server</strong></td><td><code>vizportal/</code></td><td>Web UI errors, REST API failures, login page issues</td></tr><tr><td><strong>VizQL Server</strong></td><td><code>vizqlserver/</code></td><td>Viz rendering failures, session timeouts, memory issues</td></tr><tr><td><strong>API Gateway</strong></td><td><code>apigateway/</code></td><td>REST API v3.x errors (check out http first)</td></tr><tr><td><strong>Data Server</strong></td><td><code>dataserver/</code></td><td>Published data source issues</td></tr></tbody></table></div>
<!-- DATA & QUERY PROCESSING --><h3>Data &amp; Query Processing</h3><div class="hpt-table-container"><table class="hpt-table"><thead><tr><th>Process</th><th>Log Folder</th><th>Check When</th></tr></thead><tbody><tr><td><strong>Data Engine (Hyper)</strong></td><td><code>hyper/</code></td><td>Extract query failures, Hyper crashes, memory exhaustion</td></tr><tr><td><strong>File Store</strong></td><td><code>filestore/</code></td><td>Extract replication failures, missing extracts, sync issues</td></tr><tr><td><strong>Cache Server</strong></td><td><code>cacheserver/</code></td><td>Query cache issues, Redis failures, session data loss</td></tr></tbody></table></div>
<!-- BACKGROUND JOBS --><h3>Background Jobs</h3><div class="hpt-table-container"><table class="hpt-table"><thead><tr><th>Process</th><th>Log Folder</th><th>Check When</th></tr></thead><tbody><tr><td><strong>Backgrounder</strong></td><td><code>backgrounder/</code></td><td>Extract refresh failures, subscription failures, job queue backlog</td></tr><tr><td><strong>Flow Processor</strong></td><td><code>flowprocessor/</code></td><td>Prep flow execution failures, flow step errors</td></tr></tbody></table></div>
<!-- AUTHENTICATION --><h3>Authentication</h3><div class="hpt-table-container"><table class="hpt-table"><thead><tr><th>Process</th><th>Log Folder</th><th>Check When</th></tr></thead><tbody><tr><td><strong>Authentication Service</strong></td><td><code>authnservice/</code></td><td>SAML/OIDC failures, SSO redirect loops, token validation (also check the vizportal logs)</td></tr><tr><td><strong>Identity Service</strong></td><td><code>identityservice/</code></td><td>SCIM provisioning, identity migration, user/group sync</td></tr></tbody></table></div>
<!-- CLUSTER & ADMINISTRATION --><h3>Cluster &amp; Administration</h3><div class="hpt-table-container"><table class="hpt-table"><thead><tr><th>Process</th><th>Log Folder</th><th>Check When</th></tr></thead><tbody><tr><td><strong>Coordination Service</strong></td><td><code>appzookeeper/</code></td><td>Cluster quorum, split-brain, leader election failures</td></tr><tr><td><strong>Cluster Controller</strong></td><td><code>clustercontroller/</code></td><td>Repository failover, node health, process state transitions</td></tr><tr><td><strong>Repository</strong></td><td><code>pgsql/</code></td><td>Database connections, replication lag, failover problems</td></tr><tr><td><strong>TSM Controller</strong></td><td><code>tabadmincontroller/</code></td><td>TSM command failures, config apply errors, backup/restore, service startup errors</td></tr><tr><td><strong>TSM Agent</strong></td><td><code>tabadminagent/</code></td><td>Service startup/shutdown failures on specific nodes (also check the individual service's logs)</td></tr></tbody></table></div>
<!-- SEARCH & INDEXING --><h3>Search &amp; Indexing</h3><div class="hpt-table-container"><table class="hpt-table"><thead><tr><th>Process</th><th>Log Folder</th><th>Check When</th></tr></thead><tbody><tr><td><strong>Index and Search</strong></td><td><code>indexandsearchserver/</code></td><td>Search not returning results, indexing delays</td></tr><tr><td><strong>Non-Interactive Container</strong></td><td><code>noninteractive/</code></td><td>Background indexing failures, metadata operations</td></tr></tbody></table></div>
</div></div></div><div data-element-id="elm_fHzX951rIadUpwYRSOJ3MQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span style="font-family:Arial, sans-serif;"><strong>Ingesting Logs with ts-olly</strong></span></h2></div>
<div data-element-id="elm_zUHt6wC-Q2B9g6cy-fyYFA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span style="font-size:16px;">If you want these logs in Splunk, Elasticsearch, Loki, or similar, you'll need to parse multiple formats — log4j, log4j2, httpd, JSON — and keep up as Tableau adds or changes processes over time.</span></p><p></p><div><div><p><span style="font-size:16px;">&nbsp;</span></p><p><b><span style="font-size:16px;">ts-olly</span></b><span style="font-size:16px;"> handles this. It reads Tableau's config files to learn the log formats automatically, detects new processes and their configs as they appear, and outputs unified JSON. You don't have to build or maintain parsers.</span></p></div></div></div>
</div><div data-element-id="elm_DaW-kjQJsZQMOtBhW_TtDw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_DaW-kjQJsZQMOtBhW_TtDw"].zpelem-text { background-color:rgba(0,0,0,1); background-image:unset; color:rgba(255,255,255,0.97) ; padding:12px; margin:16px; } [data-element-id="elm_DaW-kjQJsZQMOtBhW_TtDw"].zpelem-text :is(h1,h2,h3,h4,h5,h6){ color:rgba(255,255,255,0.97) ; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p><span style="font-family:&quot;Courier New&quot;, monospace;">ts-olly -node node1 \</span></p><p><span style="font-family:&quot;Courier New&quot;, monospace;">&nbsp; -logsdir /var/opt/tableau/tableau_server/data/tabsvc/logs \</span></p><p><span style="font-family:&quot;Courier New&quot;, monospace;">&nbsp; -configdir /var/opt/tableau/tableau_server/data/tabsvc/config</span></p></div><p></p></div>
</div><div data-element-id="elm_l9tQf2WbqJo3_qMSPmAaUA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><p><span style="font-size:16px;">MIT-licensed: <a href="https://github.com/highperformance-tech/ts-olly">github.com/highperformance-tech/ts-olly</a></span></p></div><p></p></div>
</div><div data-element-id="elm_JVC3J1S-IDgVPOqTTaV8uQ" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet "><div class="zpsnippet-container"><div style="margin:48px 0;padding:24px;background:rgb(232, 231, 231);border-radius:8px;font-family:Arial, sans-serif;"><p style="font-size:16px;color:rgb(101, 98, 99);margin-bottom:16px;"> Need help interpreting what you're seeing in these logs? We've helped dozens of organizations troubleshoot complex Tableau Server issues — from memory leaks that only show up under load to intermittent authentication failures that disappear when you're looking for them. </p><p style="font-size:16px;color:rgb(101, 98, 99);margin:0;"> If you're dealing with a tricky performance issue or need someone to review your server health, feel free to <a href="mailto:hello@highperformance.tech" style="color:rgb(237, 28, 36);text-decoration:none;">reach out</a> — happy to point you in the right direction. </p></div>
</div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 03 Feb 2026 13:31:00 -0600</pubDate></item><item><title><![CDATA[Bring Tableau and Agentic Analytics Together with the VDS API]]></title><link>https://www.highperformance.tech/blogs/post/bring-tableau-and-agentic-analytics-together-with-the-vds-api</link><description><![CDATA[We talk with a lot of companies that want AI in their analytics practice, but aren't totally sure what that looks like. Many of them want it enough ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_RMAPxqigS92nnBj0B8_cOg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_V1oLFlDNSM-to5AuuosMdQ" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content- " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_m0kg8GLPQxC9duxaZjzdwA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-8 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_74ibrWaaGUOh2W1vw4r7sA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>We talk with a lot of companies that want AI in their analytics practice, but aren't totally sure what that looks like. Many of them want it enough that they are tolerating some oddities they shouldn't be, especially as they're exploring feature sets that haven't yet proven their worth. Specifically, they're having to build/define the same data sources and metrics in the AI system, simply because the AI system can't handle connecting to what's already there.</div></div>
</div><div data-element-id="elm_70qtiLwgHa-FY-VkdqH8Rg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div><div style="text-align:left;">I've been working a lot with Ana, the agentic AI analyst made by TextQL, and have been extremely impressed by how it's able to navigate querying and connecting data from many different data sources, including APIs. Its command of Python and the iterative nature of analytics is the best I've seen. So I thought it might make sense for me to have Ana use Tableau's VizQL Data Service API to connect to Published Data Sources on Tableau Server (or Cloud), and see how it handles interacting with and querying the very same data sources that Tableau dashboards use. It took some iteration but worked out well. So I'm showing you how I did it!</div></div></div>
</div><div data-element-id="elm_aoW7YLHj1ghC5RoHo7Kxsw" data-element-type="text" class="zpelement zpelem-text zp-hidden-md zp-hidden-sm zp-hidden-xs "><style> [data-element-id="elm_aoW7YLHj1ghC5RoHo7Kxsw"].zpelem-text { background-color:#F3CECE; background-image:unset; border-style:solid; border-color:#D42B2B !important; border-width:1px; border-radius:4px; padding-inline-start:10px; } </style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><span style="font-style:italic;"><span style="font-weight:bold;">pssst.</span> if you'd like to see me&nbsp;actually&nbsp;do this live, register for the webinar on the right. i'd love to see you there</span></div>
</div><div data-element-id="elm_XYyrUMIK19BL3MSMHy9PLw" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet zp-hidden-md zp-hidden-sm zp-hidden-xs "><div class="zpsnippet-container"><!-- Webinar Inline Snippet 1 - Compact Banner --><!-- For Zoho Sites: Add as Custom HTML element between paragraphs --><style> .hpt-webinar-inline-1 { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; background: #f7f7f7; border-radius: 10px; padding: 20px 24px; margin: 32px 0; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; position: relative; overflow: hidden; border: 1px solid #e8e8e8; } .hpt-webinar-inline-1::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: rgb(235, 77, 94); } .hpt-webinar-inline-1 .content { flex: 1; min-width: 250px; } .hpt-webinar-inline-1 .label { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.8px; color: rgb(200, 60, 75); margin-bottom: 6px; } .hpt-webinar-inline-1 .label svg { width: 14px; height: 14px; } .hpt-webinar-inline-1 h4 { font-size: 16px; font-weight: 600; color: #2a2a2a; margin: 0 0 4px 0; line-height: 1.4; } .hpt-webinar-inline-1 .meta { font-size: 13px; color: #666; } .hpt-webinar-inline-1 .cta-btn { display: inline-block; background: rgb(235, 77, 94); color: #fff; padding: 12px 24px; border-radius: 6px; text-decoration: none; font-weight: 600; font-size: 14px; white-space: nowrap; transition: background 0.2s, transform 0.2s; } .hpt-webinar-inline-1 .cta-btn:hover { background: rgb(210, 65, 80); transform: translateY(-1px); } </style><div class="hpt-webinar-inline-1"><div class="content"><div class="label"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="23 7 16 12 23 17 23 7"></polygon><rect x="1" y="5" width="15" height="14" rx="2" ry="2"></rect></svg> Live Webinar · Dec 18 </div>
<h4>Unlock AI-Powered Analytics on Your Existing Tableau Data</h4><div class="meta">Live demo of Ana + Tableau VDS Integration · 11:00 AM CST</div>
</div><a href="https://go.highperformance.tech/ana-tableau-vds-webinar-dec-2025/" class="cta-btn" target="_blank" rel="noopener"> Register Free </a></div>
</div></div><div data-element-id="elm_32fGC8sMVPl4os-XJoYyGA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">What's VDS?</h3></div>
<div data-element-id="elm_dqTBNg-2ryy0Hc9qpcNbbw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>Tableau's&nbsp;<a href="https://help.tableau.com/current/api/vizql-data-service/en-us/index.html">VizQL Data Service</a>&nbsp;API (VDS) gives you programmatic access to Published Data Sources on Tableau Server/Cloud. Since it's the same data sources your dashboards use (and therefore the same data model), you can reuse the field names, calculations, and relationships you've already defined. It automatically respects row-level security and permissions. There's no need to download extracts or hit underlying databases directly, risking bypassing the governance you've already established in Tableau. Instead, everything goes through Tableau's governance.</div></div>
</div><div data-element-id="elm_QYCAokRwW-YjX9Ag3PzF3Q" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>In contrast to the REST API, which is powerful for managing metadata and performing administrative operations, VDS provides a more direct way to access data. While the REST API allows you to download detail or summary data from specific visualizations, it requires an extra step. VDS lets you query the Published Data Source itself, just like the dashboards do, making it a more seamless option for accessing data.</div></div>
</div><div data-element-id="elm_oPNX3X_uMOX2zFRIbXy5Rg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Who or What is Ana?</h3></div>
<div data-element-id="elm_k9w5bEuJmrBJp3ZSoi304g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>Ana is an agentic AI analyst built by TextQL. It's excellent at querying and coding (especially making API requests), tool calling, and iterative analysis. It understands data structures and relationships intuitively, and can reason about analysis steps. It can hold context across many many steps, build on previous queries, and create artifacts like Streamlit apps, static visualizations, downloadable reports... even playbooks that email you or Slack you their results after they run. (Yes, it supports Teams too...)</div></div>
</div><div data-element-id="elm_RnPVsIw7Vpbvk3KbxYMfjQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div><div>And it's observable: you can see what it's doing, how it's doing it, and thanks to inline comments, <i>why</i> it's doing what it's doing.</div></div></div>
</div><div data-element-id="elm_GHb4XYkxtdXC_RHUoiFDaQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Connecting Ana to Tableau with the VDS API</h3></div>
<div data-element-id="elm_9X70gTY71aA-hwfUhl9KUQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>To connect Ana to Tableau's Viz Data Service, we need:<br/><ul><li>Tableau Server/Cloud with Published Data Sources</li><li>Ana (hosted by TextQL) as the AI analyst</li><li>VDS API to let Ana query Tableau's Published Data Sources</li></ul></div></div>
</div><div data-element-id="elm_r1nC5rUqZoCePiXcL-d6sw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Setting Up</h4></div>
<div data-element-id="elm_u4gkPzT7u2O-6KWz9FQu7w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h5
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true"><span>Teach Ana about the relevant technologies using the Context Library</span></h5></div>
<div data-element-id="elm_Aie2u0tRQWOidKHrU81ejg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><div></div><div></div><div style="text-align:left;"><div><div><div>To start out, we gave Ana some context that makes it better at using the relevant tools. Ana has a context library where you can store information that can be dynamically added to a chat's context based on user roles or which data connectors are selected for the chat. As TextQL admins, we can add this context from the &quot;Organization Context&quot; tab on the Settings page. It's quite straightforward:</div></div></div></div></div>
</div><div data-element-id="elm_zNk0W2i2Y9mzvmpj4NjiMg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_zNk0W2i2Y9mzvmpj4NjiMg"] .zpimage-container figure img { width: 730px ; height: 587.65px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/organization-context.gif" size="fit" alt="A visual walkthrough of creating a context snippet and associating it with the Admin and Member roles." data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_YyGFZ-tSwu6kLn_TS7d6MA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div>To be clear, this context is not strictly required! It just allows Ana to cut through some repetition and trial-and-error, which saves us time and money. It took some iterating, and we ultimately landed on context that includes:<br/><ul><li>Authenticating to Tableau - using a Personal Access Token, in this case; more on that in a moment...</li><li>Finding the data source - using the good old-fashioned REST API</li><li>Exploring fields/metadata - using the new VDS API</li><li>Constructing queries</li><li>Analyzing results and iterating</li><li>Filtering strategies</li><li>Performance tips</li><li>Common patterns:</li><ul><li>Simple query</li><li>Searching with fuzzy matching</li><li>Complex filtering</li></ul><li>Error handling</li><li>Additional resources</li></ul>Here's the raw text we use that you can easily copy and paste into your own context library:</div><p></p></div>
</div><div data-element-id="elm_VmocnN6MRhzDHCQyk3CIzw" data-element-type="buttonicon" class="zpelement zpelem-buttonicon "><style></style><div class="zpbutton-container zpbutton-align-left zpbutton-align-mobile-center zpbutton-align-tablet-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-link zpbutton-size-md zpbutton-icon-align-left " href="/files/ana-vds-api-context.txt" download rel="nofollow noopener"><span class="zpbutton-icon "><svg viewBox="0 0 24 24" height="24" width="24" aria-label="hidden" xmlns="http://www.w3.org/2000/svg"><path d="M11 5C11 4.44772 11.4477 4 12 4C12.5523 4 13 4.44772 13 5V12.1578L16.2428 8.91501L17.657 10.3292L12.0001 15.9861L6.34326 10.3292L7.75748 8.91501L11 12.1575V5Z"></path><path d="M4 14H6V18H18V14H20V18C20 19.1046 19.1046 20 18 20H6C4.89543 20 4 19.1046 4 18V14Z"></path></svg></span><span class="zpbutton-content">Download the Code Snippet</span></a></div>
</div><div data-element-id="elm_qXEunLlEUyj4yfSZ-RItVA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">With that in place, we need to ensure Ana can authenticate to the Tableau APIs when it needs to.</div>
</div><div data-element-id="elm_4-OcJY6ENpJ2rIqdYhpYdQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Setting Up Authentication</h4></div>
<div data-element-id="elm_Y0xFBmwQqL4dCoQNiqFs1Q" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><div>Personal Access Tokens (PATs) are credentials you create in Tableau that let you authenticate to Tableau APIs without using your own username and password. They are revocable, and they keep you from exposing your actual credentials in various systems, scripts, or configuration files. If your Tableau account uses multi-factor authentication (MFA), like Tableau Cloud accounts often do, then PATs are&nbsp;<span style="font-style:italic;">required</span>&nbsp;for programmatic access since it can be difficult to complete an MFA challenge within an automated workflow.</div></div><p></p></div>
</div><div data-element-id="elm_KVi5iyfsDPIBb5EPxL5sHw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>Creating a PAT in Tableau is very straightforward, and you can see a step-by-step guide here if you haven't done it before, or if you need a refresher: <a href="https://help.tableau.com/current/pro/desktop/en-us/useracct.htm#create-and-manage-personal-access-tokens" title="create and manage personal access tokens" target="_blank" rel="">create and manage personal access tokens</a>.</div><div><br/></div><div><div><span style="font-weight:bold;">Note:</span> Personal Access Tokens <span style="font-weight:bold;">do</span>&nbsp;have an expiration date on them! Based on my personal experience, it's useful to create a reminder a week or two before a PAT expires so you have a chance to create a new one and switch them out before it simply stops working. &quot;A bit of prevention is worth a byte of cure&quot;, as they say.</div></div></div>
</div><div data-element-id="elm_bGLChkXbIE0bBbvY41jYcA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_bGLChkXbIE0bBbvY41jYcA"] .zpimage-container figure img { width: 730px ; height: 385.77px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/personal-access-token.png" size="fit" alt="Example of the Personal Access Token screen displaying a new PAT." data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Ma79foOsNaqjc1xrtUcD5g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">Now that we have a PAT from Tableau, we need to store that in a place Ana can find it: the Environment Secrets. As the name suggests, Environment Secrets behaves like a password manager for Ana, allowing it to reference sensitive information like credentials without having to type the details out in the code verbatim.</div>
</div><div data-element-id="elm_DrmGyRQes7RXBa1s5o_LWA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">These secrets don't necessarily have to follow an exact pattern, because Ana can inspect them and determine the most appropriate way to use them. I prefer to store them as JSON with a little extra helpful information. In fact, if you downloaded the context snippet from earlier in the post, you'll want to follow the same structure I do. The structure is documented in the snippet, and the snippet's code examples depend on it. Here's what that looks like:</div>
</div><div data-element-id="elm__bOcSr-vhamJCFG2nC6nNg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div></div><code>{&quot;server&quot;: &quot;https://tableau.example.com&quot;,&quot;tokenName&quot;:&quot;YOUR_TOKEN_NAME&quot;,&quot;tokenSecret&quot;:&quot;YOUR_TOKEN_SECRET&quot;}</code></div>
</div><div data-element-id="elm_CFgJDwErwrGNgyarA3DMpw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>From here, we navigate to the Settings &gt; Configuration &gt; Manage Secrets page, and create a new secret. We'll need to fill out:</div><div><ul><li>Secret Name - we refer to it as TABLEAU_PAT in our context snippet, so if you're following along, you should too.</li><li>Secret Value - the single line of JSON above, filled out with the relevant values.</li><li>Instructions - Ana sees these instructions in every chat context so it knows when to use which secret. Be sure to give it enough info to make those decisions! In this example, the instructions were: &quot;<span>Use this PAT to authenticate to Tableau Server using their REST API; the authenticated session can be used for other Tableau APIs as well.</span>&quot;</li><li>Docs Links - Any links to reference documentation that may be helpful when using the secret.</li></ul></div></div>
</div><div data-element-id="elm_0o-2fGPjqihK_LlmVbiahA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">Here's what the screen looks like just before we click Create:</div>
</div><div data-element-id="elm_xBoJL4gv57460WkFBOPzmg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_xBoJL4gv57460WkFBOPzmg"] .zpimage-container figure img { width: 730px ; height: 422.03px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/secrets-manager.png" size="fit" alt="The &quot;Environment Secrets&quot; page with an open modal for adding a new secret." data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_u2pxtZheLU7NR7y5cSgTvQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><span style="font-weight:bold;">Note:</span> After you click save, you won't be able to edit or view the secret's details again. If that's a concern for you, there's an easy and more flexible solution we typically use, but that'll have to be a different blog post!</div>
</div><div data-element-id="elm_GkY9CC5JpbNDJeT3Uhi9zQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div>At this point, we've given Ana enough information to:</div><div><ul><li>connect to Tableau using the URL and PAT details from the secret, and</li><li>skillfully use the relevant APIs to authenticate, search for data sources, explore their metadata and data, and query!</li></ul></div></div>
</div><div data-element-id="elm_xLNFEnvddiLTI4GUzg6wfQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">Let's see how it works by creating a new thread and asking a question.</div>
</div><div data-element-id="elm_9xFRh6Utgcew20LvxzRzEw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Chatting With Our Data</h3></div>
<div data-element-id="elm_KRqiUVpV3Cc0XT5JmYIdxA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><div><div>For demo purposes, <a href="https://www.kaggle.com/datasets/bhanuthakurr/cleaned-contoso-dataset?phase=FinishSSORegistration&amp;returnUrl=%2Fdatasets%2Fbhanuthakurr%2Fcleaned-contoso-dataset%2Fversions%2F8" title="we're using a demo data set based on Microsoft's Contoso data set" rel="">we're using a demo dataset based on Microsoft's Contoso dataset</a>.</div></div><div><span style="font-weight:bold;"><br/></span></div><div><div><div><span style="font-weight:normal;">We have created a Published Data Source on Tableau Server that exposes the Online Sales fact table and all of the related dimensions, as well as some calculated metrics and KPIs. We have&nbsp;<span style="font-weight:bold;">not</span>&nbsp;included any details about the data source in Ana's context library, so it will have to explore a little bit to understand how to collect the data we ask it for. Here's that data model in Tableau, for your reference:</span></div></div></div></div>
</div><div data-element-id="elm_bRAeYxCj11TIInHQBz2D9g" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_bRAeYxCj11TIInHQBz2D9g"] .zpimage-container figure img { width: 730px ; height: 299.76px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/contoso-online-sales-model.png" size="fit" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_TX0X0t0t9c6B-jjFIkq4BA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">To keep things interesting, I'm going to ask a question with an intentional but easy-to-resolve error in it:&nbsp;</div>
</div><div data-element-id="elm_cKwLENBK7PKSSZTd0ZsF2A" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><blockquote style="margin-left:40px;">&quot;Using the Contoso Online Sales data source, show me the sales over time for the customer named Tom Miller.&quot;</blockquote></div>
</div><div data-element-id="elm_Ckds2SdE8ATE0nu-bW01Dw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">The dataset has a &quot;Thomas Miller&quot; in it, so it will be interesting to see how Ana handles the discrepancy there. And with that background information out of the way, let's see the chat!</div>
</div><div data-element-id="elm_bqrmR4h9ILl_bqfVqLQcHw" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_3g4K9B-7rERkCD1zf-sciQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-5 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_g7CybuC8UNxpiDlqQkjSPw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_g7CybuC8UNxpiDlqQkjSPw"] .zpimage-container figure img { width: 200px ; height: 442.60px ; } } [data-element-id="elm_g7CybuC8UNxpiDlqQkjSPw"] .zpimage-container[class*='zpimage-overlay-effect-'] figure:hover figcaption , [data-element-id="elm_g7CybuC8UNxpiDlqQkjSPw"] .zpimage-container[class*='zpimage-overlay-effect-'] figure figcaption { background:rgba(1,58,81,0.8) ; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-small zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit zpimage-overlay zpimage-overlay-effect-static-bottom hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/tom-miller-sales.png" size="small" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Click to expand</span></figcaption></figure></div>
</div></div><div data-element-id="elm_CQkDlIXbRGgyHpEjMQXGgg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-7 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_m4iPkWVxJPh0qPqq2rRVqA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">The chat has a few components to it:</div>
</div><div data-element-id="elm_qEdz7tFmoccuuXjFjOTNBw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><ul><li>The response messages</li><li>The tool call cells</li><li>Artifact previews</li><li>The summary response</li></ul></div>
</div><div data-element-id="elm_3PngwPocfEe0Ynj--cQ32g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">In my mind, the interesting things happen in the tool call cells. We can see Ana follow the overall structure we detailed in the context library. It:<p></p></div>
</div><div data-element-id="elm_eCd2LYtSGRfUR-IksIBqbg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><ol><li>Authenticates</li><li>Lists Data Sources</li><li>Reads Metadata</li><li>Queries Data, and</li><li>Analyzes in Python</li></ol></div>
</div></div></div><div data-element-id="elm_ckS8y_zORhqXqgG-vd6xgg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">Overall, everything went as well as we could hope, in seven individual API calls to Tableau! It handled the name issue pretty well. It queried using filters for the First and Last name, and found no results. Since it expected results but found none, it decided to look into the customer names to find similar names. There are a handful of approaches it could have used, but in this case it decided to search for similar names, found the full list of Millers. With the relevant names in context now, it determined that &quot;Thomas&quot; was likely the one I was asking about, and proceeded from there.</div>
</div><div data-element-id="elm_W2JAWZPjozooJb-PIPaNLg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">It then created and saved some visualizations of the data using python, as well as wrote the underlying data to a CSV. Finally, it responded with a summary of its findings.</div>
</div><div data-element-id="elm_D5BgyOIHQnpGWkBqcWri3w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">It Works! Now What?</h3></div>
<div data-element-id="elm_cSGdNkiQ1HPUdINLxwHl5A" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">So we now have an agentic AI analyst capable of connecting to Tableau and querying the same Published Data Sources we use in our workbooks. We see it's capable of correcting course when things aren't exactly as it first thought. Where do we go from here? Below are a few use cases we've implemented already, and one we're about to implement:</div>
</div><div data-element-id="elm_kih1VnUoIEMggtW_TGAk-Q" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Playbooks - Executive Summaries via Email or Slack</h4></div>
<div data-element-id="elm_RKBMBXEN2rODMNhB1kLmfA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">I mentioned Ana has a playbooks feature that allows you to schedule these analyses to be delivered on a recurring basis over Email, Slack, or Teams. We've implemented operational playbooks that surface actionable information around deal flow and accounts receivable aging. Users enjoy getting the relevant data delivered to them directly in Slack, and&nbsp;<span style="font-weight:bold;">really enjoy</span>&nbsp;being able to ask follow-up questions in the same thread.</div>
</div><div data-element-id="elm_y8Op77dP_RFsoon25uqIvA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Exploring Complicated Database Schemas</h4></div>
<div data-element-id="elm_mi5mkfs0fP0gK-axlf2CyQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">We've already seen that Ana is adept at course-correction if something seems off about its findings. Similarly, it's also very good at exploring database schemas and determining how data relates. We have implemented Ana for users who need to uncover specific data without spending a ton of time digesting complicated schemas and ERDs. Ana's iterative discovery process makes easy work of that, and the context library allows users to improve Ana's efficiency over time as it discovers the relevant relationships within the data. Of course, there are several great approaches to mapping out the data models in advance, but that's out of the scope of&nbsp;<span style="font-style:italic;">this</span>&nbsp;post.</div>
</div><div data-element-id="elm_5V6VQqmHVY8z6N8_vIO7Zg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h4
 class="zpheading zpheading-style-none zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">In-Dashboard Chats</h4></div>
<div data-element-id="elm_FqzcifuCjvMRVz1FOA5wkQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">This is the one we're most excited to try next: embedding Ana&nbsp;<span style="font-style:italic;">directly inside of a dashboard<span style="font-style:normal;">, giving users a way to ask relevant questions about the data that's right in front of them at the moment.</span></span></div>
</div><div data-element-id="elm_MBGL6Lh_U0H2rDbVKVvSDA" data-element-type="heading" class="zpelement zpelem-heading zp-hidden-md zp-hidden-sm zp-hidden-xs "><style></style><h3
 class="zpheading zpheading-style-type1 zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Come see this demo live!</h3></div>
<div data-element-id="elm_aj298wMsmnbq39GWJOJLuQ" data-element-type="text" class="zpelement zpelem-text zp-hidden-md zp-hidden-sm zp-hidden-xs "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p>Want to see a live end-to-end demonstration of what you just read above? Come see the process start-to-finish, so you can do this with your own Tableau environment! Click the big red button below to register. Even if you can't make it live, we'll send all registrants a recording of the webinar once it wraps up.</p></div>
</div><div data-element-id="elm_lA8Ml603zggkM998asKQUA" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet zp-hidden-md zp-hidden-sm zp-hidden-xs "><div class="zpsnippet-container"><!-- Webinar Inline Snippet 1 - Compact Banner --><!-- For Zoho Sites: Add as Custom HTML element between paragraphs --><style> .hpt-webinar-inline-1 { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; background: #f7f7f7; border-radius: 10px; padding: 20px 24px; margin: 32px 0; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; position: relative; overflow: hidden; border: 1px solid #e8e8e8; } .hpt-webinar-inline-1::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: rgb(235, 77, 94); } .hpt-webinar-inline-1 .content { flex: 1; min-width: 250px; } .hpt-webinar-inline-1 .label { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.8px; color: rgb(200, 60, 75); margin-bottom: 6px; } .hpt-webinar-inline-1 .label svg { width: 14px; height: 14px; } .hpt-webinar-inline-1 h4 { font-size: 16px; font-weight: 600; color: #2a2a2a; margin: 0 0 4px 0; line-height: 1.4; } .hpt-webinar-inline-1 .meta { font-size: 13px; color: #666; } .hpt-webinar-inline-1 .cta-btn { display: inline-block; background: rgb(235, 77, 94); color: #fff; padding: 12px 24px; border-radius: 6px; text-decoration: none; font-weight: 600; font-size: 14px; white-space: nowrap; transition: background 0.2s, transform 0.2s; } .hpt-webinar-inline-1 .cta-btn:hover { background: rgb(210, 65, 80); transform: translateY(-1px); } </style><div class="hpt-webinar-inline-1"><div class="content"><div class="label"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="23 7 16 12 23 17 23 7"></polygon><rect x="1" y="5" width="15" height="14" rx="2" ry="2"></rect></svg> Live Webinar · Dec 18 </div>
<h4>Unlock AI-Powered Analytics on Your Existing Tableau Data</h4><div class="meta">Live demo of Ana + Tableau VDS Integration · 11:00 AM CST</div>
</div><a href="https://go.highperformance.tech/ana-tableau-vds-webinar-dec-2025/" class="cta-btn" target="_blank" rel="noopener"> Register Free </a></div>
</div></div><div data-element-id="elm_GyJhhcV3Cy_d45TalujkWg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h3
 class="zpheading zpheading-style-type1 zpheading-align-left zpheading-align-mobile-left zpheading-align-tablet-left " data-editor="true">Want to skip the line and get started now?</h3></div>
<div data-element-id="elm_W3wDcCHLRG0BaeKqXpwVFw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true">Schedule a time to talk with us about our Ana Quick Start, where we guide you and your users through the &quot;getting started&quot; phase so you can see immediate value.</div>
</div><div data-element-id="elm_4Zz-BA8vR-CKUALhQ3IHzw" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center zpbutton-align-mobile-center zpbutton-align-tablet-center"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-secondary zpbutton-size-md zpbutton-style-none " href="https://calendly.com/highperformancetechnologies/quick-call?month=2025-12" target="_blank"><span class="zpbutton-content">Schedule a Call</span></a></div>
</div></div><div data-element-id="elm_r6c2HRP3XZnvwFAl4N6J-Q" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg zp-hidden-sm zp-hidden-xs zpsticky-enabled"><style type="text/css"> @media (min-width:992px) { [data-element-id="elm_r6c2HRP3XZnvwFAl4N6J-Q"].zpelem-col{ top:150px;z-index:1; } } </style><div data-element-id="elm_Q6c4tjahsq8JYJHZM403TQ" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_L5JHdlowE0ZB-3t5VFQp8A" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_qmHZhz5pM5QLGgy5DznhfA" data-element-type="codeSnippet" class="zpelement zpelem-codesnippet zp-hidden-md zp-hidden-sm zp-hidden-xs "><div class="zpsnippet-container"><!-- Webinar Sidebar Snippet - Tableau VDS + Ana Integration --><!-- For Zoho Sites: Add as Custom HTML element in sidebar --><!-- NOTE: Replace the placeholder image src with Brad Fair's actual photo URL --><style> .hpt-webinar-sidebar { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; background: #ffffff; border-radius: 12px; padding: 24px; color: #333; position: relative; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.08); border: 1px solid #e8e8e8; } .hpt-webinar-sidebar::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: rgb(235, 77, 94); } .hpt-webinar-sidebar .badge { display: inline-block; background: rgba(235, 77, 94, 0.1); color: rgb(200, 60, 75); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; padding: 4px 10px; border-radius: 4px; margin-bottom: 12px; } .hpt-webinar-sidebar h3 { font-size: 18px; font-weight: 700; line-height: 1.35; margin: 0 0 14px 0; color: #2a2a2a; } .hpt-webinar-sidebar .info-row { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; padding: 12px; background: #f7f7f7; border-radius: 8px; } .hpt-webinar-sidebar .date-box { background: rgb(235, 77, 94); color: #fff; text-align: center; padding: 8px 12px; border-radius: 6px; min-width: 50px; flex-shrink: 0; } .hpt-webinar-sidebar .date-box .month { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; } .hpt-webinar-sidebar .date-box .day { font-size: 22px; font-weight: 700; line-height: 1.1; } .hpt-webinar-sidebar .date-text { flex: 1; font-size: 14px; color: #666; } .hpt-webinar-sidebar .date-text strong { display: block; color: #2a2a2a; } .hpt-webinar-sidebar .host-photo { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.1); flex-shrink: 0; } .hpt-webinar-sidebar .description { font-size: 14px; line-height: 1.55; color: #555; margin-bottom: 18px; } .hpt-webinar-sidebar .cta-btn { display: block; width: 100%; background: rgb(235, 77, 94); color: #fff; text-align: center; padding: 14px 20px; border-radius: 6px; text-decoration: none; font-weight: 600; font-size: 15px; transition: background 0.2s, transform 0.2s; box-sizing: border-box; } .hpt-webinar-sidebar .cta-btn:hover { background: rgb(210, 65, 80); transform: translateY(-1px); } .hpt-webinar-sidebar .host { margin-top: 16px; padding-top: 14px; border-top: 1px solid #eee; font-size: 12px; color: #888; } .hpt-webinar-sidebar .host strong { color: #555; } </style><div class="hpt-webinar-sidebar"><span class="badge">Free Live Webinar</span><h3>Unlock AI-Powered Analytics on Your Existing Tableau Data</h3><div class="info-row"><div class="date-box"><div class="month">Dec</div>
<div class="day">18</div></div><div class="date-text"><strong>Thursday</strong> 11:00 AM CST </div>
<!--
		<img src="https://www.highperformance.tech/files/img/brad-fair.jpg" alt="Brad Fair" class="host-photo"> --> </div>
<p class="description"> See how to connect TextQL's Ana directly to your Tableau data sources—no rebuilding metrics or governance policies required. </p><a href="https://go.highperformance.tech/ana-tableau-vds-webinar-dec-2025/" class="cta-btn" target="_blank" rel="noopener"> Register Now → </a><div class="host"> Hosted by <strong>Brad Fair</strong>, Principal Solutions Architect </div>
</div></div></div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 12 Dec 2025 13:17:21 -0600</pubDate></item><item><title><![CDATA[Understanding User License Dependencies in Cloud Migrations]]></title><link>https://www.highperformance.tech/blogs/post/understanding-user-license-dependencies-in-cloud-migrations</link><description><![CDATA[<img align="left" hspace="5" src="https://www.highperformance.tech/files/img/problem-solvers.jpeg"/>When migrating from Tableau Server to Cloud, content owned by unlicensed users creates roadblocks. Before you start audit user licenses, clean up unlicensed content, and reassign ownership pre-migration — ensuring nothing valuable gets left behind.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_1jdNMbzfSneCY42RMvjSmw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_njRLuWhMTuqIhKIrXTgAuA" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content- " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_lsa_08uxT2WanFh7wjbWMA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-9 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_cINUxOsvQ8mbnXz1pN2iFw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><p style="text-align:left;"><span>When you switch from Server to Cloud, getting your users licensed properly is essential</span>. Tableau recommends setting up your Creator users first, and we agree! Working with your Creators, the Content Authors, throughout the migration process is vital to a successful migration. Once your Creators are added then you want to migrate the content so it keeps the correct ownership.</p><p style="text-align:left;"><br/></p><p style="text-align:left;">If you migrate manually, this looks like asking each of your Creators to download their content from the Tableau Server and republish to the new Cloud location, recreating any extract refreshes and custom views in the process.</p><p style="text-align:left;"><br/></p><p style="text-align:left;">One thing that is different about user set up in Cloud vs. Server is that Cloud requires users to sign in with full email addresses (ex: johnsmith@company.com), whereas Server requires just a username (ex: johnsmith) and password. If your Server currently has users signing in with simple usernames, they will need email-based credentials for Cloud, and it’s important to communicate any new sign-on procedures to your users during migration.</p><p style="text-align:left;"><br/></p><div><h1 style="text-align:left;">Unlicensed Users with Content</h1><p style="text-align:left;">But what about the content sitting on your Tableau Server owned by an unlicensed user – either they have left the company or changed roles – and their legacy dashboards exist without continued ownership? How will their content get migrated?</p><p style="text-align:left;"><br/></p><p style="text-align:left;">The best thing to do is take inventory of all content owned by unlicensed users and evaluate if that content is still relevant and needed. Are those workbooks being accessed and used regularly?</p></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><li style="text-align:left;">If yes, then a Tableau Admin can reassign that content to a licensed owner so it can be migrated to Cloud.</li></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><li style="text-align:left;">If not, then the content can be decommissioned and flagged to not migrate to Cloud.</li></blockquote><p style="text-align:center;"><img src="/content%20reassign.png" style="width:519px !important;height:254px !important;max-width:100% !important;"/></p><h2 style="text-align:left;"><strong>Clean House </strong><u><strong>Before</strong></u><strong>&nbsp;You Move</strong></h2><div><h2></h2><p style="text-align:left;">Not only can you clean up unlicensed users’ content but think of your Tableau Cloud migration like moving to a new home - it's the perfect opportunity to declutter! Why spend the time to migrate (and then maintain) dozens of outdated dashboards that nobody's looked at in months?</p><p style="text-align:left;"><br/></p><p style="text-align:left;">It's common for Tableau Servers to accumulate digital dust&nbsp;over time. That quarterly report from 2019? The prototype dashboard someone built but never finished? The &quot;test&quot; workbooks scattered across projects? Migration is your chance to leave them behind.</p><p style="text-align:left;"><br/></p><p style="text-align:left;">Before moving anything to Cloud, we recommend auditing your content usage. Look for:</p><ul><li style="text-align:left;">Workbooks with zero views in the last 6-12 months</li><li style="text-align:left;">&quot;Test&quot; or &quot;Draft&quot; content that never went live</li><li style="text-align:left;">Dashboards created by employees who've left the company</li><li style="text-align:left;">Multiple versions of the same analysis</li></ul><p style="text-align:left;">Starting fresh in Tableau Cloud with only your active, valuable content means:</p><ul><li style="text-align:left;">Faster migration process</li><li style="text-align:left;">Cleaner, more organized environment</li><li style="text-align:left;">Easier maintenance and governance</li></ul><span><div style="text-align:left;">You can use your Server's admin views or repository data to identify unused content before migration.</div><div style="text-align:left;"><br/></div><div style="text-align:left;"><div><h1>Get a Jump Start</h1><p>As mentioned in our <a href="https://www.highperformance.tech/blogs/post/tableau-cloud-migrations-mapping-your-migration-journey" title="introduction post to this series" target="_blank" rel="">introduction post to this series</a>, auditing your Server content and creating a Content Readiness Dashboard provides insight to which content on your Server is owned by an unlicensed user, so you can zoom in on the relevant content to make license changes before migrating.&nbsp;</p><p><br/></p><p><span>When we handle migrations for our clients, we migrate content and make necessary changes at scale. This includes moving active users with proper licenses, content, and permissions. If needed, we can automatically reassign orphaned content to valid licensed users in Cloud during the migration process.</span></p><p><br/></p><p>To get a Content Readiness Dashboard for your Server and see your unlicensed users' content, schedule a call with our migration experts below.&nbsp;</p></div></div></span></div><p style="text-align:left;"><br/></p></div>
</div><div data-element-id="elm_8qGbjPkiSJq-EvhZsRjC7w" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center zpbutton-align-mobile-center zpbutton-align-tablet-center"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="https://calendly.com/highperformancetechnologies/quick-call" target="_blank"><span class="zpbutton-content">Talk to a Migration Expert</span></a></div>
</div><div data-element-id="elm_7MGB5wug3p_2Dc1XlEQTnw" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"></style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-align-mobile-center zpdivider-align-tablet-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_d402ToSLWTEnWXMDYFpO9Q" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span style="font-style:italic;">This is part two of our ongoing series on Tableau Cloud Migration Roadmap. Up next: Font Compatibility: The Hidden Migration Complexity.</span></p></div>
</div></div><div data-element-id="elm_w9UFEIMWa3kPcEdz7OpG1A" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-3 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_j0T5pBicLc9HNGIdnh-vmw" data-element-type="text" class="zpelement zpelem-text zp-hidden-sm zp-hidden-xs "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>This can be a pretty tedious process depending on how much content you have on your Server.</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>Taking the time to evaluate if content is still needed is well worth it in the long run — and will save you time on your migration journey.</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>CobWEBS...am I right?!?</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>Your future self will thank you for the squeaky clean Cloud environment.</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>If you get to Cloud and realize you've forgotten something, we can help you restore it from a pre-migration backup!</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 15 Aug 2025 14:39:53 -0500</pubDate></item><item><title><![CDATA[Tableau Cloud Migrations: Mapping Your Migration Journey]]></title><link>https://www.highperformance.tech/blogs/post/tableau-cloud-migrations-mapping-your-migration-journey</link><description><![CDATA[<img align="left" hspace="5" src="https://www.highperformance.tech/tableau-server-logo-1.jpeg"/>Migrating from Tableau Server to Cloud is like planning a road trip — you need to spot the roadblocks ahead. We've identified 6 common delays that can slow your migration. Our Content Readiness Dashboard maps your route and shows exactly what needs fixing before you move.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_lOg2PhGeSFGiHv4mm7d38Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_jIZwvUilSdeNJ_KNVSDw_A" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content- " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_ZoBzhSFoTEm7zH348FKLSw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_NXIBHryRzUaxkc4IRuyOyg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_sw9ZiWAVBnto4Hzb3ma_Qw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-9 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_1qUZgsZHPzHpyuTukQRnEQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><div><div><p style="text-align:left;margin-bottom:10.6667px;"></p><div><p style="line-height:1.5;">In the age of GPS-enabled smartphones, it’s rare to plan a trip without first checking your favorite mapping app. Whether you’re avoiding tolls, aiming for a specific arrival time, or want the fastest route, the app gives directions to meet your needs.</p><p style="text-align:left;"><br/></p><p style="text-align:left;">Migrating from Tableau Server to Tableau Cloud works the same way. You know your starting point and your destination — but what about the delays that could slow you down?</p><p style="text-align:left;"><br/></p><p style="text-align:left;">When you’re mapping your route from Server to Cloud, considering the unique details of your Tableau environment will help you avoid the most common (and costly) slow-downs you could encounter. In this ongoing blog series, we will show you how to identify these road hazards ahead of time so you can travel with confidence (<i>and</i> have the right ETA).</p><p style="text-align:left;"><span style="font-style:italic;"><span><br/></span></span></p><p style="text-align:left;">So, buckle up, and let’s begin.</p></div>
<p></p></div><div><h3 style="text-align:left;margin-bottom:5.3333px;"></h3></div>
<div><h2 style="text-align:left;">The Route Overview</h2></div><div><p style="text-align:left;">We find that most Tableau Server --&gt; Tableau Cloud migration routes are made up of five key segments.&nbsp;<span>They're all important, but the first, Planning and Analysis, is essential so you can get the best possible route customized to your unique environment, avoiding any potential roadblocks along the way.</span></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><img src="/HPT%20Cloud%20Migration%20Process.png"/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"></p><div><p style="text-align:left;">During the Planning &amp; Analysis phase, you need to answer two critical questions:</p></div>
<p></p></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><div><div><li style="text-align:left;">What is your strategy for data connectivity in Tableau Cloud?</li><li style="text-align:left;">Is your content compatible with Tableau Cloud?</li></div>
</div></blockquote><div><div><p style="text-align:left;"></p><div><p><br/></p><p style="text-align:left;line-height:1.5;">To answer those questions, you'll want to audit your Tableau Server content, looking for things that could cause you to veer from the standard route. Think of this phase like checking the route before departing on a road trip — this is where you spot the construction zones, detours, and traffic jams. With that visibility, you can adjust your timeline, reroute where needed, and plan smarter. The result: a clearer picture of what’s ahead and a more accurate ETA for reaching Tableau Cloud.</p><p style="text-align:left;"><br/></p><h1 style="text-align:left;">Potential Route Delays</h1><p style="text-align:left;"><span>Here are six </span>potential delays we’ve identified to be on the lookout for:</p></div>
<p></p></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><ol><li style="text-align:left;">User License Dependencies</li><li style="text-align:left;">Unsupported Fonts</li><li style="text-align:left;">Broken URL Connections</li><li style="text-align:left;">Database Connection Failures</li><li style="text-align:left;">Flat File Refresh Failures</li><li style="text-align:left;">Private Data Connectivity</li></ol></blockquote><div><p style="text-align:left;">Each of these items may appear straightforward on the surface, but with the complexity of each dashboard and data source, they can end up being quite nuanced in how you approach a solution before and during migration.</p><p style="text-align:left;"><br/></p><div><p></p><h1 style="text-align:left;">Taking Inventory</h1><p style="text-align:left;">When we plan successful Cloud migrations for clients, we start by creating a complete Content Inventory&nbsp;of all the users, data sources (and their connections), and workbooks on the Server, looking for the six potential delays we listed above. Once we've gathered our inventory, we visualize it in a Tableau Dashboard. The Content Readiness Dashboard helps us quickly see areas where remediation, or a reroute, is needed and plan accordingly.</p></div></div>
</div></div></div><div data-element-id="elm_Qt-nT3vYyNeQAhGAnXuX6w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-3 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_iVgbjve-BWIg9CzTmE_OQQ" data-element-type="text" class="zpelement zpelem-text zp-hidden-sm zp-hidden-xs "><style> @media (max-width: 767px) { [data-element-id="elm_iVgbjve-BWIg9CzTmE_OQQ"].zpelem-text { margin-block-start:99px; } } </style><div class="zptext zptext-align-left zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><div><p style="text-align:left;margin-bottom:10.6667px;"></p><div><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;">» We'll keep adding to this series as we uncover more potential delays to look out for.</p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;">»&nbsp;This blog series will dive into each of these in more detail, ensuring you have the knowledge and tools needed to prepare for your journey.&nbsp;</p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><span style="text-align:center;"><br/></span></p><p style="text-align:left;"><span style="text-align:center;">»&nbsp;</span>We get this information from the Tableau Server API, but you can also get the details from the Tableau Repository for your Tableau Server.<br/></p></div></div>
</div></div></div></div><div data-element-id="elm_8aI0s2juPlbVWlsyeoMZYg" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_8aI0s2juPlbVWlsyeoMZYg"] .zpimagetext-container figure img { width: 577.5px !important ; height: 385px !important ; } } [data-element-id="elm_8aI0s2juPlbVWlsyeoMZYg"].zpelem-imagetext{ margin-block-start:18px; } </style><div data-size-tablet="" data-size-mobile="" data-align="right" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-right zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-custom zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Content%20Readiness%20Dashboard%20Sample.png" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left zpimage-text-align-mobile-left zpimage-text-align-tablet-left " data-editor="true"><div style="text-align:center;"><div><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;"><br/></p><p style="text-align:left;">The Content Readiness Dashboard breaks down:</p></div><div><p style="text-align:left;"><span style="font-size:14px;"></span></p><div></div><p></p><li style="text-align:left;"><span style="font-size:14px;">Content needing remediation vs. Content ready for migration</span></li><li style="text-align:left;"><span style="font-size:14px;">Content and remediation type needed by author</span></li><li style="text-align:left;"><span style="font-size:14px;">Recommended timeline for when to remediate certain roadblocks</span></li><p style="text-align:left;"><br/></p></div><div><div><p style="text-align:left;"><span>We also give each Tableau content author a custom checklist with their specific fixes and clear steps to take. Getting content ready for migration is a team effort. Migrations are most successful when everyone pitches in to clear the roadblocks ahead of time.</span></p></div><br/><br/></div></div></div>
</div></div><div data-element-id="elm_VETJNF-MwWo1LmdQUl9Frw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p></p><div><div style="text-align:center;"><p style="text-align:left;">Planning a migration without knowing what's ahead is like driving cross-country without checking traffic. Taking an inventory and identifying the potential roadblocks we've outlined will show you exactly what to expect from your unique environment as you plan your migration.</p></div><div><p><br/></p><p>Want to see what roadblocks might be waiting in your migration?&nbsp;We can help you out with your content inventory and provide you with a Content Readiness Dashboard for Server content.</p></div></div><p></p></div>
</div><div data-element-id="elm_YFixvbgDSQSVxpyIK07S-A" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center zpbutton-align-mobile-center zpbutton-align-tablet-center"><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="https://calendly.com/highperformancetechnologies/quick-call?back=1&amp;month=2025-07" target="_blank" title="Schedule a call with an expert via Calendly"><span class="zpbutton-content">Talk to a Migration Expert</span></a></div>
</div></div></div></div></div><div data-element-id="elm_m9-KSHRc73mqUQevMT3WsQ" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_MHO2Z-cburPgMYhwmSsdVA" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column="false"><style type="text/css"></style><div data-element-id="elm_aF8u1P7V_YMeuNUprdWDHQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div data-element-id="elm_MVQMVDUHzZDqfh89Wz_YiQ" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"></style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-align-mobile-center zpdivider-align-tablet-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_-Cc8h3JxMRTt7n1-rVNiyg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-left zptext-align-mobile-left zptext-align-tablet-left " data-editor="true"><p><span><span style="font-style:italic;"><span></span></span></span></p><div><div><i>This is part one of our ongoing series on creating your Tableau Cloud Migration Roadmap. Up next: <a href="https://www.highperformance.tech/blogs/post/understanding-user-license-dependencies-in-cloud-migrations" title="Understanding User License Dependencies in Cloud Migrations" rel="">Understanding User License Dependencies in Cloud Migrations</a></i><i>.</i></div></div><span></span><p></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 13 Aug 2025 11:11:08 -0500</pubDate></item><item><title><![CDATA[What does it take to stand up a Tableau Server?]]></title><link>https://www.highperformance.tech/blogs/post/what-does-it-take-to-stand-up-a-tableau-server</link><description><![CDATA[<img align="left" hspace="5" src="https://www.highperformance.tech/Tableau Upgrade Blogs/download-2660930.jpg"/>This blog post discusses what's needed in order to plan your deployment of Tableau Server.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_IcuaPP4rSaWXkwKCB6CPFw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_LHYIQWTXRxC3WPLgKQUrmQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_LHYIQWTXRxC3WPLgKQUrmQ"].zprow{ border-radius:1px; } </style><div data-element-id="elm__7pBCMKBSnWTx767_zq8Vg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm__7pBCMKBSnWTx767_zq8Vg"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_wGwVzCA8G_2EPMU87V9Q6A" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_wGwVzCA8G_2EPMU87V9Q6A"].zprow{ border-radius:1px; } </style><div data-element-id="elm_sG4o0Bn2lvKOMNQ5WQoQCQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_sG4o0Bn2lvKOMNQ5WQoQCQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_npt2bGeAXL19ld-zHg_9GQ" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> [data-element-id="elm_npt2bGeAXL19ld-zHg_9GQ"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="size-original" data-size-mobile="size-original" data-align="right" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimagetext-container zpimage-with-text-container zpimage-align-right zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Tableau%20Upgrade%20Blogs/download-2660930.jpg" size="medium" data-lightbox="true" style="width:1600px;padding:0px;margin:0px;"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">If you’re looking for an enterprise-grade visual analytics solution for creating and sharing dashboards, Tableau Server is the way to go. It’s the perfect choice for organizations that want to see and understand their data. But when it comes to setting up your own instance of Tableau Server, it can be hard to know where to start. In this blog post, we'll cover:</span></span></p><ul><li><span style="color:inherit;"><span style="font-size:16px;">how to plan your deployment around your BI needs,&nbsp;</span></span></li><li><span style="color:inherit;"><span style="font-size:16px;">how to install Tableau Server, and</span></span></li><li><span style="color:inherit;"><span style="font-size:16px;">some tips for properly configuring your new Tableau Server environment.</span></span></li></ul></div>
</div></div></div></div><div data-element-id="elm_ZtoNjZskb2u15rqeVaKM-Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ZtoNjZskb2u15rqeVaKM-Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-type3 zpheading-align-left " data-editor="true"><span style="font-size:24px;">Understanding your Use Case</span></h2></div>
<div data-element-id="elm_-KPJRBAfqQPxxBLCjK32Tg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-KPJRBAfqQPxxBLCjK32Tg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Possibly the most important step in planning out a Tableau Server deployment is to understand your use case. What are the end goals you want to achieve? You’ll want to consider things like how many users will be accessing your server, as well as what they'll be doing. You'll also want to understand what kind of data they'll need to have access to. Which users will just be viewing content, and which users will need to author their own workbooks?</span></span><br></p></div>
</div><div data-element-id="elm_F_BXIjop6-RtQAvNqEyqHQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_F_BXIjop6-RtQAvNqEyqHQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:12pt;">Since Tableau Server is designed as a scalable web application from the ground up, it provides customers a great deal of flexibility and is an ideal platform for deploying on-premise or in the cloud. It’s important to choose the right hardware configuration that will work best for your use case as well. Typically it's good practice to separate the processes from the data source because they'll be on different servers. For example, you can keep your data on an internal database and configure the Tableau Server to access it from there.</span></p><p style="margin-bottom:16pt;"><span style="font-size:12pt;">Tableau Server can be installed on either Windows or Linux. There are pros and cons to both operating systems, and which you’ll choose should largely depend on whether or not the other related applications infrastructure in your stack is are native to Windows or Linux. It’s also important to consider which system your IT resources are most familiar with. If you're trying to share data with others and need a more robust server, you will probably want to go with Linux. If your BI needs require high-capacity servers with large amounts of data that need a lot of processing power, Windows is likely to be the more cost effective option.</span></p></div></div>
</div><div data-element-id="elm_o90HSIO75aAiQL_hT4XmJw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_o90HSIO75aAiQL_hT4XmJw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">While the following list certainly isn’t exhaustive, these are some of the questions our server experts at High Performance Technologies ask when planning a new deployment:</span></span><br></p></div>
</div><div data-element-id="elm_ZYtYjMe-bykLZydv1qDfXQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ZYtYjMe-bykLZydv1qDfXQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p style="margin-left:36pt;"><span style="font-size:12pt;">1. Will your server be running on Windows or Linux?&nbsp;</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">2. What version of Tableau Server will you be using?&nbsp;</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">3. What kind of Tableau license types will you need?</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">4. Is your server hardware on-prem or in the cloud?&nbsp;</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">5. Is your data on-prem or in the cloud?&nbsp;</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">6. Will you be working with protected data?</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">7. Should you utilize SSO or SAML?&nbsp;</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">8. What resources (CPU and memory) should you provision for your server?</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">9. Will you be using any database technology?&nbsp;</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">10. Will you be using any data warehousing technology?</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">11. Do you have resources and skills available for ongoing management of your server?</span></p><p style="margin-left:36pt;"><span style="font-size:12pt;">12. How quickly do you need to deploy a solution?</span></p></div></div>
</div><div data-element-id="elm_GZj9qpLVByD2c5hOjaMSKA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_GZj9qpLVByD2c5hOjaMSKA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Once you've made the decision on your operating system then it's time to install Tableau Server! We will describe how you can go through each step of installing and configuring Tableau Server so that your server is ready for use in production.</span></span></p></div>
</div><div data-element-id="elm_t6J9K0X--zedL5VKuxOhgw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_t6J9K0X--zedL5VKuxOhgw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">We'll begin by logging into the server and making sure the system software is up to date. You can choose which services you want Tableau Server to run on Windows or Linux by using their respective user interfaces in order to install them onto the server. The main components we recommend installing to get started are the server, the data engine, and Tableau Prep. Once all of those pieces are installed,&nbsp; you’ll need to configure them so that they work together properly in production. You can do this by configuring each service one at a time inside their respective UI interfaces which will be located under Administrative Tools. This blog post won't discuss how to configure Tableau Server in depth, but it will explain the steps involved with each process.</span></span><br></p></div>
</div><div data-element-id="elm_IPBRVRYVDrL8t-P6tu6oZw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_IPBRVRYVDrL8t-P6tu6oZw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">The first step is to open up Tableau's configuration file which can be found at C:\ProgramData\Tableau\Tableau Server\&lt;version number&gt;. This is where you'll find all of your server configuration settings including users and groups, workgroup mode, and ports. If you need to modify any of these settings then this is the place where you will want to go first.</span></span></p></div>
</div><div data-element-id="elm_Yr6AVozdzSpmMt6QzWCejQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Yr6AVozdzSpmMt6QzWCejQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">After that's finished then it's time to configure Tableau Server by opening up its UI interface which can be found at C:\Program Files\Tableau\&lt;version number&gt;. Once you’re inside the interface, it's time to configure your data engine which will be used by Tableau Prep and other services that need access to databases like PostgreSQL, SQLite, Oracle, MySQL, etc. You can do this by using the &quot;Configure&quot; button on the dashboard to open up your configurations.</span></span><br></p></div>
</div><div data-element-id="elm_WY37p2tHydxGBlJR4XgCaQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_WY37p2tHydxGBlJR4XgCaQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">It’s important to configure which port you’d like Tableau's data engine to run on and which databases it will need access to.&nbsp; Since we recommend that you set up your database server using a separate server instance, we’ll focus on configuring Tableau's data engine. Both Tableau Server and TSM require an available TCP port for you to access them. During installation, TSM defaults to port 8850, and the Tableau Server Gateway service defaults to port 80. Keeping both of those ports open before installation is the easiest way to ensure this goes smoothly.</span></span><br></p></div>
</div><div data-element-id="elm_PyWFDLOprBgZ0vAu5zNfCA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_PyWFDLOprBgZ0vAu5zNfCA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Lastly, you’ll want to configure Tableau Prep which will allow you to schedule extract refreshes and cleanse our data from the servers. You can do this by going through the server tree on the left-hand side of the UI interface in order to find &quot;Prep Service.&quot; Once you've found it then hit on its corresponding Configure button. Tableau Prep has a large number of configuration settings so it will take some time to go through them all in order to get the service configured properly in production. This blog post assumes that you'll be running Tableau Prep on its own instance of Windows Server for each component, but if not then these configurations can also be found by going into the Tableau Server UI interface.</span></span><br></p></div>
</div><div data-element-id="elm_r6J5cH12z7U2yuPnrWffKw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_r6J5cH12z7U2yuPnrWffKw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Once you've configured all of your settings then it's time to start up each one of your services so that they can run properly in production. You can do this from inside the respective UI interfaces, accessed under Administrative Tools for Windows or Application Menu for Mac.</span></span><br></p></div>
</div><div data-element-id="elm_Up9uDJMOzO0PF-tTsABC0g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Up9uDJMOzO0PF-tTsABC0g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:12pt;">Finally, you’ll need to configure Tableau Server so that your users can access it from a web browser. This will require you to have Domain Admin permissions in order for users to be able to authenticate against Active Directory. You can configure this setting by going into the Tableau Server UI interface and finding &quot;Tours &amp; Messages.&quot; Once you've found it, click the “Configure” button.&nbsp;</span></span><br></p></div>
</div><div data-element-id="elm_mv4PWrdtzqmm-oeOzpRwIw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_mv4PWrdtzqmm-oeOzpRwIw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Once you've configured all of your settings, we recommend testing out to make sure that everything is working properly before deploying this instance of Tableau Server to production.&nbsp;</span></span><br></p></div>
</div><div data-element-id="elm_P4y8gOS340tZ5M0p2Q3-Cg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_P4y8gOS340tZ5M0p2Q3-Cg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">After you've tested everything out and confirmed that it's working properly, you’re ready to deploy this instance of Tableau Server to your production environment! You can do this by copying over your files from the &quot;Staging&quot; directory on your development computer to the &quot;Production&quot; directory on your production computer.</span></span><br></p></div>
</div><div data-element-id="elm_aZJwjsGyXfjo1RRwLNUobA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_aZJwjsGyXfjo1RRwLNUobA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Once you've moved all of your files over, it's time to give yourself access before installing Tableau Server onto your new server instance. You can do this by going into Administrative Tools for Windows or Application Menu for Mac and finding each respective service's UI interface inside their corresponding directories (i.e. Tableau Server UI interface will be found under Administrative Tools on Windows or Application Menu for Mac, etc.).</span></span><br></p></div>
</div><div data-element-id="elm_Bqqtg-fCxsQ3EyMZ5ol78A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Bqqtg-fCxsQ3EyMZ5ol78A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">After you've given yourself access through the service's respective user interface, install and configure your new instance of Tableau Server by double-clicking on its corresponding MSI installer file, which you can find in each respective service's directory.</span></span><br></p></div>
</div><div data-element-id="elm_LvhIyfEiFnM3IPq8Fw172A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_LvhIyfEiFnM3IPq8Fw172A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Once you've installed Tableau Server, then it'll ask for some information about your new instance of the software. These configurations can also be found by going into each respective service's user interface under Administrative Tools on Windows or Application Menu for Mac. We'd recommend taking a look at this blog post to help guide you through the installation process.</span></span><br></p></div>
</div><div data-element-id="elm_RjMM8U3j0bf63sI62AR_1A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_RjMM8U3j0bf63sI62AR_1A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">This blog post is designed to help you plan, install and configure Tableau Server. It's important that your use case be well-defined before starting this process so that you can ensure the best possible experience with regard to performance and usability for your end users. If you're not sure where to start then just reach out! We want nothing more than for our customers' experiences to be exceptional when it comes time for them to deploy their new instance of Tableau Server in production. So go ahead - let us know if we can answer any questions or provide assistance during the planning phase (or anywhere throughout) by contacting our team here at High Performance Technologies.&nbsp;</span></span><br></p></div>
</div><div data-element-id="elm_cQw_lnCRSO2QuXorTn7V5w" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md " href="javascript:;" target="_blank"><span class="zpbutton-content">Get Started Now</span></a></div>
</div></div></div></div></div><div data-element-id="elm_WkHxe0RiQiOuwk7NVfrknw" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"></div>
</div></div> ]]></content:encoded><pubDate>Fri, 15 Oct 2021 16:44:33 -0500</pubDate></item><item><title><![CDATA[Best Practices for Upgrading Tableau Server]]></title><link>https://www.highperformance.tech/blogs/post/Best-Practices-for-Upgrading-Tableau-Server</link><description><![CDATA[<img align="left" hspace="5" src="https://www.highperformance.tech/Tableau Upgrade Blogs/jeshoots-com-sMKUYIasyDM-unsplash.jpg"/>This blog post discusses what's needed in order to plan your deployment of Tableau Server.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_YCRGv-X8TKeJu6kjarDOxA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_YujTazH9RounB4k03_-rFw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_zJJAZI4tQaaZzJrMHPStVA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_zJJAZI4tQaaZzJrMHPStVA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_i1OKcOyWyC2g9z3dY6veXw" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> [data-element-id="elm_i1OKcOyWyC2g9z3dY6veXw"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="size-original" data-size-mobile="size-original" data-align="right" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimagetext-container zpimage-with-text-container zpimage-align-right zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Tableau%20Upgrade%20Blogs/jeshoots-com-sMKUYIasyDM-unsplash.jpg" size="medium" data-lightbox="true" style="width:1600px;"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Tableau is a powerful tool that helps you make sense of data. It's also an extremely scalable product: it can grow with your needs. However, like with any other software, Tableau Server needs to be updated on a regular basis in order to stay on top of any security patches, bug fixes, and new features.</span></span><br></p><p><span style="color:inherit;"><span style="font-size:16px;">There are a number of reasons why upgrading Tableau server makes sense. You might need to upgrade in order to ensure you're still able to receive security patches, or perhaps you want to take advantage of new features in the latest release. Whatever your reason may be, this blog post will cover some best practices for upgrading Tableau Server. We'll talk about why you should upgrade your server, how to plan out a strategy and schedule for your upgrade process, what steps need to take place during the actual upgrade process, as well as outlining why ongoing upgrades are important.</span></span><span style="color:inherit;"><span style="font-size:16px;"><br></span></span></p></div>
</div></div><div data-element-id="elm_lIog2hogxNbvvWwuWms3YQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_lIog2hogxNbvvWwuWms3YQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-type3 zpheading-align-left " data-editor="true"><span style="font-size:20px;">Why You Should Upgrade</span></h2></div>
<div data-element-id="elm_Sb0ah9g820B2IZBMqAvtWA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Sb0ah9g820B2IZBMqAvtWA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">As you grow your business and your needs change, it may become necessary to upgrade from the version of Tableau Server that you started with. Newer versions of Tableau Server may introduce new features and if you want to take advantage of those features, then you need to upgrade your server. Other times, there are bug fixes and performance improvements which could dramatically improve your work experience!</span></span><br></p></div>
</div><div data-element-id="elm_5E62e3cZk3bpSyaW2HviVA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_5E62e3cZk3bpSyaW2HviVA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Upgrading can be a significant undertaking because many aspects of the current environment are likely customized or configured specifically for the current version of Tableau Server. In addition, there is no “one-size fits all” approach when upgrading an existing deployment; each situation has unique requirements and considerations. The process can also take time—anywhere from a few hours up to several months depending on how complex the environment is—and resources must be dedicated towards this effort during that period.</span></span><br></p></div>
</div><div data-element-id="elm_4k0fXLe4PPQ38yTf-F-aCw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_4k0fXLe4PPQ38yTf-F-aCw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-type3 zpheading-align-left " data-editor="true"><span style="font-size:20px;">Creating a Strategy and Plan</span><br></h2></div>
<div data-element-id="elm_F4t-VfmzhGsBxIRaBxLbIw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_F4t-VfmzhGsBxIRaBxLbIw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:12pt;">Upgrading your Tableau Server is not a difficult process if done right! It's important to make sure you have a strategy and plan in place before starting the upgrade. The first thing that you need to do when planning your Tableau Server upgrade is figure out what Tableau Server version you are currently running. You will also want to collect information on the hardware specs of the existing server and any other software or applications that are installed on it. This way, when you do make a new Tableau Server machine, you can try to match those specs as closely as possible. Tableau Server is installed on top of an operating system, which means that you will need enough RAM and disk space for both Tableau's requirements in addition to the OS'.</span></p></div></div>
</div><div data-element-id="elm_I6xLSLxN9nhCf7MXLWiQ8A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_I6xLSLxN9nhCf7MXLWiQ8A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:12pt;">Once you have all this information collected together, it’s time to think about what version of Tableau server you will be making. Tableau Server comes in several different versions depending on the components, security features and support that is required for your organization. You should also think about how Tableau Server fits into your existing IT infrastructure as well as other networked technologies, such as Active Directory or Single Sign-On (SSO) systems. This information will be useful when planning Tableau Server upgrades.</span></p></div></div>
</div><div data-element-id="elm_4Lims7tSqqYYYYxFQr4F0Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_4Lims7tSqqYYYYxFQr4F0Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">You should also make sure you have backups before upgrading Tableau Server because there's always risk involved when modifying such an important system with lots of data and features. Make sure you test the upgrade on an identical instance beforehand so that when it comes time for the real thing, all will be well.</span></span><br></p></div>
</div><div data-element-id="elm_C2B-rTKHR4Z0NFRReycSuQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_C2B-rTKHR4Z0NFRReycSuQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-type3 zpheading-align-left " data-editor="true"><span style="font-size:20px;">Completing the Upgrade</span><br></h2></div>
<div data-element-id="elm_-mgNTT28aXqxQ036S-rosQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-mgNTT28aXqxQ036S-rosQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">When it is time to actually upgrade Tableau Server, one of the first things that you need to do is make sure that your Tableau Server machine or machines are taken offline. This means shutting down all Tableau services on each server and then making a copy of the existing data before you start the upgrade process.</span></span><br></p></div>
</div><div data-element-id="elm_N_alGQtpkxt8eWfyETzsjQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_N_alGQtpkxt8eWfyETzsjQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-size:16px;">The steps to upgrade Tableau Server from here are relatively simple. You will need to download the appropriate installer from your account, and use it to install the new version on a fresh instance of Windows or Linux server.</span><br></p></div>
</div><div data-element-id="elm_VQuxtlmXedP0D30SIRoOnw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VQuxtlmXedP0D30SIRoOnw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">When you install Tableau Server, you can license it either online or offline. If your server is connected to a network that allows you to access the internet, you’ll want to license Tableau Server online. On the other hand, you may have security or regulatory requirements that don’t allow your Tableau Server to be exposed to the internet or require you to have a proxy in place. If that’s the case, you will need to do an offline activation (you may also find this blog post useful: How to Stand Up a HIPPA compliant Tableau Server). This essentially requires someone to behave as a manual proxy themselves. It’s easier to license your Tableau Server online, so go that route if you are able to.</span></span></p></div>
</div><div data-element-id="elm_6zqE6eeAmwZS3t_5Rx4N2w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_6zqE6eeAmwZS3t_5Rx4N2w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Once Tableau Server has been upgraded, you will need to migrate your data from the old Tableau server to the new one. Tableau provides a command line tool for this process that is simple and straightforward to use, but some Tableau versions require additional steps. The Data Migration Tool can be used with any version of Tableau Server, but anything older than Tableau Server 2018.x requires that you use Tableau Prep Conductor to migrate data before the upgrade can be completed or on Tableau Data Extracts (TDE) files created with a version of Tableau Server earlier than 2017.</span></span></p></div>
</div><div data-element-id="elm_zNkPn70-dZheLoRn83nnlQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_zNkPn70-dZheLoRn83nnlQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-type3 zpheading-align-left " data-editor="true"><span style="font-size:20px;">The Importance of Upgrading Frequently</span></h2></div>
<div data-element-id="elm_Jyt9euFURW_jTvHgoe85qw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Jyt9euFURW_jTvHgoe85qw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">While it can be hard to keep up with the latest features and bug fixes Tableau releases, if you don't upgrade regularly, your server will become outdated and less useful over time, and may even start slowing down or even crashing unexpectedly. Thankfully when you upgrade to a new version of Tableau Server, all sorts of old bugs are removed from the codebase and they never come back!</span></span><br></p></div>
</div><div data-element-id="elm_7wieR_J-wxHhVT913zxWPg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_7wieR_J-wxHhVT913zxWPg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">We recommend creating a schedule to upgrade your server on a regular basis so that you always have the most current version of Tableau Server available. This way, you'll always be able to get the most out of your server environment!</span></span><br></p></div>
</div><div data-element-id="elm_EBWHKVpcTZWekmCC2eNZgQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_EBWHKVpcTZWekmCC2eNZgQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="font-size:12pt;">If you’re interested in learning more about whether it’s time for your organization to upgrade Tableau Server, please feel free to </span><a href="https://www.highperformance.tech/"><span style="font-size:12pt;">reach out</span></a><span style="font-size:12pt;">. Our expert resources have been working with Tableau for over 13 years and are happy to assist with your next upgrade or helping you figure out how to navigate your evolving Business Intelligence needs. You may also want to consider automating your upgrades as well as your deployments and backups using our infrastructure management service, </span><a href="https://www.vizstack.io/"><span style="font-size:12pt;">Vizstack</span></a><span style="font-size:12pt;">.&nbsp;</span><br></p><p style="text-align:left;"><span style="color:inherit;"></span></p><div><br></div></div>
</div><div data-element-id="elm_D_GvPcHJQKOc68TTRihXRg" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md " href="javascript:;" target="_blank"><span class="zpbutton-content">Get Started Now</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 13 Oct 2021 16:59:18 -0500</pubDate></item></channel></rss>