ユーザー関数

この記事では、ユーザー関数と Tableau での用途について紹介します。また、例を使用してユーザー計算を作成する方法を示します。

ユーザー関数を使う理由

ユーザー関数は、ユーザー フィルターや、Tableau Server または Tableau Cloud にパブリッシュされたビジュアライゼーションに影響を与える行レベルのセキュリティ フィルターの作成に使用できます。これにより、特定のユーザーのみがビジュアライゼーションを表示できるようにします。

たとえば、Tableau Server または Tableau Cloud にパブリッシュされた部門の従業員ごとの売り上げ実績を表示するビジュアライゼーションがある場合、従業員がビジュアライゼーションにアクセスするときに自分の売上数字のみが表示されるようにする必要があります。

この場合は、ISMEMBEROF 関数を使用して、サーバーにサインインしたユーザーのユーザー名がサーバー上の指定されたグループ ("Managers (マネージャー)" グループなど) のメンバーである場合に true を返すフィールドを作成できます。次に、この計算フィールドを使用してビューにフィルターを設定すると、グループに含まれるユーザーのみがデータを表示できるようになります。

この場合の計算は、次のようになります。

ISMEMBEROF('Managers')

: グループ名またはユーザー名にアルファベット以外の文字が含まれている場合は、以下の関数を使用するときに、特殊文字に HTML URL エンコードを使用する必要があります。

アンダースコア、かっこ、感嘆符などの一部の特殊文字は、HTML URL エンコードなしでも使用できます。 _ ( ) ! 他の多くの文字はエンコードする必要があります。

たとえば、関数 ISMEMBEROF("USERS+") は、'%2B' が '+' 記号の HTML URL エンコードなので、ISMEMBEROF("USERS%2B") と書く必要があります。HTML URL エンコードの詳細については、W3schools Web 開発者サイトの「HTML URL エンコードの参照 (英語)」(新しいウィンドウでリンクが開く)を参照してください。

Tableau Cloud の埋め込みのワークフローのみ

ユーザー関数のうち、ユーザー属性関数のサブセットは Tableau 連携アプリ(新しいウィンドウでリンクが開く)で使用することができます。ユーザー属性関数 (USERATTRIBUTE および USERATTRIBUTEINCLUDES) を使用すると、認証ワークフローの一部として、Tableau がランタイムにユーザー属性を取得できるようになります。ユーザー属性が JSON Web Tokens (JWT) から渡されると、これらの関数を使用して作成された埋め込みコンテンツで、ユーザーに表示されるデータを制御およびカスタマイズすることができます。

注:

  • ワークフローに影響を与える可能性のある既知の問題については、 Embedding API v3(新しいウィンドウでリンクが開く) のヘルプを確認してください。

  • ユーザー属性関数は、Tableau Desktop または Tableau Cloud で作成されたコンテンツに含めることができます。

  • Tableau Desktop や Tableau Cloud で作成する場合、これらの関数を使用したコンテンツのプレビューは利用できません。ユーザー属性関数は、NULL または FALSE 値を返します。ユーザー属性関数が期待通りに機能できるようにするため、外部アプリケーションに埋め込んだ後にコンテンツを確認することをお勧めします。これらのユーザー関数を含む埋め込みのワークフローについては、「埋め込み API v3(新しいウィンドウでリンクが開く)」のヘルプを参照してください。

  • ユーザー属性関数は、非埋め込みワークフローや OIDC または SAML プロトコルでは使用できません。

Tableau で利用可能なユーザー関数

FULLNAME( )

構文FULLNAME( )
出力文字列
定義

現在のユーザーのフル ネームを返します。

FULLNAME( )

サインインしたユーザーのフルネームを返します (「Hamlin Myrer」など)。

[Manager] = FULLNAME( )

Hamlin Myrer というマネージャーがサインインしている場合、この例では、ビューの [マネージャー] フィールドに「Hamlin Myrer」が含まれているときにのみ TRUE を返します。

この関数は以下をチェックします。

  • Tableau Cloud および Tableau Server: サインインしたユーザーのフルネーム
  • Tableau Desktop: ユーザーのローカルまたはネットワークのフルネーム

ユーザー フィルター

フィルターとして使用すると、[Username field] = FULLNAME( ) などの計算フィールドにより、サーバーにサインインしているユーザーと関連性のあるデータのみを表示するユーザー フィルターを作成できます。

ISFULLNAME

