3 Replies Latest reply on Aug 9, 2018 8:06 AM by Michael Gillespie

    Does a new extract need to be created every time the joins change?

    leighton.du

      Hi, I'm fairly new to Tableau Desktop. I created an extract of a SQL database without joins first, thinking I could do everything I want locally from then on. However, when I join the tables within the extract and try to save the workbook, I get prompted to save a new extract of the joined version of the database. Am I missing something or are joins created at a SQL level only (and hence cannot be done within an existing extract)?

       

      Thank you in advance!

        • 1. Re: Does a new extract need to be created every time the joins change?
          Michael Gillespie

          Leighton, think of it this way:

           

          The Extract that Tableau creates is a static representation of the state of the data at the time the extract was created.  Tableau then uses this brand new data model in the workbook(s) you create - the original state of the data (in your case, in a relational database of some kind) is completely unknown to Tableau.  The only thing Tableau knows about is the new, static data model.

           

          So, if you change that static data model (the extract), then Tableau has to create a NEW static data model that incorporates your changes.  That's why you get prompted to save a new extract after you do a join inside Tableau.

           

          That's a simplification of what's going on but it will do to illustrate what you're seeing.


          Does that make sense?

          • 2. Re: Does a new extract need to be created every time the joins change?
            leighton.du

            Thanks Michael. I had originally thought the Extract was more akin to a local copy of the tables/relational databases. This has cleared up my confusion.

            • 3. Re: Does a new extract need to be created every time the joins change?
              Michael Gillespie

              Glad that helped.

               

              A little more technical detail:

               

              Whenever Tableau opens a data source that you have defined, it creates an in-memory representation of that data source in an optimized format.  Tableau then performs all actions against that in-memory data model, which can look very different from the original source data model.  It is highly optimized for Tableau's needs.

               

              An extract action causes Tableau to write that in-memory model to an external file: .tde or .hyper, depending on the version of Tableau you're using.  That makes it portable, and allows you to publish that extract to Server so that Server can manage the data refresh process for you.