redashのパラメータをHTMLエスケープせずに使用する、あるいはin句に文字列のリストを渡す

Posted on

tl;dr;

波括弧3個を使う {{{ }}}

問題

通常redashで指定するパラメータはHTMLエスケープ処理される。 以下のようなクエリがあった場合、単純に文字列のパラメータを送ると不正なクエリとして失敗する。

  • クエリ
select * from foo where bar in ( {{params}} )
  • 文字列のパラメータ
'foo', 'bar'

HTMLエスケープしない

以下のように波括弧3個 {{{ }}} でパラメータを受け付ければrawのパラメータが使える。

select * from foo where bar in ( {{{params}}} )

references: - https://github.com/getredash/redash/issues/1211