構文ISFULLNAME("User Full Name")
出力ブール値
定義

現在のユーザーのフル ネームが指定されたフル ネームに一致する場合に TRUE を返し、一致しない場合は FALSE を返します。

ISFULLNAME("Hamlin Myrer")

<"User Full Name"> 引数はフィールドではなくリテラル文字列である必要があります。

この関数は以下をチェックします。

  • Tableau Cloud および Tableau Server: サインインしたユーザーのフルネーム
  • Tableau Desktop: ユーザーのローカルまたはネットワークのフルネーム

ISMEMBEROF

構文ISMEMBEROF("Group Name")
出力ブール値または Null
定義

現在 Tableau を使用しているユーザーが指定された文字列と一致するグループのメンバーである場合は TRUE、メンバーでない場合は FALSE、サインインしていない場合は NULL を返します。

ISMEMBEROF('Superstars')
ISMEMBEROF('domain.lan\Sales')

<"Group Full Name"> 引数はフィールドではなくリテラル文字列である必要があります。

Tableau Cloud または Tableau Server にユーザーがサインインしている場合、グループ メンバーシップは Tableau グループによって決定されます。指定された文字列が「全ユーザー」の場合、この関数は TRUE を返します。

ISMEMBEROF( ) 関数は、Active Directory のドメインにも対応しています。Active Directory ドメインは、グループ名を使用して計算内で宣言される必要があります。

ユーザーのグループ メンバーシップに変更が加えられた場合、グループ メンバーシップに基づくデータの変更は、新しいセッションを使用してワークブックまたはビューに反映されます。既存のセッションには古いデータが反映されます。

ISUSERNAME

構文ISUSERNAME("username")
出力ブール値
定義現在のユーザーのユーザー名が、指定された username に一致する場合は TRUE を、一致しない場合は FALSE を返します。
ISUSERNAME("hmyrer")

<"username"> 引数はフィールドではなくリテラル文字列である必要があります。

この関数は以下をチェックします。

  • Tableau Cloud および Tableau Server: サインインしたユーザーのフルネーム
  • Tableau Desktop: ユーザーのローカルまたはネットワークのユーザー名

USERDOMAIN( )

構文USERDOMAIN( )
出力文字列
定義現在のユーザーのドメインを返します。

この関数は以下をチェックします。

  • Tableau Cloud および Tableau Server: サインインしているユーザーのユーザー ドメイン
  • Tableau Desktop: ユーザーがドメイン上に存在する場合はローカル ドメイン

USERNAME( )

構文USERNAME( )
出力文字列
定義現在のユーザーのユーザー名を返します。
USERNAME( )

サインインしているユーザーのユーザー名 (「hmyrer」など) を返します。

[Manager] = USERNAME( )

hmyrer というマネージャーがサインインしている場合、この例では、ビューの [マネージャー] フィールドに「hmyrer」が含まれているときにのみ TRUE を返します。

この関数は以下をチェックします。

  • Tableau Cloud および Tableau Server: サインインしたユーザーのフルネーム
  • Tableau Desktop: ユーザーのローカルまたはネットワークのユーザー名

ユーザー フィルター

フィルターとして使用すると、[Username field] = USERNAME( ) などの計算フィールドにより、サーバーにサインインしているユーザーと関連性のあるデータのみを表示するユーザー フィルターを作成できます。

USERATTRIBUTE

: この機能を使用する前に、「Tableau Cloud の埋め込みのワークフローのみ」を参照してください。詳細については、埋め込み API v3 の「認証と埋め込みビュー(新しいウィンドウでリンクが開く)」を参照してください。

構文USERATTRIBUTE('attribute_name')
出力文字列または Null
定義

<'attribute_name'> が Tableau に渡された JSON Web トークン (JWT) の一部である場合、この計算は <'attribute_name'> の最初の値を返します。

<'attribute_name'> が存在しない場合は Null を返します。

「地域」が、JWT に含まれるユーザー属性であり、サイト管理者によって設定済みの接続済みアプリを使用して Tableau に渡されているとします。

ワークブックの作成者は、ビジュアライゼーションを設定し、指定された地域に基づいてデータをフィルターすることができます。そのフィルターでは、次の計算を参照できます。

[Region] = USERATTRIBUTE("Region")

西部地域の User2 が埋め込まれたビジュアライゼーションを表示すると、Tableau は適切な西部地域のデータのみを表示します。

<'attribute_name'> が複数の値を返すと予測される場合は、USERATTRIBUTEINCLUDES 関数を使用することができます。

