동적 테이블 문제 해결하기

이 항목에서는 예상대로 실행되지 않는 동적 테이블의 문제 해결 방법에 대해 설명합니다.

동적 테이블 사용에 대한 제한이나 필요한 권한이 없는 경우 일부 작업이 제한될 수 있습니다. 자세한 내용은 동적 테이블의 알려진 제한 사항동적 테이블 액세스 제어 섹션을 참조하십시오.

동적 테이블 비용에 대한 내용은 동적 테이블의 비용 이해하기 섹션을 참조하십시오.

여기에 나열되지 않은 문제가 발생하면 Snowflake 지원 에 문의하십시오.

동적 테이블 새로 고침 문제 해결

문제

해결책

내 동적 테이블은 증분 새로 고침이 아닌 전체 새로 고침을 사용하고 있습니다.

동적 테이블의 실제 새로 고침 모드 는 생성 시점에 결정되며 이후에는 변경할 수 없습니다. 명시적으로 지정하지 않으면 새로 고침 모드는 쿼리 복잡성, 지원되지 않는 구조체, 연산자 또는 함수 등 다양한 요소에 따라 새로 고침 모드를 선택하는 AUTO 가 기본값으로 설정됩니다.

Snowflake 릴리스 전반에서 일관적인 동작을 위해 모든 동적 테이블에서 새로 고침 모드를 명시적으로 설정하십시오. 예를 들어, 동적 테이블을 증분 방식으로만 새로 고치려면 증분 새로 고침을 사용하는 데 제한 이 있을 수 있다는 점을 염두에 두고 테이블을 만들 때 새로 고침 모드를 명시적으로 INCREMENTAL 로 설정해야 합니다. 자세한 내용은 모든 프로덕션 동적 테이블에 대한 새로 고침 모드 설정 섹션을 참조하십시오.

필요한 권한 이 있는 역할을 사용하여 다음 방법 중 하나를 사용하여 새로 고침 모드를 확인할 수 있습니다.

  • SQL 사용: SHOW DYNAMIC TABLES 문을 실행합니다. 출력에서 text 열에는 사용자가 지정한 새로 고침 모드가 표시되고, refresh_mode 열에는 실제 새로 고침 모드가 표시되며, refresh_mode_reason 에는 실제 새로 고침 모드가 선택된 이유가 표시됩니다.

  • Snowsight 사용: 탐색 메뉴에서 Monitoring » Dynamic Tables 를 선택한 다음 동적 테이블을 선택합니다. Table Details 탭에서 동적 테이블의 새로 고침 모드를 볼 수 있습니다.

동적 테이블의 증분 새로 고침이 느립니다.

동적 테이블의 새로 고침 성능은 처리하는 워크로드 또는 데이터에 대한 특정 가정에 따라 달라집니다.

Refresh History 를 사용하여 분산 또는 이상값을 확인합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색에서 Monitoring » Dynamic Tables 로 이동합니다.

  3. 동적 테이블을 선택하고 Refresh History 탭으로 이동합니다.

  4. 지난 24시간 동안 동적 테이블의 새로 고침 기간을 활용하여 문제를 해결합니다.

동적 테이블에서 비어 있는 새로 고침이 실행 중이지만 비용이 발생합니다.

순 새 행이 0개(즉, 추가, 업데이트 또는 삭제된 행이 0개)인 새로 고침은 동적 테이블에서 참조하는 업스트림 오브젝트의 변경 사항과 관련이 있을 때 웨어하우스 리소스를 소모합니다.

예를 들어, 연결된 가상 웨어하우스가 일시 중단되고 기본 오브젝트에 대한 변경 사항이 식별되지 않으면 일시 중단된 가상 웨어하우스는 재개되지 않고 크레딧이 소모되지 않습니다. 이를 NO_DATA 새로 고침이라고 합니다. 반대로, 변경 사항이 식별되면 가상 웨어하우스가 자동으로 재개되어 업데이트를 처리하므로 동적 테이블에 적용된 행이 0개일지라도 웨어하우스 리소스가 소모됩니다.

비용이 표시되어 있지만 동적 테이블을 변경하지 않은 경우 원본 테이블이 변경되었기 때문일 수 있습니다. Snowsight 의 Refresh History 탭을 사용하여 가상 웨어하우스 크레딧이 소비되었는지 확인할 수 있습니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Monitoring » Dynamic Tables 를 선택합니다.

  3. 동적 테이블을 선택하고 Refresh History 탭으로 이동합니다.

  4. 웨어하우스를 사용하여 업데이트한 새로 고침을 보려면 Warehouse used only 확인란을 선택합니다.

자세한 내용은 동적 테이블의 비용 이해하기 섹션을 참조하십시오.

동적 테이블이 새로 고침을 건너뛰었습니다.

동적 테이블은 일정에 따라 새로 고쳐집니다. 예약된 새로 고침이 시작될 때 다음과 같은 상황으로 인해 새로 고침이 건너뛸 수 있습니다.

  • 새로 고침 중인 동적 테이블에 업스트림에 다른 동적 테이블이 있고 업스트림에 대한 새로 고침이 실패했거나 건너뛴 경우.

  • 이전에 동적 테이블에 대한 새로 고침이 계속 실행 중인 경우.

  • 동적 테이블의 새로 고침이 목표 지연보다 오래 걸리는 경우 Snowflake는 향후 건너뛰는 비율을 줄이기 위해 새로 고침을 건너뛸 수 있습니다.

