# JsonArray - 指令碼與圖表函數

JsonArray 彙總並串連 JSON 資料。

語法：

JsonArray([DISTINCT][TOTAL] value [, sort\_weight])

傳回的資料類型： 雙值

引數

| 引數 | 描述 |
| --- | --- |
| DISTINCT | 如果 DISTINCT 這個字出現在函數引數之前，會忽略評估函數引數所產生的重複項目。 |
| TOTAL | 如果單字 TOTAL 位於函數引數之前，則會在提供現行選項的所有可能值上進行計算，而不僅僅是關於目前維度值的那些選項，也就是說，它會忽略圖表維度。 |
| value | 輸入欄位。 包含待排序之資料的運算式。會找到 sort\_weight 的第一個 (最低) 值，從中判定 value 運算式的對應值。如果您在 sort\_weight 前面放置一個負號，則該函數會改為傳回最後一個 (最高) 的已排序值。 |
| sort\_weight | 輸入欄位。 包含待排序之資料的運算式。會找到 sort\_weight 的第一個 (最低) 值，從中判定 value 運算式的對應值。如果您在 sort\_weight 前面放置一個負號，則該函數會改為傳回最後一個 (最高) 的已排序值。 |

範例：

以下載入指令碼使用 JsonArray 載入和彙總資料。

```
Data:
LOAD Id,
	JsonArray(ValueOrNull) AS Json,
	JsonArray(DISTINCT ValueOrNull) AS JsonDistinct,
	JsonArray(ValueOrNull, Order) AS JsonSorted
GROUP BY Id;

LOAD *, If(Value='-',Null(),Value) AS ValueOrNull;

LOAD * INLINE '
	Id | Value          | Order
	1  | 123            | 1
	2  | "json text"    | 2
	2  | normal text    | 1
	3  | [1,2,3]        | 3
	3  | {"name":"abc"} | 2
	3  | [1,2,3]        | 1
	4  | 1              | 1
	4  | 2 and text     | 2
	4  |                | 3
	4  | -              | 4
	' (delimiter is '|');
```

這會產生以下資料表格：

結果

| ID | JSON | JsonDistinct | JsonSorted |
| --- | --- | --- | --- |
| 1 | [123] | [123] | [123] |
| 2 | ["json text","normal text"] | ["json text","normal text"] | ["normal text","json text"] |
| 3 | [[1,2,3],[1,2,3],{"name":"abc"}] | [[1,2,3],{"name":"abc"}] | [[1,2,3],{"name":"abc"},[1,2,3]] |
| 4 | [1,"2 and text",""] | [1,"2 and text",""] | [1,"2 and text",""] |