USERATTRIBUTEINCLUDES

: この機能を使用する前に、「Tableau Cloud の埋め込みのワークフローのみ」を参照してください。詳細については、埋め込み API v3 の「認証と埋め込みビュー(新しいウィンドウでリンクが開く)」を参照してください。

構文USERATTRIBUTEINCLUDES('attribute_name', 'expected_value')
出力ブール値
定義

次の両方が true の場合に TRUE を返します。

  • <'attribute_name'> は、Tableau に渡される JSON Web トークン (JWT) の一部である
  • <'attribute_name'> 値のいずれかが <'expected_value'> と等しい

そうでない場合は FALSE を返します。

「地域」が、JWT に含まれるユーザー属性であり、サイト管理者によって設定済みの接続済みアプリを使用して Tableau に渡されているとします。

ワークブックの作成者は、ビジュアライゼーションを設定し、指定された地域に基づいてデータをフィルターすることができます。そのフィルターでは、次の計算を参照できます。

USERATTRIBUTEINCLUDES('Region', [Region])

西部地域の User2 が埋め込まれたビジュアライゼーションにアクセスすると、Tableau はユーザー属性 [地域] が [地域] フィールドの値のいずれかと一致するかどうかをチェックします。true である場合、ビジュアライゼーションは適切なデータを表示します。

北部地域の User3 が同じビジュアライゼーションにアクセスすると、[地域] フィールドの値と一致するものがないため、データを表示することができません。

ユーザー計算の作成

ユーザー計算は、Tableau Server または Tableau Cloud で設定したユーザーおよびグループが直接操作します。ユーザー計算を作成して、フィルターとして使用することができます。これにより、関連するデータのみを表示できます。

たとえば、米国の 48 州を対象とする売り上げデータを表示するマップに類似するマップ ビジュアライゼーションがある場合、ユーザー計算を作成して各ユーザーに関連する部分のマップ (地域マネージャーと統括マネージャーに関連するデータなど) のみを表示することができます(統括マネージャーは国全体のデータを表示できますが、地域マネージャーには管理する地域のデータのみが表示されるようにする必要があります)。

統括マネージャーがサインインすると、次のビジュアライゼーションが表示されます。

西部地域マネージャーがサインインすると、次のようにその地域の売上のみが表示されます。

この例に類似したユーザー関数を作成するには、次の手順を行います。

はじめる前に

この例に沿った手順を行うには、Tableau Server または Tableau Cloud へのアクセス権を所有している必要があります。また、サーバーまたはサイト管理者である必要があります。

ステップ 1: ユーザーとグループの作成

  1. Tableau Server または Tableau Cloud へのサインイン。

  2. Tableau Server あるいは Tableau Cloud で、次のユーザーを追加します。

    • Sadie Pawthorne

    • Chuck Magee

    • Fred Suzuki

    • Roxanne Rodriguez

    詳細については、Tableau Server ヘルプの「サイトへのユーザーの追加」(新しいウィンドウでリンクが開く)を参照してください。

  3. "National Managers (統括マネージャー)" という新規グループを作成します。

    詳細については、Tableau Server ヘルプの「ローカル グループの作成」(新しいウィンドウでリンクが開く)を参照してください。

  4. "National Managers (統括マネージャー)" グループに自分を追加します。

    詳細については、Tableau Server ヘルプの「グループへのユーザーの追加」(新しいウィンドウでリンクが開く)を参照してください。

ステップ 2: ビジュアライゼーションの作成

  1. Tableau Desktop を開き、Tableau に付属の "Sample - Superstore (サンプル - スーパーストア)" データ ソースに接続します。

  2. ワークスペースの左下隅で、[データ ソース] タブをクリックします。

  3. [データ ソース] ページの左側にある [接続] ペインから、"People (人)" シートを結合エリアにドラッグします。

  4. 結合アイコンをクリックし、[左] を選択します。

  5. 新しいワークシートに移動します。

  6. [データ] ペインの [ディメンション] で "State (州)" をダブルクリックします。

    マップ ビューが作成されました。

  7. [データ] ペインの [メジャー] から、"Sales (売上高)" を [マーク] カードの [色] にドラッグします。

  8. [列] シェルフで [経度] フィールドを選択し、キーボードの Control (Mac では Command) を押したままコピーします。コピーを [列] シェルフにある元データの右側にドラッグします。

  9. [マーク] カードで、2 番目 (下部) の [経度] タブをクリックします。

  10. [データ] ペインから "Region (地域)" を [マーク カード] の [色] にドラッグします。

    右側のマップ ビューが新しい色を使用して更新されます。

  11. [マーク] カードで、[マーク タイプ] ドロップダウンをクリックし、[マップ] を選択します。

  12. [マーク] カードの [不透明度] で [色] をクリックし、スライダーを 50% に調整します。

  13. [マーク] カードで、最初の [経度] タブをクリックします。

  14. [マーク] カードで [色] > [色の編集] をクリックし、次にカラー パレットのドロップダウン リストから [灰色] を選択します。

    左側のマップ ビューが更新されます。

  15. [列] シェルフの右側にある [経度] フィールドを右クリックして、[二重軸] を選択します。