수동 새로 고침은 건너뛰지 않지만, 특히 동적 테이블에서 수동 새로 고침을 자주 수행하는 경우 다른 새로 고침이 건너뛰는 원인이 될 수 있습니다. 그렇게 하면 다운스트림 동적 테이블이 새로 고쳐지지 않을 수 있습니다. 이러한 이유로 Snowflake에서는 목표 지연에 따라 새로 고침이 필요한 다운스트림 동적 테이블이 있는 동적 테이블에서 수동 새로 고침을 자주 수행하는 것을 권장하지 않습니다.

동적 테이블의 새로 고침이 실패했습니다.

일반 Snowflake 쿼리와 마찬가지로 동적 테이블 새로 고침은 동적 테이블의 쿼리 정의, 입력 데이터(예: 구문 분석 오류) 또는 내부 시스템 문제로 인해 실패할 수 있습니다.

새로 고침이 실패한 이유를 확인하려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Monitoring » Dynamic Tables 를 선택합니다.

  3. 동적 테이블을 선택하고 Table Details 탭으로 이동합니다.

  4. Details 아래의 Last Completed Refresh 를 마우스로 가리킵니다. 새로 고침 실패에 대한 오류 코드와 메시지를 자세히 설명하는 대화 상자가 나타납니다.

upstream_failed 오류 코드로 인해 새로 고침이 실패한 경우 업스트림 동적 테이블 중 하나에 문제가 있기 때문일 수 있습니다. 어느 업스트림 테이블이 실패의 원인인지 확인하려면:

  1. Snowsight 탐색 메뉴에서 Monitoring » Dynamic Tables 를 선택한 다음 동적 테이블을 선택합니다.

  2. Graph 페이지를 열어 동적 테이블의 그래프 기록을 확인합니다.

  3. 그래프에서 빨간색으로 표시된 업스트림 동적 테이블을 선택하고 해당 Refresh History 를 확인합니다.

동적 테이블이 다시 초기화되고 있습니다.

다음 중 하나의 이유로 인해 동적 테이블이 다시 초기화될 수 있습니다.

  • 동적 테이블의 입력 중 하나 이상이 바뀝니다. 예를 들어, 동적 테이블이 뷰에 정의되어 있고 뷰를 바꾸는 경우 동적 테이블을 다시 초기화해야 합니다.

  • 입력 스키마가 변경되어 동적 테이블이 변경된 열을 활용하는 경우.

  • 데이터 액세스 정책 이 동적 테이블의 입력에 추가, 제거 또는 변경됩니다.

  • 복제된 증분 동적 테이블 은 생성된 후 처음 새로 고침이 이루어질 때 다시 초기화해야 할 수도 있습니다.

  • 증분 새로 고침을 사용하는 복제된 동적 테이블 은 장애 조치 후 테이블의 증분 새로 고침을 재개하기 전에 다시 초기화됩니다.

초기화에 대한 일반적인 내용은 동적 테이블 초기화 이해하기 섹션을 참조하십시오.

동적 테이블 생성 문제 해결

문제

해결책

동적 테이블을 만드는 데 시간이 오래 걸립니다.

CREATE DYNAMIC TABLE 문을 사용하여 동적 테이블을 생성하면 초기 새로 고침이 예약된 시간(ON_SCHEDULE)에 또는 생성 시(ON_CREATE) 동기적으로 수행됩니다. 초기 데이터 채우기 또는 초기화 는 이 초기 새로 고침이 발생하는 시기에 따라 달라집니다. 예를 들어, 동기식 초기화는 참조된 모든 업스트림 동적 테이블의 새로 고침을 트리거하므로 총 초기화 지속 시간에 처리 시간이 추가될 수 있습니다.

검색되는 데이터의 양에 따라 초기화하는 데 다소 시간이 걸릴 수 있습니다. 진행 상황을 보려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Monitoring » Query History 를 선택합니다.

  3. Filters 드롭다운에서 Warehouse 필터에 SQL Text 를 입력하고 CREATE DYNAMIC TABLE 필터에 웨어하우스 이름을 입력합니다.

  4. SQL text 아래에서 동적 테이블이 있는 쿼리를 선택하고 Query DetailsQuery Profile 탭을 사용하여 진행 상황을 추적합니다.

초기화에 대한 일반적인 내용은 동적 테이블 초기화 이해하기 섹션을 참조하십시오.

동적 테이블 디버그

문제

해결책

동적 테이블에 대한 메타데이터를 볼 수 없습니다.

동적 테이블의 메타데이터 및 Information Schema를 보려면 해당 동적 테이블에 대해 MONITOR 권한이 있는 역할을 사용해야 합니다. 자세한 내용은 동적 테이블의 메타데이터 보기 권한 섹션을 참조하십시오.

동적 테이블이 일시 중단되었습니다.

동적 테이블은 여러 가지 이유로 중단될 수 있습니다.

  • ALTER DYNAMIC TABLE … SUSPEND 명령어를 사용하여 직접 일시 중단되었습니다.

  • 이는 일시 중단된 동적 테이블의 다운스트림입니다.

  • 5번 연속으로 새로 고침에 실패했습니다(건너뛰기는 이 횟수에 포함되지 않음).

  • 이 테이블은 복제 그룹이나 장애 조치 그룹에 있는 복제된 동적 테이블입니다. 복제 및 동적 테이블 섹션을 참조하십시오.

  • 복제 시점에 하나 이상의 기본 테이블이 삭제된 동적 테이블에서 복제되었습니다.

동적 테이블이 중단된 이유를 확인하려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Monitoring » Dynamic Tables 를 선택합니다.

  3. 동적 테이블을 선택하고 Table Details 탭으로 이동합니다.

  4. Details 아래의 Scheduling State 를 마우스로 가리킵니다. 중지 사유와 날짜를 자세히 설명하는 대화 상자가 나타납니다.