はじめに
この記事は v6.0.0 より古いバージョンの Re:dash を使用している方向けに書いています。
v6.0.0 以降を使用している方は参考程度に読んでください。
経緯と事象
仕事でデータ分析基盤として Re:dash を使っている。
アクセスログを解析するのに文字列型のクエリパラメータを設定してURLの絞り込みを行いたかった。
ところがデータは存在するはずなのにURLを指定するとなぜか検索結果が0件。
原因
渡されるパラメータを調べたらなんとスラッシュ /
が /
に変換されているではないか。
どうも特定の文字列を勝手に文字参照にエスケープしてくれちゃうらしい。
道理でマッチしないわけだ。
対処法
最初は REPLACE で置換していたんだけど、なんかスマートじゃないなぁと調べてみたらもっと良い方法を見つけた。
{{{param}}}
とするだけ。ふつうのパラメータ指定のブラケットを1つ増やせばOK。
こうすると文字がエスケープされずにスラッシュをそのまま渡せる。
https://github.com/getredash/redash/issues/1211
確認した環境
- Re:dash v5.0.2
- macOS Mojave v10.14.6
- Chrome v79.0.3945.88
現行バージョンではエスケープされないらしい (未確認)
v6.0.0 でエスケープされないように修正されたもよう
https://github.com/getredash/redash/pull/3058
おまけ
Re:dash は Mustache というテンプレートエンジンを使っているので参考までに貼っておく。
https://mustache.github.io/