【Power BI】日本語のリスト名、列名に URL クエリ文字列パラメーターでフィルターをかける
📝 概要
Power BI の URL クエリ文字列パラメーターでフィルターを行う際、日本語などの英数字以外の文字を含むテーブル名・列名は、そのままでは使用できません。本記事では、これらの名前を URL で扱うためのエスケープ仕様と、対象文字列を変換する PowerShell スクリプトを紹介します。
🎯 目的
Power BI の URL クエリ文字列パラメーターでは、テーブル名や列名に英数字以外の文字(日本語、記号、スペース、ダッシュ、先頭が数字の名前など)が含まれる場合、そのままでは識別子として扱えず、フィルターが正しく動作しません。これらの文字は URL 上で解釈できるように、特定のエスケープ形式で表現する必要があります。
このエスケープ形式は SharePoint リストの内部名と似た構造を持っており、日本語を含む識別子を URL で扱う際の参考になります。日本語の名前を含む環境では、この仕様を理解していないと URL フィルターが期待通りに動作しないため、注意が必要です。
🧩 説明
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 'りんご'
🔧 変換スクリプト
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 生成が確実かつ再現性のあるものになります。
📌 まとめ
- 変換対象は テーブル名・列名の識別子のみ で、比較値(例:りんご)は変換不要です。
-
_xffff_形式は UTF‑16 のコードポイント(16 進数・小文字)を使用します。 - Unicode が 4 桁未満の場合は、先頭をゼロで埋めて 4 桁にします。
- 例:半角スペース →
0x20→_x0020_
- 先頭が数字の場合のみ変換されますが、途中の数字はそのまま使用できます。
- Power BI Desktop と Power BI Service のどちらでも同じ形式が使用されます。