동적 테이블 목표 지연 이해하기¶
동적 테이블 새로 고침은 데이터의 :emph:`목표 지연`에 의해 트리거되며, 이 지연은 얼마나 오래되었는지를 결정합니다. 고정된 목표 지연을 설정하거나 동적 테이블을 DOWNSTREAM으로 설정하여 해당 테이블에 종속된 동적 테이블에 따라 새로 고침 타이밍이 달라지도록 할 수 있습니다.
동적 테이블의 목표 지연은 그래프의 루트에 있는 동적 테이블을 기준으로 측정되며, 바로 업스트림에 있는 동적 테이블은 측정되지 않습니다. 동적 테이블에 연결된 테이블의 그래프를 보려면 동적 테이블에 연결된 테이블의 그래프 보기 섹션을 참조하십시오.
Snowflake 일정은 동적 테이블의 실제 지연을 목표 지연보다 낮게 유지하도록 새로 고침을 예약합니다. 각 새로 고침의 기간은 쿼리, 데이터 패턴, 웨어하우스 크기에 따라 달라집니다. 목표 지연을 선택할 때는 체인의 각 동적 테이블 을 루트까지 새로 고치는 데 필요한 시간을 고려하십시오. 그렇지 않으면 일부 새로 고침을 건너뛰어 실제 지연이 더 커질 수 있습니다.
목표 지연의 유형¶
목표 지연은 다음 중 한 가지 방법으로 지정합니다. 목표 지연은 동적 테이블의 새로 고침 빈도에 반비례하며, 자주 새로 고칠수록 지연이 줄어듭니다.
최신성 척도: 동적 테이블의 콘텐츠가 기본 테이블에 대한 업데이트보다 지연되어야 하는 최대 시간을 정의합니다.
다음 예제에서는
my_dynamic_table을 1시간마다 새로 고치고 최신성를 유지하도록 설정합니다.ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = '1 hour';
다운스트림: 다운스트림 테이블(이 테이블에 종속된 테이블)이 새로 고쳐질 때 동적 테이블을 필요에 따라 새로 고치도록 지정합니다. 이 새로 고침은 생성 시 초기화, 수동 새로 고침 또는 다운스트림 테이블의 :ref:`예약된 새로 고침 <label-dynamic_tables_scheduled_refresh>`으로 트리거할 수 있습니다.
``refresh_mode``가 ``downstream``으로 설정된 경우 동적 테이블의 새로 고침 일정은 다운스트림 종속 항목의 가장 까다로운(가장 짧은) 지연에 따라 결정됩니다. 예를 들어, 하나의 다운스트림 종속 테이블에 10분 이내의 데이터가 필요하고 다른 다운스트림 종속 테이블에 1시간 이내의 데이터가 필요한 경우, 이 동적 테이블의 새로 고침 일정은 다운스트림 종속 항목의 가장 짧은 지연 시간인 10분마다 수행됩니다.
다음 예제에서
my_dynamic_table은 다운스트림 동적 테이블의 목표 지연에 따라 새로 고치도록 설정되어 있습니다.my_dynamic_table에 종속된 동적 테이블이 없는 경우 새로 고쳐지지 않습니다.ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = DOWNSTREAM;
다운스트림 목표 지연의 더 많은 예제는 예: 동적 테이블 체인에 대한 목표 지연 섹션을 참조하세요.
Snowflake 일정을 새로 고침하는 방법¶
Snowflake는 새로 고침이 완료될 때까지 시간을 확보하기 위해 목표 지연보다 약간 일찍 새로 고침을 예약합니다. 예를 들어, 목표 지연을 5분으로 설정하면 테이블이 5분마다보다 더 자주 새로 고쳐질 수 있습니다. 실제 새로 고침 간격은 지정된 지연보다 짧은 경우가 많습니다.
참고
목표 지연은 목표이지 보장이 아닙니다. Snowflake는 데이터를 목표 지연 내로 유지하려고 시도하지만, 웨어하우스 크기, 데이터 볼륨, 쿼리 복잡성과 같은 요인으로 인해 실제 지연이 목표를 초과할 수 있습니다.
워크로드의 목표 지연 조정에 대한 지침은 동적 테이블의 웨어하우스 또는 목표 지연 변경 섹션을 참조하세요. 목표 지연 최적화에 대한 자세한 내용은 적합한 목표 지연 시간 식별 섹션을 참조하세요.
업스트림 및 다운스트림 관계가 목표 지연에 미치는 영향¶
다음 다이어그램에서는 다른 동적 테이블에 대한 업스트림 및 다운스트림 관계의 컨텍스트에서 일시 중단, 재개 및 수동 새로 고침 작업을 보여줍니다.
이 다이어그램은 동적 테이블로 생성한 간단한 선언적 데이터 파이프라인을 보여줍니다.
DT2는 해당 동적 테이블에 종속되어 있으므로DT1의 다운스트림 으로,DT3의 업스트림 으로 설명됩니다.DT3은DT2에는 직접적으로,DT1에는 간접적으로 종속되므로DT2와DT1모두의 다운스트림입니다.DT1은 다른 동적 테이블의 직접적이거나 간접적인 업스트림입니다.
예: 동적 테이블 체인에 대한 목표 지연¶
동적 테이블(DT2)이 다른 동적 테이블(DT1)을 읽어들여 그 내용을 구체화하는 다음 예제에 대해 생각해 보겠습니다. 이 시나리오에서 보고서는 쿼리를 통해 DT2 의 데이터를 소비합니다.
각각의 동적 테이블이 지연을 지정하는 방식에 따라 다음 결과가 가능합니다.
|
|
새로 고침 결과 |
|---|---|---|
|
|
|
|
|
이런 상황을 방지해야 합니다. 보고서 쿼리는 어떤 데이터도 수신하지 않습니다. DT1 은 자주 새로 고쳐지고 |
|
|
|
|
|
|