5 Replies Latest reply on May 3, 2017 6:35 AM by Toby Erkson

    Cache(?) issue Tableau Server (with Tableau data source/extract & Row level security)

    Martijn Beuker


      We run Tableau Server 10.0 and we have this strange thing that some users see other data then they are supposed to. After a refresh or changing the filters the data is shown correctly.

      Our setup:

      IBM Netezza -> Tableau data source (extract) -> Tableau Workbook.

      We implemented row level security per user: we put all users in a field and use  CONTAINS(lower([DA bi user]),lower("<"+USERNAME()+">")) to validate the user in calculated field ([Authorized]) in the data source. The workbook then filters [Authorized] = True. To make it more easy for the developers we extended in the field Authorized to see all data: CONTAINS(lower([DA bi user]),lower("<"+USERNAME()+">")) or (ISMEMBEROF("Our Developers"))

      When a normal user (no developer) logs in, the user gets only the records that he is allowed to see. The second normal user gets initially the data shown from the first. After a refresh (button) the correct data is shown for this user. However when we log out and logon again still the old data is shown. Also when another user logs on. I expected the new refreshed data to be in cache, but the first-logon-data seems to be in cache.

      Also strange is that, when I logon with my developer account I get the correct data (ISMEMBEROF("Our Developers"))


      When I use the filter CONTAINS(lower([DA bi user]),lower("<"+USERNAME()+">")) or (ISMEMBEROF("Our Developers")) in the workbook it works fine (in stead of [Authorized] = True). However it would be nice if this formula could be placed in the data-source (as it is also described in many tutorials)


      This issue only occurs on the Server.


      1. I assume the problem has to do something with caching on the Tableau server, Am I correct? I can imagine that, while the (initial) query to the extract is the same. But the ISMEMBEROF() does work..... strange....
      2. We do not ignore the initial query-option, is it correct this is only a server setting?
      3. Are there better solutions for this?
      4. Also regarding the refresh, I suspected to have the new data in the cache... why isn't it?
      5. Also a refresh of the data-source extract (daily at night) does not trigger the server cache to be cleared (should be nice I think)


      Hope that someone can help or give me some more info on caching of Tableau. I found this video very informative: Robert-Morton-Understanding-Tableau-Query-Cache-Sept-26-13 but it is relatively old (8.0/8.1)