マップは次のようになります。

ステップ 3: ユーザー計算の作成

  1. [分析] > [計算フィールドの作成] を選択します。

  2. 開いた計算エディターで、次の操作を実行します。

    • 計算フィールドに "User Filter (ユーザー フィルター)" と名前を付けます。

    • 次の式を入力します。

      [Regional Manager] = USERNAME() OR ISMEMBEROF("National Managers")

      この計算では、ユーザーが "Region (People) (地域 (人))" フィールドに含まれているか、または "National Managers (統括マネージャー)" グループに含まれているかを確認します。含まれている場合は、true を返します。

    • 終了したら、[OK] をクリックします。

    新しい計算フィールドが [データ] ペインの [ディメンション] の下に表示されます。他のフィールドと同様に、このフィールドを 1 つ以上のビジュアライゼーションで使用できます。

ステップ 4: [フィルター] シェルフへのユーザー計算の追加

  1. [データ] ペインの [ディメンション] から、"User Filter (ユーザー フィルター)" を [フィルター] シェルフまでドラッグします。

  2. 開いた [フィルター] ダイアログ ボックスで [True] を選択してから、[OK] をクリックします。

    : Tableau Server または Tableau Cloud にサインインしていない場合は、[True] オプションを表示できません。Tableau Desktop で、Tableau Server または Tableau Cloud にサインインして選択します。詳細については、Tableau Server または Tableau Cloud へのサインイン(新しいウィンドウでリンクが開く)を参照してください。

ステップ 5: 計算のテスト

  1. Tableau Desktop で、ワークスペースの右下隅にある [ユーザーとしてフィルター] ドロップダウンをクリックし、ユーザーを Sadie Pawthorne に変更します。

    Sadie は "People (人)" シートの "West (西部)" 地域に割り当てられているため、マップが更新されて "United States (米国)" の "West (西部)" 地域のみが表示されます。

  2. [ユーザーとしてフィルター] ドロップダウンをもう一度選択し、ユーザーを Roxanne Rodriguez に変更します。

    Roxanne は "People (人)" シートの "Central (中央部)" 地域に割り当てられているため、マップが更新されて "United States (米国)" の "Central (中央部)" 地域のみが表示されます。

  3. [ユーザーとしてフィルター] ドロップダウンを再度選択し、ユーザーを [Chuck Magee] に変更します。

    Chuck は "People (人)" シートの "East (東部)" 地域に割り当てられているため、マップが更新されて "United States (米国)" の "East (東部)" 地域のみが表示されます。

  4. [ユーザーとしてフィルター] ドロップダウンをもう一度選択し、ユーザーを Fred Suzuki に変更します。

    Fred は "People (人)" シートの "South (南部)" 地域に割り当てられているため、マップが更新されて "United States (米国)" の "South (南部)" 地域のみが表示されます。

  5. [ユーザーとしてフィルター] ドロップダウンをもう一度選択し、ユーザーを自分に戻します。

    自分はサーバーの "National Managers (統括マネージャー)" グループに含まれているため、マップが更新されてすべてのデータが表示されます。

ビューを Tableau Server または Tableau Cloud にパブリッシュすると、動作が保持されます。"National Managers (統括マネージャー)" グループまたは "Sample - Superstore (サンプル - スーパーストア)" データ ソースの "People (人)" シートに記載されていないユーザーには、空白のビジュアライゼーションのみが表示されます。

関連項目

Tableau で使用する関数

Tableau 関数 (カテゴリ別)

Tableau 関数 (アルファベット順)

フィードバックをお送りいただき、ありがとうございます。フィードバックは正常に送信されました。ありがとうございます!