SYSTEM$SHOW_DYNAMIC_TABLES_CREATED_FOR_RESHARING

SYSTEM$SHOW_DYNAMIC_TABLES_CREATED_FOR_RESHARING

리스팅(listing)의 소비자가 리스팅 데이터를 다른 지역으로 재공유(reshare)할 때, Snowflake는 대상 지역에서 리스팅 자동 이행(auto-fulfillment)을 활성화하기 위해 숨겨진 다이내믹 테이블(dynamic table)을 만들어요. 이 시스템 함수는 교차 지역 재공유를 위해 가져온 데이터를 구체화(materialize)하기 위해 아웃고잉 뷰(outgoing view) 아래에 Snowflake가 만드는 숨겨진 다이내믹 테이블에 대한 정보를 반환해요.

이 함수를 사용해 다음과 같은 작업을 해요:

  • 주어진 아웃고잉 뷰에 대해 어떤 가져온 객체가 지원 다이내믹 테이블을 가지는지 식별해요.
  • 해당 다이내믹 테이블의 가장 최근 새로고침(refresh) 시각을 검사해요 (디버깅 또는 비용/건강 분석용).

출처: Snowflake SQL Reference

본문

참고:

Syntax

SYSTEM$SHOW_DYNAMIC_TABLES_CREATED_FOR_RESHARING( '<view_name>' )

Arguments

'view_name':

재공유를 위해 가져온 데이터가 숨겨진 다이내믹 테이블로 자동 구체화되는 리스팅 또는 공유에 연결된 아웃고잉 뷰의 이름이에요.

정규화된 뷰 이름을 전달할 수 있어요, 예:

SYSTEM$SHOW_DYNAMIC_TABLES_CREATED_FOR_RESHARING( 'RESHARER_DB.PUBLIC.SHARED_VIEW' );

Returns

객체의 배열을 포함하는 JSON 문자열을 반환해요. 각 객체는 지정된 뷰 아래에 재공유용으로 생성된 숨겨진 다이내믹 테이블을 나타내요:

| Field | Type | Description | | dtName | STRING | 아웃고잉 뷰 아래에 중첩된 숨겨진 다이내믹 테이블의 정규화된 이름이에요 (예: __IMPORTED_DB.SCHEMA.TABLE_DT_FOR_RESHARING). | | dtSourceObject | STRING | 재공유를 위해 이 다이내믹 테이블로 구체화되고 있는 가져온 객체의 정규화된 이름이에요 (예: IMPORTED_DB.SCHEMA.TABLE). 이는 뷰 정의에서 참조되는 원래 가져온 엔티티에 해당해요. | | dtRefreshStartTimeMillis | NUMBER | 이 다이내믹 테이블의 가장 최근 새로고침이 시작된 epoch 밀리초 타임스탬프예요. 새로고침이 발생하지 않았으면 null이에요. TO_TIMESTAMP_LTZ(value:dtRefreshStartTimeMillis::number, 3)로 변환해요. | | dtRefreshEndTimeMillis | NUMBER | 이 다이내믹 테이블의 가장 최근 새로고침이 완료된 epoch 밀리초 타임스탬프예요. 새로고침이 발생하지 않았으면 null이에요. TO_TIMESTAMP_LTZ(value:dtRefreshEndTimeMillis::number, 3)로 변환해요. | | status | STRING | 가장 최근 새로고침의 상태예요. 새로고침이 발생하지 않았으면 null이에요. 가능한 값: SCHEDULED, EXECUTING, SUCCEEDED, FAILED, CANCELLED, UPSTREAM_FAILED. 각 상태에 대한 설명은 DYNAMIC_TABLE_REFRESH_HISTORY 출력을 참고하세요. |

Usage notes

  • 다음 시나리오에서는 다이내믹 테이블이 생성되지 않고 함수가 행을 반환하지 않아요:
    • 뷰가 가져온 데이터베이스를 참조하지 않는 경우.
    • 뷰가 재공유 자격이 없는 가져온 데이터를 사용하는 경우.
    • 뷰가 아직 리스팅 자동 이행에 의해 처리되지 않은 경우.
  • 이 함수는 관측성(observability)과 디버깅을 위한 것이에요.

Examples

다음 예제는 재공유된 뷰에 대해 생성된 다이내믹 테이블을 검색해요:

SELECT * FROM TABLE(FLATTEN(input =>
  PARSE_JSON(
    SYSTEM$SHOW_DYNAMIC_TABLES_CREATED_FOR_RESHARING(
      'RESHARER_DB.PUBLIC.SHARED_VIEW'
    )
  )
));

적절한 타임스탬프가 있는 읽기 가능한 테이블을 얻으려면:

SELECT
  value:dtName::STRING AS dt_name,
  value:dtSourceObject::STRING AS dt_source_object,
  TO_TIMESTAMP_LTZ(value:dtRefreshStartTimeMillis::NUMBER, 3) AS dt_refresh_start_time,
  TO_TIMESTAMP_LTZ(value:dtRefreshEndTimeMillis::NUMBER, 3) AS dt_refresh_end_time,
  value:status::STRING AS status
FROM TABLE(FLATTEN(input =>
  PARSE_JSON(
    SYSTEM$SHOW_DYNAMIC_TABLES_CREATED_FOR_RESHARING(
      'RESHARER_DB.PUBLIC.SHARED_VIEW'
    )
  )
));

샘플 출력:

+----------------------------------------------------------+----------------------------+-------------------------------+-------------------------------+-------------------+
| DT_NAME                                                  | DT_SOURCE_OBJECT           | DT_REFRESH_START_TIME         | DT_REFRESH_END_TIME           | STATUS            |
+----------------------------------------------------------+----------------------------+-------------------------------+-------------------------------+-------------------+
| _12345_IMPORTED_DB.PUBLIC.TABLE_A_DT_FOR_RESHARING       | IMPORTED_DB.PUBLIC.TABLE_A | 2026-03-19 10:00:00.000 -0700 | 2026-03-19 10:00:05.000 -0700 | SUCCEEDED |
| _12345_IMPORTED_DB.PUBLIC.VIEW_B_DT_FOR_RESHARING        | IMPORTED_DB.PUBLIC.VIEW_B  | 2026-03-19 10:00:01.000 -0700 | 2026-03-19 10:00:04.000 -0700 | SUCCEEDED |
+----------------------------------------------------------+----------------------------+-------------------------------+-------------------------------+-------------------+

더 알아보기 (Learn more)