>

SQLDB 테이블에서 Data Lake Store의 .tsv 파일로 새로 업데이트 된 데이터를 매일 추출하는 파이프 라인이 있습니다.

이 데이터는 나중에 기존 테이블에 추가/업데이트하는 데 사용됩니다.

SQLDB에서 새로 업데이트 된 행만 선택하기 위해 sqlReaderQuery를 사용하여 WHERE 절 ( "WHERE DATEDIFF (day, c.UpdatedOn, GETDATE ()) = 1")이있는 테이블에서 선택할 수있었습니다. 파이프 라인을 실행하기 하루 전에 업데이트 된 (c.UpdatedOn) 행만 선택해야합니다.

문제는 : 유지 관리를 위해 파이프 라인이 1 주일 동안 일시 중지되었다고 가정합니다. 그런 다음 파이프 라인을 다시 시작하면 이전 주 마지막 날에 추가 된 행만 검색합니다 ...

파이프 라인이 마지막으로 실행 된 시간을 나타내는 시스템 변수를 사용할 수있는 방법이 있습니까?

따라서 시스템 변수에 대한 WHERE 절에서 GETDATE ()를 바꿀 수 있습니다 (예 :

).

어디 날짜 DIFF (day, c.UpdatedOn, DateOfPipelineLastExecution)<0

감사합니다


  • 답변 # 1

    활동이 실행될 때마다 특정 시간 창에 대해 실행되며 SQL 쿼리에서 SliceStart 및 SliceEnd 변수를 사용하여 해당 창에 대한 데이터를 추출해야합니다. https://docs.microsoft.com/en-us/azure/data-factory/v1/data-factory-scheduling-and-execution

  • 답변 # 2

    https://docs.microsoft.com/을 참조하십시오. ko-kr/azure/data-factory/v1/data-factory-functions-variss # data-factory-system-variables

    David가 말했듯이 SliceStart 및 SliceEnd 변수를 사용해야 각 슬라이스가 실행 된 요일에 관계없이 매일 필요한 정보를 얻을 수 있습니다. 예를 들어 파이프 라인을 1 주일 동안 중지했다가 다시 시작하면 파이프 라인은 매일 해당하는 7 개의 슬라이스를 복사합니다.

    귀하의 where 절은 다음과 같아야합니다 :

    $$Text.Format( 'SELECT ... WHERE DATEDIFF(day,c.UpdatedOn, \\'{0:yyyyMMdd-HH}\\'')=1, SliceEnd)
    
    

  • 이전 apache nifi - 그루비 코드에서 음의 색인 오류를 제거하는 방법?
  • 다음 python - 데이터 프레임 열 내부의 목록 값 정렬