

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Highcharts ビジュアルの Amazon Quick JSON 式言語
<a name="highchart-expressions"></a>

Highcharts ビジュアルは、ほとんどの[有効な JSON 値](https://www.w3schools.com/js/js_json_datatypes.asp)、標準算術演算子、文字列演算子、および条件演算子を受け入れます。Highcharts ビジュアルでは、以下の JSON 値はサポートされていません。
+ 関数
+ 日付
+ 未定義の値

クイック作成者は、JSON 式言語を使用して、ハイチャートビジュアルの JSON スキーマを作成できます。JSON 式言語は、JSON を API またはデータセットにバインドして、動的なデータの集約と JSON 構造の変更を可能にするために使用されます。開発者は、JSON 式言語を使用して、簡潔で直感的な式で JSON データを拡張および変換することもできます。

JSON 式言語では、式は配列として表されます。最初の要素が操作を指定し、後続の要素が引数になります。たとえば、`["unique", [1, 2, 2]]` は `unique` 操作を配列 `[1, 2, 2]` に適用し、結果として `[1, 2]` を返します。この配列ベースの構文により、JSON データの複雑な変換を可能にする柔軟な式を記述できます。

JSON 式言語は、*ネストされた式*をサポートします。ネストされた式とは、引数として他の式を含む式です。たとえば、`["split", ["toUpper", "hello world"], " "]` は最初に文字列 `hello world` を大文字に変換してから単語の配列に分割し、結果は `["HELLO", "WORLD"]` になります。

Amazon Quick の Highcharts ビジュアルの JSON 式言語の詳細については、以下のセクションを参照してください。

**Topics**
+ [算術演算](jle-arithmetics.md)
+ [配列オペレーション](jle-arrays.md)
+ [Amazon Quick 式](jle-qs-expressions.md)

# 算術演算
<a name="jle-arithmetics"></a>

以下の表は、JSON 式言語で使用できる算術式を示しています。


| 運用 | 式 | Input | Output | 
| --- | --- | --- | --- | 
| 加算 | ["\$1", operand1, operand2] | \$1 sum: ["\$1", 2, 4] \$1 | \$1 sum: 6 \$1 | 
| 減算 | ["-", operand1, operand2] | \$1 difference: ["-", 10, 3] \$1 | \$1 difference: 7 \$1 | 
| 乗算 | ["\$1", operand1, operand2] | \$1 product: ["\$1", 5, 6] \$1 | \$1 product: 30 \$1 | 
| 除算 | ["/", operand1, operand2] | \$1 quotient: ["/", 20, 4] \$1 | \$1 quotient: 5 \$1 | 
| モジュロ | ["%", operand1, operand2] | \$1 remainder: ["%", 15, 4] \$1 | \$1 remainder: 3 \$1 | 
| べき算 | ["\$1\$1", base, exponent] | \$1 power: ["\$1\$1", 2, 3] \$1 | \$1 power: 8 \$1 | 
| 絶対値 | ["abs", operand] | \$1 absolute: ["abs", -5] \$1 | \$1 absolute: 5 \$1 | 
| [Square Root] (平方根) | ["sqrt", operand] | \$1 sqroot: ["sqrt", 16] \$1 | \$1 sqroot: 4 \$1 | 
| 対数 (底 10) | ["log10", operand] | \$1 log: ["log10", 100] \$1 | \$1 log: 2 \$1 | 
| 自然対数 | ["ln", operand] | \$1 ln: ["ln", Math.E] \$1 | \$1 ln: 1 \$1 | 
| 丸め | ["round", operand] | \$1 rounded: ["round", 3.7] \$1 | \$1 rounded: 4 \$1 | 
| 切り捨て | ["floor", operand] | \$1 floor: ["floor", 3.7] \$1 | \$1 floor: 3 \$1 | 
| 切り上げ | ["ceil", operand] | \$1 ceiling: ["ceil", 3.2] \$1 | \$1 ceiling: 4 \$1 | 
| サイン (正弦) | ["sin", operand] | \$1 sine: ["sin", 0] \$1 | \$1 sine: 0 \$1 | 
| コサイン | ["cos", operand] | \$1 cosine: ["cos", 0] \$1 | \$1 cosine: 1 \$1 | 
| タンジェント | ["tan", operand] | \$1 tangent: ["tan", Math.PI] \$1 | \$1 tangent: 0 \$1 | 

# 配列オペレーション
<a name="jle-arrays"></a>

JSON 式言語では、次の関数の汎用配列操作が可能です。
+ `map` – 配列の各要素にマッピング関数を適用し、変換された値を持つ新しい配列を返します。

  たとえば、`["map", [1, 2, 3], ["*", ["item"], 2]]` は配列 `[1, 2, 3]` の各要素に 2 を掛けてマッピングします。
+ `filter` – 特定の条件に基づいて配列をフィルタリングし、条件を満たす要素のみを含む新しい配列を返します。

  たとえば、`["filter", [1, 2, 3, 4, 5], ["==", ["%", ["item"], 2], 0]]` は配列 `[1, 2, 3, 4, 5]` をフィルタリングして、偶数のみを含めます。
+ `reduce` – 各要素にリデューサー関数を適用して結果を累積することで、配列を単一の値に縮約します。

  たとえば、`["reduce", [1, 2, 3, 4, 5], ["+", ["acc"], ["item"]], 0]` は配列 `[1, 2, 3, 4, 5]` をその要素の合計に縮約します。
+ `get` – キーまたはインデックスを指定して、オブジェクトまたは配列から値を取得します。

  たとえば、`["get", ["item"], "name"]` は現在の項目から `"name"` プロパティの値を取得します。
+ `unique` – 配列が与えられた場合、この配列内の一意の項目のみを返します。

  例えば、`["unique", [1, 2, 2]]` は `[1, 2]` を返します。

# Amazon Quick 式
<a name="jle-qs-expressions"></a>

Amazon Quick は、Highcharts ビジュアルの機能を強化するための追加の式を提供します。ハイチャートビジュアルの一般的なクイック式の詳細については、以下のセクションを参照してください。Amazon Quick の JSON 式言語の詳細については、[DemoCentral](https://democentral.learnquicksight.online/#) の[「Highcharts Visual QuickStart Guide](https://democentral.learnquicksight.online/#Dashboard-FeatureDemo-Highcharts-Visual)」を参照してください。

**Topics**
+ [`getColumn`](#highcharts-expressions-getcolumn)
+ [`formatValue`](#highcharts-expressions-formatvalue)

## `getColumn`
<a name="highcharts-expressions-getcolumn"></a>

`getColumn` 式を使用して、指定された列インデックスから値を返します。たとえば以下の表は、製品のリストをカテゴリと価格と並べて表示しています。


| 製品名 | Category | Price | 
| --- | --- | --- | 
|  製品 A  |  テクノロジー  |  100  | 
|  製品 B  |  リテール  |  50  | 
|  製品 C  |  リテール  |  75  | 

以下の `getColumn` クエリは、すべての製品名とその価格を示す配列を生成します。

```
{
	product name: ["getColumn", 0], 
	price: ["getColumn", 2]
}
```

以下の JSON が返されます。

```
{
	product name: ["Product A", "Product B", "Product C"],
	price: [100, 50, 75]
}
```

以下の例に示すように、複数の列を一度に渡して配列の配列を生成することもできます。

**Input** (入力)

```
{
	values: ["getColumn", 0, 2]
}
```

**出力**

```
{
	values: [["Product A", 100], ["Product B", 50], ["Product C", 75]]
}
```

`getColumn` と同様に、以下の式を使用して、フィールドウェルまたはテーマから列値を返すことができます。
+ `getColumnFromGroupBy` は、フィールドごとにグループから列を返します。2 番目の引数は、返す列のインデックスです。たとえば、`["getColumnFromGroupBy", 0]` は最初のフィールドの値を配列として返します。複数のインデックスを渡すことで、各要素が group by フィールドウェル内のフィールドに対応する配列の配列を取得できます。
+ `getColumnFromValue` は value フィールドウェルから列を返します。複数のインデックスを渡すことで、各要素が values フィールドウェル内のフィールドに対応する配列の配列を取得できます。
+ `getColorTheme` は、次の例に示すように、クイックテーマの現在のカラーパレットを返します。

  ```
  {
  "color": ["getColorTheme"]
  }
  ```

  ```
  {
  "color": ["getPaletteColor", "secondaryBackground"]
  }
  ```

**例**

![\[alt text not found\]](http://docs.aws.amazon.com/ja_jp/quick/latest/userguide/images/get-column-example.png)


`getColumn` は、テーブルから任意の列にアクセスできます。
+ `["getColumn", 0]` – 配列 `[1, 2, 3, 4, 5, ...]` を返します
+ `["getColumn", 1]` – 配列 `[1, 1, 1, 1, 1, ...]` を返します
+ `["getColumn", 2]` – 配列 `[1674, 7425, 4371, ...]` を返します

`getColumnFromGroupBy` は同様に機能しますが、そのインデックスは group by フィールドウェルの列に制限されます。
+ `["getColumnFromGroupBy", 0]` – 配列 `[1, 2, 3, 4, 5, ...]` を返します
+ `["getColumnFromGroupBy", 1]` – 配列 `[1, 1, 1, 1, 1, ...]` を返します
+ `["getColumnFromGroupBy", 2]` – group by フィールドウェルには 2 つの列しかないため、機能しません

`getColumnFromValue` は同様に機能しますが、そのインデックスは value フィールドウェルの列に制限されます。
+ `["getColumnFromValue", 0]` – 配列 `[1, 2, 3, 4, 5, ...]` を返します
+ `["getColumnFromValue", 1]` – value フィールドウェルには 1 つの列しかないため、機能しません
+ `["getColumnFromValue", 2]` – value フィールドウェルには 1 つの列しかないため、機能しません

## `formatValue`
<a name="highcharts-expressions-formatvalue"></a>

`formatValue` 式を使用して、クイックフォーマットを値に適用します。たとえば、次の式は、クイックフィールドウェルの最初のフィールドで指定された形式値を使用して x 軸ラベルをフォーマットします。

```
 "xAxis": {
		"categories": ["getColumn", 0],
		"labels": {
		"formatter": ["formatValue", "value", 0]
		}
	}
```