1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Power BI】日本語のリスト名、列名に URL クエリ文字列パラメーターでフィルターをかける

1
Last updated at Posted at 2022-12-20

【Power BI】日本語のリスト名、列名に URL クエリ文字列パラメーターでフィルターをかける

📝 概要

Power BIURL クエリ文字列パラメーターでフィルターを行う際、日本語などの英数字以外の文字を含むテーブル名・列名は、そのままでは使用できません。本記事では、これらの名前を URL で扱うためのエスケープ仕様と、対象文字列を変換する PowerShell スクリプトを紹介します。


🎯 目的

Power BI の URL クエリ文字列パラメーターでは、テーブル名や列名に英数字以外の文字(日本語、記号、スペース、ダッシュ、先頭が数字の名前など)が含まれる場合、そのままでは識別子として扱えず、フィルターが正しく動作しません。これらの文字は URL 上で解釈できるように、特定のエスケープ形式で表現する必要があります。

このエスケープ形式は SharePoint リストの内部名と似た構造を持っており、日本語を含む識別子を URL で扱う際の参考になります。日本語の名前を含む環境では、この仕様を理解していないと URL フィルターが期待通りに動作しないため、注意が必要です。


🧩 説明

テーブル名と列名に含まれる特殊文字

テーブル名と列名に含まれる特殊文字とスペースには、追加の書式設定が必要です。 クエリにスペース、ダッシュ、またはその他の非 ASCII 文字を含める場合は、それらの特殊文字の前に、アンダースコアと X ( _x) で始まる "エスケープ コード" を付け、その後に 4 桁の Unicode を続け、さらにもう 1 つのアンダースコアを付加します。 Unicode が 4 文字未満の場合は、それをゼロで埋める必要があります。 次に例をいくつか示します。

URL フィルターの基本構造

Power BI のレポートは、URL に ?filter= を付与することで外部からフィルター条件を指定できます。比較する値はシングルクォートで囲みます。

?filter=<テーブル>/<フィールド> eq '<値>'

エスケープ形式の仕組み

Power BI の URL フィルターでは、テーブル名やフィールド名に スペース、ダッシュ、先頭の数字、またはその他の非 ASCII 文字 が含まれる場合、それらを UTF‑16 のコードポイント (16 進数・小文字) に変換し、_xffff_ 形式で表現します。

商品名 → _x5546__x54c1__x540d_

この形式は SharePoint リストの内部名と同様の考え方です。

識別子 Unicode クエリー
Table Name 半角スペース (0x0020) Table_x0020_Name
Column@Number @ (0x0040) Column_x0040_Number
[Column] [ (0x005b), ] (0x005d) _x005b_Column_x005d_
Column+Plus + (0x002b) Column_x002b_Plus
2TableName 2 (0x0032) _x0032_TableName

特殊文字のエスケープ

テーブル名やフィールド名に日本語・記号・スペースなどが含まれる場合、そのままでは識別子として扱えません
※比較値 (りんご) はエスケープ不要です。

誤:?filter=商品マスタ/商品名 eq 'りんご'
正:?filter=_x5546__x54c1__x30de__x30b9__x30bf_/_x5546__x54c1__x540d_ eq 'りんご'

🔧 変換スクリプト

Convert-ToPowerBIIdentifier.psm1
function Convert-ToPowerBIIdentifier {
    param(
        [Parameter(Mandatory = $true)]
        [string]$InputString
    )

    $strs = for ($i = 0; $i -lt $InputString.Length; $i++) {
        $c = $InputString[$i]
        $code = [int][char]$c

        # 先頭が数字 → escape
        if ($i -eq 0 -and $c -match '[0-9]') {
            "_x{0}_" -f $code.ToString("x4")
            continue
        }

        # 英数字・アンダースコア以外 → escape
        if ($c -notmatch '[A-Za-z0-9_]') {
            "_x{0}_" -f $code.ToString("x4")
            continue
        }

        # それ以外はそのまま
        $c
    }

    -join $strs
}

📊 結果・効果

URL フィルターで使用する識別子を自動変換できるようになり、スペースや日本語、記号、先頭の数字を含む列名でも安定してフィルター指定が行えるようになりました。手作業での変換ミスがなくなり、Power BI レポートの外部連携や埋め込み時の URL 生成が確実かつ再現性のあるものになります。


📌 まとめ

  1. 変換対象は テーブル名・列名の識別子のみ で、比較値(例:りんご)は変換不要です。
  2. _xffff_ 形式は UTF‑16 のコードポイント(16 進数・小文字)を使用します。
  3. Unicode が 4 桁未満の場合は、先頭をゼロで埋めて 4 桁にします。
  • 例:半角スペース → 0x20_x0020_
  1. 先頭が数字の場合のみ変換されますが、途中の数字はそのまま使用できます。
  2. Power BI Desktop と Power BI Service のどちらでも同じ形式が使用されます。

🔗 関連情報

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?