注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
ヘルパーは、Handlebars テンプレート内から呼び出せる定義済みの関数です。ヘルパーには名前、パラメーター、戻り値があります。たとえば、テンプレート {{add 5 var1}} は、整数(5)と var1 という変数を引数として add ヘルパーを呼び出します。var1 が7に設定されている場合、テンプレートの評価結果は12になります。
ヘルパーは、次のいずれかのカテゴリーに分類されます。
ヘルパーは、Functions エディターでは使用できません。
Handlebars ライブラリーの次のヘルパーが利用可能です。各ヘルパーの詳細については、Handlebars ドキュメント ↗を参照してください。
クエリとウィジェット内では、次のコアヘルパーを利用できます。
toString ヘルパーは、JavaScript String() ↗ 関数を使用して、指定された任意の値を文字列に変換します。
{{toString 'hello'}} は「hello」と表示されます。{{toString 1}} は「1」と表示されます。{ variable: ["hello", "world"] } の場合、{{toString variable}} は「hello,world」と表示されます。{ variable: [1, 2, 3] } の場合、{{toString variable}} は「1,2,3」と表示されます。{ variable: {"hello": "world"} } の場合、{{toString variable}} は「[Object Object]」と表示されます。toNumber ヘルパーは、JavaScript Number() ↗ 関数を使用して、指定された任意の値を数値に変換します。値を数値に変換できない場合は、NaN を返します。
{{toNumber 1}} は1と表示されます。{{toNumber '2'}} は2と表示されます。{{toNumber 'hello'}} は NaN と表示されます。{ variable: [1, 2, 3] } の場合、{{toNumber variable}} は NaN と表示されます。{ variable: {"hello": "world"} } の場合、{{toNumber variable}} は NaN と表示されます。concat ヘルパーは、任意の数の引数を受け取り、まず JavaScript の String() 関数で各引数を文字列に変換してから連結します。
{{concat 1 2}} は「12」と表示されます。{{concat 'hello' 'world' 2}} は「helloworld2」と表示されます。{ array1: ["hello", "world"], array2: ["again", "and again"] } の場合、{{concat array1 array2}} は「helloworldagainand again」と表示されます。{ variable: {"hello": "world"} } の場合、{{concat 1 2 3 variable}} は「123[Object Object]」と表示されます。substring ヘルパーは、入力文字列(value)、開始位置、および終了位置(任意)を受け取り、JavaScript の substring() 関数に渡します。これにより、入力文字列の部分文字列を取得できます。
{{substring 'foo' 0 1}} は「f」と表示されます。{{substring 'foo' 0 6}} は「foo」と表示されます。{{substring 'foo' 1}} は「oo」と表示されます。contains ヘルパーは、配列または文字列(value)と検索対象の値(searchValue)を受け取り、その値が配列に含まれる場合に true を返し、含まれない場合は false を返します。これは、value.indexOf(searchvalue) !== -1 を呼び出すことで行います。
{ variable: [1, 2, 3] } の場合、{{contains variable 3}} は true と表示されます。{ variable: "hello world" } の場合、{{contains variable "hello"}} は true と表示されます。jsonParse ヘルパーは、JSON 文字列を入力として受け取り、JavaScript の JSON.parse ↗ 関数を使用してパースします。
{{jsonParse '\"foo\"'}} は「foo」と表示されます。"[\"hello\",\"world\"]" の場合、{{jsonParse varA}} は ["hello", "world"] と表示されます。"{\"varA\":{\"hello\":\"world\",\"foo\":[\"bar\",\"baz\"]}}" の場合、{{jsonParse varA}} は { varA: {"hello": "world", "foo": ["bar", "baz"]} } と表示されます。{{jsonParse 123}} は、コンソールに「jsonParse: Error: value must be a string」というエラーをスローします。"[\"hello\"," の場合、{{jsonParse varA}} は、コンソールに「jsonParse: SyntaxError: Unable to parse JSON string」というエラーをスローします。jsonStringify ヘルパーは、任意のオブジェクトを入力として受け取り、そのオブジェクトを JSON に変換して返します(JavaScript の JSON.stringify ↗ 関数に渡します)。
{{jsonStringify 'foo'}} は "foo" と表示されます(表示されるテキストには二重引用符が含まれます)。{ varA: {"hello": "world", "foo": ["bar", "baz"]} } であれば、{{jsonStringify varA}} は {"hello":"world","foo":["bar","baz"]} と表示されます(この場合も、表示されるテキストには二重引用符が含まれます)。add ヘルパーは、2個の数値を加算します。
{{add 20 5}} は25と表示されます。{{add 10 'abc'}} は、コンソールに「value must be a number」というエラーをスローします。subtract ヘルパーは、1番目の数値から2番目の数値を減算します。
{{subtract 20 5}} は15と表示されます。{{subtract 10 'abc'}} は、コンソールに「value must be a number」というエラーをスローします。multiply ヘルパーは、2個の数値を乗算します。
{{multiply 20 5}} は100と表示されます。{{multiply 10 'abc'}} は、コンソールに「value must be a number」というエラーをスローします。divide ヘルパーは、1番目の数値を2番目の数値で除算します。
{{divide 20 5}} は4と表示されます。{{divide 10 'abc'}} は、コンソールに「value must be a number」というエラーをスローします。max ヘルパーは、指定された任意の数値または数値配列から最大値を求めます。
{ variable: [1, 2, 3] } の場合、{{max variable}} は3と表示されます。{ variable: [1, 2, 3] } の場合、{{max variable 12 15}} は15と表示されます。{{max 'hello' 123}} は、コンソールに「value must be a number or a number array」というエラーをスローします。{ variable: ["hello", "world"] } の場合、{{max variable}} は、コンソールに「value must be a number or a number array」というエラーをスローします。min ヘルパーは、指定された数値または数値の配列から最小値を求めます。
{ variable: [1, 2, 3] } の場合、{{min variable}} は 1 と表示されます{ variable: [1, 2, 3] } の場合、{{min variable 6 10}} は 1 と表示されます{{min 'hello' 123}} は、コンソールに「value must be a number or a number array」というエラーを出します{ variable: ["hello", "world"] } の場合、{{min variable }} は、コンソールに「value must be a number or a number array」というエラーを出しますeq ヘルパーは、2個の数値または文字列を比較し、等しいかどうかを確認します。
2個の数値で eq を使用する
{{eq 1 1}} は true と表示されます数値や文字列ではない値、またはデータ型が異なる値で eq を使用する
{{eq [1, 2] 5}} は、コンソールに「type mismatch」というエラーを出しますif ブロック内で eq を使用する
{{#if (eq name 'Steven')}}
Your name is Steven.
{{else}}
Your name is not Steven.
{{/if}}
コンテキストが { name: "Steven" } の場合、「Your name is Steven.」と表示されます
ne ヘルパーは、2個の数値または文字列を比較し、異なるかどうかを確認します。
{{ne 1 1}} は false と表示されます{{ne [1, 2] 5}} は、コンソールに「type mismatch」というエラーを出しますlt ヘルパーは、2個の数値または文字列を比較し、1番目の値が2番目の値より小さいかどうかを確認します。
{{lt 1 2}} は true と表示されます{{lt [1, 2] 5}} は、コンソールに「type mismatch」というエラーを出しますle ヘルパーは、2個の数値または文字列を比較し、1番目の値が2番目の値以下かどうかを確認します。
{{le 1 1}} は true と表示されます{{le [1, 2] 5}} は、コンソールに「type mismatch」というエラーを出しますgt ヘルパーは、2個の数値または文字列を比較し、1番目の値が2番目の値より大きいかどうかを確認します。
{{gt 2 1}} は true と表示されます{{gt [1, 2] 5}} は、コンソールに「type mismatch」というエラーを出しますge ヘルパーは、2個の数値または文字列を比較し、1番目の値が2番目の値以上かどうかを確認します。
{{ge 1 1}} は true と表示されます{{ge [1, 2] 5}} は、コンソールに「type mismatch」というエラーを出しますencodeURI ヘルパーは、JavaScript encodeURI() ↗ 関数で指定された文字列をエンコードします。
{{encodeURI 'hello world?'}} は「hello%20world?」と表示されます{ variable: [1, 2, 3] } の場合、{{encodeURI variable}} は、コンソールに「value must be a string」というエラーを出しますencodeURIComponent ヘルパーは、JavaScript encodeURIComponent() ↗ 関数で指定された文字列をエンコードします。
{{encodeURIComponent 'hello world?'}} は「hello%20world%3F」と表示されます{ variable: [1, 2, 3] } の場合、{{encodeURIComponent variable}} は、コンソールに「value must be a string」というエラーを出しますgetSelectedDisplayValue ヘルパーは、指定された values と selectedValue を使って、displayValues から selectedDisplayValue を取得します。
{ values: [1, 2, 3], displayValues: ["a", "b", "c"], selectedValue: 2 } の場合、{{getSelectedDisplayValue values displayValues selectedValue}} は ["b"] を返します{ values: "hello", displayValues: ["a", "b", "c"], selectedValue: 2 } の場合、{{getSelectedDisplayValue values displayValues selectedValue}} は、コンソールに「values must be an array」というエラーを出します{ values: [1,2,3], displayValues: ["a", "b", "c"], selectedValue: 4 } の場合、{{getSelectedDisplayValue values displayValues selectedValue}} は、コンソールに「selectedValue '4' is not in values」というエラーを出しますgetSelectedDisplayValues ヘルパーは、指定された values と selectedValues を使って、displayValues から selectedDisplayValues を取得します。
{ values: [1, 2, 3], displayValues: ["a", "b", "c"], selectedValues: [2, 3] } の場合、{{getSelectedDisplayValues values displayValues selectedValues}} は ["b", "c"] を返します{ values: "hello", displayValues: ["a", "b", "c"], selectedValues: 2 } の場合、{{getSelectedDisplayValues values displayValues selectedValues}} は、コンソールに「values must be an array」というエラーを出します{ values: [1,2,3], displayValues: ["a", "b", "c"], selectedValues: [4] } の場合、{{getSelectedDisplayValues values displayValues selectedValues}} は、コンソールに「selectedValue '4' is not in values」というエラーを出しますlookup ヘルパーは、組み込みの Handlebars lookup ↗ の派生版を使用しており、Handlebars のドキュメントに記載された方法で使用できます。さらに、Slate の lookup 派生版では、以下の例のように、プロパティの長い連鎖を記述できます。
{ a: { b: { c: "test" } } } の場合、{{lookup a "b" "c"}} は「test」を返しますand ヘルパーは、指定されたブール値の引数に対して AND (&&) 論理比較を行います。少なくとも2個の引数が必要です。
{ var1: "true", var2: "false" } の場合、{{and var1 var2}} は「false」と表示されますor ヘルパーは、指定されたブール値の引数に対して OR (||) 論理比較を行います。少なくとも2個の引数が必要です。
{ var1: "true", var2: "false" } の場合、{{or var1 var2}} は「true」と表示されますnot ヘルパーは、指定されたブール値の引数に対して NOT (!) 論理比較を行います。1個の引数にのみ適用できます。
{ var : "true" } の場合、{{not var}} は「false」と表示されますウィジェット内では、次のウィジェットヘルパーを利用できます。
formatNumber ヘルパーは、Numeral.js ↗ ライブラリを使用して、指定された数値を文字列に整形します。値は数値、書式は文字列である必要があります。
{{formatNumber 1400 '0,0'}} は「1,400」と表示されます。
{{formatNumber 'abc' '0,0'}} は、コンソールに「value must be a number」というエラーを出力します。{ variable: ["hello": "world"] } の場合、{{formatNumber 1400 variable}} は、コンソールに「format must be a string」というエラーを出力します。formatDate ヘルパーは、Moment.js ↗ ライブラリを使用して、指定された日付を文字列に整形します。値は日付、書式は文字列である必要があります。
{{formatDate '2014-1-2' 'MM/DD/YYYY'}} は「01/02/2014」と表示されます。
{{formatDate 1237705200000 'YYYY-MM-DD'}} は「2009-03-22」と表示されます。
{{formatDate 'some string' 'YYYY-MM-DD'}} は、コンソールに「value must be a valid date」というエラーを出力します。{ variable: ["hello": "world"] } の場合、{{formatDate '2014-1-2' variable}} は、コンソールに「format must be a string」というエラーを出力します。HttpJson Foundry クエリ内では、次のヘルパーを利用できます。
joinParams ヘルパーは、パラメーターの配列を受け取り、単一引用符で囲まれたパラメーターを , で結合します。
"SELECT * FROM `table1` WHERE name IN ({{joinParams names}})"
コンテキストが { names: ["Bill", "John J.", "Sam's", "Jay"] } の場合、
次のように表示されます。
"SELECT * FROM `table1` WHERE name IN ('Bill', 'John J.', 'Sam\'s', 'Jay')"
"SELECT * FROM table1 WHERE name IN ({{joinParams name}});"
コンテキストが { name: "Bill" } の場合、
「parameters must be an array in joinParams helper」というエラーを出力します。SQL クエリ内では、次の SQL ヘルパーが利用可能です。HttpJson Foundry クエリは Spark SQL 構文を使用しますが、これらのヘルパーをそのクエリで使用しないでください。
alias ヘルパーは、列またはテーブルのエイリアス名を受け取ります。column ヘルパーと table ヘルパーは、情報スキーマに照らして値をチェックします。ただし、一時的な列名やテーブル名はスキーマに含まれていません。alias ヘルパーを使用すると、一時的な列名やテーブル名を登録できます。名前が固定値でない場合は、エラーをスローします。
alias を使用して列のエイリアス名を登録する
"SELECT id as {{alias 'alias_column_name'}} FROM table1 ORDER BY {{column aliasColumnName}};"
コンテキストが { aliasColumnName: "alias_column_name" } の場合、次のように展開されます。
"SELECT id as alias_column_name FROM table1 ORDER BY alias_column_name;"
alias を使用して、大文字と小文字を区別する列のエイリアス名を登録する
"SELECT id as "{{alias 'Alias Column Name'}}" FROM table1 ORDER BY "{{column aliasColumnName}}";"
コンテキストが { aliasColumnName: "Alias Column Name" } の場合、次のように展開されます。
"SELECT id as "Alias Column Name" FROM table1 ORDER BY "Alias Column Name";"
alias を使用してテーブルのエイリアス名を登録する
"SELECT id as "{{alias 'Alias Column Name'}}" FROM table1 ORDER BY "{{column aliasColumnName}}";"
コンテキストが { aliasColumnName: "Alias Column Name" } の場合、次のように展開されます。
"SELECT id as "Alias Column Name" FROM table1 ORDER BY "Alias Column Name";"
固定値でない値で alias を使用する。
"SELECT id as {{alias aliasColumnName}} FROM table1 ORDER BY {{table aliasColumnName}};"
コンテキストが { aliasColumnName: "alias_column_name" } の場合、「固定パラメーターのみが許可されません...」というエラーがスローされます。
schema ヘルパーは、スキーマ名と、許可リストに含まれる名前のリストを受け取ります。スキーマ名が許可リストに含まれていることを確認し、データソースの情報テーブルに照らしてスキーマ名をチェックします。スキーマ名が許可リストまたは情報テーブルに存在しない場合は、エラーをスローします。
"SELECT * FROM {{schema schemaName 'schema1' 'schema2'}}.table1;"
コンテキストが { schemaName: "schema1" } の場合、次のように展開されます。
"SELECT * FROM schema1.table1;"
"SELECT * FROM {{schema schemaName 'schema1' 'schema2'}}.table1;"
コンテキストが { schemaName: "schemaNameNotInList" } の場合、次のように展開されます。
"SELECT FROM schemaNameNotInList.table1"
また、実行時に「スキーマ名は許可リストに含まれている必要があります。」というエラーがスローされます。"SELECT * FROM {{schema schemaName 'schema1' 'schema2' templatizedName}}.table1;"
コンテキストが { schemaName: "schema1", templatizedName: "anotherSchemaName" } の場合、次のように展開されます。
"SELECT * FROM schema1.table1;"
また、実行時に「セキュリティ上の理由により、参照 ['templatizedName'] は動的にできません。」というエラーがスローされます。"SELECT * FROM {{schema schemaName 'invalidSchema1'}}.table1;"
コンテキストが { schemaName: "invalidSchema1" } の場合、次のように展開されます。
"SELECT * FROM invalidSchema1.table1;"
また、実行時に「無効なスキーマ名 'invalidSchema1'。」というエラーがスローされます。table ヘルパーは、テーブル名と、許可リストに含まれる名前のリストを受け取ります。テーブル名が許可リストに含まれていることを確認し、データソースの情報テーブルに照らしてテーブル名をチェックします。テーブル名が許可リストまたは情報テーブルに存在しない場合は、エラーをスローします。
"SELECT * FROM {{table tableName 'table1' 'table2'}};"
コンテキストが { tableName: "table1" } の場合、次のように展開されます。
"SELECT * FROM table1;"
"SELECT * FROM {{table tableName 'table1' 'table2'}};"
コンテキストが { tableName: "tableNameNotInList" } の場合、次のように展開されます。
"SELECT * FROM tableNameNotInList;"
また、実行時に「テーブル名は許可リストに含まれている必要があります。」というエラーがスローされます。"SELECT * FROM {{table tableName 'table1' 'table2' templatizedName}};"
コンテキストが { tableName: "table1", templatizedName: "anotherTableName" } の場合、次のように展開されます。
"SELECT * FROM table1;"
また、実行時に「セキュリティ上の理由により、参照 ['templatizedName'] は動的にできません。」というエラーがスローされます。"SELECT * FROM {{table tableName 'invalidTable1'}};"
コンテキストが { tableName: "invalidTable1" } の場合、次のように展開されます。
"SELECT * FROM invalidTable1;"
また、実行時に「無効なテーブル名 'invalidTable1'。」というエラーがスローされます。column ヘルパーは、列名または列名のリストを受け取り、データソースの情報テーブルに照らしてチェックします。列名が情報テーブルに存在しない場合は、エラーをスローします。
"SELECT {{column columnName}} FROM table1;"
コンテキストが { columnName: "column1" } の場合、次のように展開されます。
"SELECT column1 FROM table1;"
"SELECT "{{column columnName}}" FROM table1;"
コンテキストが { columnName: "Column 1" } の場合、「SELECT "Column 1" FROM table1;」に展開されます。"SELECT {{column columnNames}} FROM table1;"
コンテキストが { columnNames: ["column1", "column2"] } の場合、次のように展開されます。
"SELECT column1, column2 FROM table1;"
"SELECT {{column columnName}} FROM table1;"
コンテキストが { columnName: "invalidColumn1" } の場合、次のように展開されます。
"SELECT invalidColumn1 FROM table1;"
また、「無効な列名 'invalidColumn1'。」というエラーがスローされます。param ヘルパーは、パラメーターまたはパラメーターのリストを受け取ります。通常モードでは、パラメーターをリストに格納し、疑問符を返します。プレビューモードでは、パラメーターを返します。注:プレビューモードは、展開されたクエリのプレビューとデバッグに使用します。
"SELECT * FROM table1 WHERE id = {{param parameter1}};"
コンテキストが { parameter1: 1234 } の場合、次のように展開されます。
"SELECT * FROM table1 WHERE id = ?;"
パラメーターのリストは [1234] になります。"SELECT * FROM table1 WHERE text IN ({{param parameter1}});"
コンテキストが { parameter1: ["some", "text"] } の場合、次のように展開されます。
"SELECT * FROM table1 WHERE text IN (?, ?);"
パラメーターのリストは ["some", "text"] になります。"SELECT * FROM table1 WHERE text = {{param (toString parameter1)}};"
コンテキストが { parameter1: 1234 } の場合、次のように展開されます。
"SELECT * FROM table1 WHERE text = ?;"
パラメーターのリストは ["1234"] になります。"SELECT * FROM table1 WHERE text = {{param (toNumber parameter1)}};"
コンテキストが { parameter1: "1234" } の場合、次のように展開されます。
"SELECT * FROM table1 WHERE text = ?;"
パラメーターのリストは [1234] になります。"SELECT * FROM table1 WHERE text LIKE {{param (concat '%' parameter1 '%')}};"
コンテキストが { parameter1: "some text" } の場合、次のように展開されます。
"SELECT * FROM table1 WHERE text = ?;" with the list of parameters `["%some text%"]`
"SELECT * FROM table1 WHERE id = {{param parameter1}};"
コンテキストが { parameter1: 1234 } の場合、次のように展開されます。
"SELECT * FROM table1 WHERE id = 1234;"
"SELECT * FROM table1 WHERE text IN ({{param parameter1}});"
コンテキストが { parameter1: ["some", "text"] } の場合、次のように展開されます。
"SELECT * FROM table1 WHERE text IN ('some', 'text');"
"SELECT * FROM table1 WHERE id = {{param parameter1}};"
コンテキストが { } の場合、「エラー:param ヘルパーでは、パラメーター値を null にできません」というエラーがスローされます。"SELECT * FROM table1 WHERE text IN ({{param parameter1}});"
コンテキストが { parameter: ["some", null] } の場合、「エラー:param ヘルパーでは、パラメーター配列に null 値を含めることはできません」というエラーがスローされます。