EXPLAIN_JSON

EXPLAIN_JSON (EXPLAIN 계획 변환)

이 함수는 EXPLAIN 계획을 JSON에서 테이블로 변환해요. 출력은 EXPLAIN USING TABULAR <statement> 명령의 출력과 동일해요.

출처: Snowflake SQL Reference - EXPLAIN_JSON

본문

구문

EXPLAIN_JSON( <explain_output_in_json_format> )

인자

explain_output_in_json_format

EXPLAIN 출력을 JSON 호환 문자열로 담은 문자열, 또는 문자열로 평가되는 표현식이에요. 일반적으로 이 입력은 SYSTEM$EXPLAIN_PLAN_JSON 함수의 출력이에요. 리터럴 문자열을 사용하는 경우 작은따옴표 문자 '로 묶어야 해요.

반환 값

이 함수는 EXPLAIN 출력을 순서가 있는 행 집합으로 담은 테이블을 반환해요.

이 함수의 출력은 EXPLAIN USING TABULAR <sql_statement>의 출력과 동일해요.

사용 참고 사항

  • 입력은 상수 표현식이어야 해요. 예를 들어 컬럼에 대해 이 함수를 호출할 수 없어요.
  • 문자열 리터럴을 입력으로 전달하면 문자열 주위의 구분자는 작은따옴표 ' 또는 큰달러 기호 $$가 될 수 있어요. 문자열 리터럴이 작은따옴표를 포함하면(그리고 큰달러 기호를 포함하지 않으면), 문자열을 큰달러 기호로 구분하면 문자열 안의 작은따옴표 문자를 이스케이프할 필요가 없어요.
  • 출력 테이블은 RESULT_SCAN 함수로 처리할 수 있어요.
  • 이 함수는 EXPLAIN 정보를 JSON에서 표 형식으로 변환해요. 종종 JSON 값은 SYSTEM$EXPLAIN_PLAN_JSON 함수에서 직접 또는 간접적으로 생성돼요. 예를 들어 SYSTEM$EXPLAIN_PLAN_JSON의 출력을 테이블에 저장한 뒤, 나중에 이 EXPLAIN_JSON 함수를 사용해 표시할 수 있어요.
  • 출력이 표 형식이므로 이 함수는 테이블 함수로 분류돼요.

예시

다음 예시는 이 함수를 사용하는 방법을 보여줘요:

SELECT * FROM TABLE( EXPLAIN_JSON( SYSTEM$EXPLAIN_PLAN_JSON( 'SELECT Z1.ID, Z2.ID FROM Z1, Z2 WHERE Z2.ID = Z1.ID') ) );
+------+------+-----------------+-------------+------------------------------+-------+--------------------------+-----------------+--------------------+---------------+
| step | id   | parentOperators | operation   | objects                      | alias | expressions              | partitionsTotal | partitionsAssigned | bytesAssigned |
|------+------+-----------------+-------------+------------------------------+-------+--------------------------+-----------------+--------------------+---------------|
| NULL | NULL | NULL            | GlobalStats | NULL                         | NULL  | NULL                     | 2               | 2                  | 1024          |
|    1 |    0 | NULL            | Result      | NULL                         | NULL  | Z1.ID, Z2.ID             | NULL            | NULL               | NULL          |
|    1 |    1 | [0]             | InnerJoin   | NULL                         | NULL  | joinKey: (Z2.ID = Z1.ID) | NULL            | NULL               | NULL          |
|    1 |    2 | [1]             | TableScan   | TESTDB.TEMPORARY_DOC_TEST.Z2 | NULL  | ID                       | 1               | 1                  | 512           |
|    1 |    3 | [1]             | JoinFilter  | NULL                         | NULL  | joinKey: (Z2.ID = Z1.ID) | NULL            | NULL               | NULL          |
|    1 |    4 | [3]             | TableScan   | TESTDB.TEMPORARY_DOC_TEST.Z1 | NULL  | ID                       | 1               | 1                  | 512           |
+------+------+-----------------+-------------+------------------------------+-------+--------------------------+-----------------+--------------------+---------------+

더 알아보기