注: 以下の翻訳の正確性は検証されていません。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 ヘルパーは、任意のオブジェクトを入力として受け取り、JavaScript の JSON.stringify ↗ 関数に渡して JSON に変換したオブジェクトを返します。
{{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 値を含めることはできません」というエラーがスローされます。