# JsonArray 스크립트 및 차트 함수

JsonArray는 JSON 데이터를 집계하고 결합합니다.

구문:

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

반환 데이터 유형: 이중

인수

| 인수 | 설명 |
| --- | --- |
| DISTINCT | 함수 인수 앞에 DISTINCT라는 단어가 있을 경우 해당 함수 인수의 평가 결과로 생성된 중복이 무시됩니다. |
| TOTAL | TOTAL이 함수 인수 앞에 오는 경우, 현재 선택을 고려하되 현재 차원 값에 관련되지 않은 가능한 모든 값에 대한 계산이 실행됩니다. 즉, 차트 차원은 무시됩니다. |
| value | 입력 필드입니다. 저장할 데이터가 포함된 표현식입니다. 해당하는 value 표현식 값을 결정할 sort\_weight의 첫 번째(가장 낮은) 값을 찾습니다. sort\_weight 앞에 빼기 기호가 있는 경우, 이 함수는 마지막(가장 높은) 정렬 값을 반환합니다. |
| sort\_weight | 입력 필드입니다. 저장할 데이터가 포함된 표현식입니다. 해당하는 value 표현식 값을 결정할 sort\_weight의 첫 번째(가장 낮은) 값을 찾습니다. 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",""] |