4 Replies Latest reply on Aug 24, 2018 1:57 PM by Tomohiro Egawa

    USERNAME() 関数をTableau Server上にエクストラクトをした場合

    Tomohiro Egawa

      USERNAME()関数を用いたUSERNAMES()というカラムを作成し、

      *Extract作成時に見たUSERNAMES()

       

      * PublishされたTableau Server上にあるUSERNAMES()

       

      Tableau ServerにエクストラクトをPublishするとのようになり、計算項目ではなくなり一定の値を取ってしまいます。

      そのためUserを切り替えたとしても値が切り替わらなくなってしまいます。 → エクストラクト作成者の値が入ってしまいます。

       

      何か良い方法はご存じだったりしないでしょうか?

        • 1. Re: USERNAME() 関数をTableau Server上にエクストラクトをした場合
          Akihiro Azuma

          当方の環境(2018.1)ではちゃんとログインユーザ名に変わりました。

          #説明では一定値に見えますが、DESKTOP側サインインユーザを変更すると値に反映されました。

           

          バージョンの差異があるのもしれません。

           

          その場合の回避策としては、

          「データソースの項目には含めないで、ワークブック側の項目として作る」

          ぐらいかなぁと思います。

          • 2. Re: USERNAME() 関数をTableau Server上にエクストラクトをした場合
            Tomohiro Egawa

            検証、回答ありがとうございます。

            こちらでも検証した結果 USERNAME()を呼び出すだけだと問題なかったです。 環境(2018.1)

            ほかの関数とかで利用すると問題が起きるようです。

             

            Some Functionという計算されたフィールドを作成し

            IF [USERNAME()] == '誰かのUSERNAME'

              THEN TRUE

              ELSE FALSE

            END

             

            を作成したするとUSERNAME()の値が固定されるようです。。。

             

            >データソースの項目には含めないで、ワークブック側の項目として作る。

            いまはこちらで対処してるのですが、USERNAME()関数を利用した処理が多いのでそこで困っておりますが、1個1個変更するしかなさそうですね。

            • 3. Re: USERNAME() 関数をTableau Server上にエクストラクトをした場合
              Akihiro Azuma

              >Some Functionという計算されたフィールドを作成し

              >IF [USERNAME()] == '誰かのUSERNAME'

              >  THEN TRUE

              >  ELSE FALSE

              >END

              やってみましたが、やはりDESKTOP側のサインインユーザ名が反映され、

              EGAWAさんの事象を再現できませんでした。。。

               

              当方の作業手順は

              ① 適当なデータを読み込む

              ② 当該の計算フィールドを作成

              ③ Serverにパブリッシュ

              ④ Desktop側から抽出をライブ接続

              ⑤ ユーザを切り替えて反映されることを確認

              という感じです。

              ※④で「Server上のExtractをさらに抽出する」を実施すると

               値が固定されるようになりましたが、そんなことはしていないですよね?

               

              EGAWAさんの作業手順をなるべく詳細に書いて頂けますでしょうか?

              • 4. Re: USERNAME() 関数をTableau Server上にエクストラクトをした場合
                Tomohiro Egawa

                Azumaさん

                ご丁寧にありがとうございます。


                全く同じことをしているつもりでいます。

                 

                手順

                ① 適当なデータを読み込む → サンプルのため日本分析の世界気温を読み込んでおります。

                 

                ② 当該の計算フィールドを作成

                わかりやすいように 

                     [USERNAME]という'USERNAME()'を返すディメンションと

                     [USERNAMEFLAG]という 'USERNAME = ”自分のユーザー名” ’の結果を返すディメンションを作成しています。

                  このディメンションはTRUEの時は変更されていない FALSEの時は変更されているになります。

                 

                ②' 抽出の作成 → 通常通りデータを抽出しています。

                ③ Serverにパブリッシュ 

                ④ Desktop側から抽出をライブ接続 → 特に影響はないと思いますが、"ワークブックを更新してパブリッシュされたデータソースを使用"を利用

                     [USERNAME in WB]という'USERNAME()'を返すディメンションを作成→ こちら[USERNANE]とおなじ中身になります。違いはパブリッシュされたデータソース内にあるかWBで作成されたかになります。

                     [真偽]という '[USERNAME]  =  [USERNAME in WB]'

                ⑤ ユーザを切り替えて反映されることを確認

                 

                想定通りパブリッシュされたデータソース内でもUSERNAMEが変わるのならば常に真偽は真を取るはずです。

                 

                本人でログインした場合

                 

                別の人でログインした場合

                *ちなみに変更したユーザーはデータソースへのアクセス権のあるユーザーになります。 3人ほど試しましたが特に変わりはないです。

                 

                Tableau Sererの環境が以下の設定になっておりました。

                 

                Tableau Server Version:

                2018.1.2 (20181.18.0615.1128) 64-bit Windows

                Tableau Desktopの環境は

                2018.1.1(20181.18.0510.1418)

                 

                違いは環境の違いだけに思えるのですが、、、