파이프 라인 실행 사이에 Azure Data Factory에 런타임 데이터를 저장하려면 어떻게하나요?
SQL Server 데이터베이스에서 데이터를 증분 / 델타로드하기 위해 Microsoft의 자습서 를 따라 왔습니다 .
워터 마크 (타임 스탬프)를 사용하여 지난 시간 이후 변경된 행을 추적합니다. 이 자습서는 다음 실행에서 다시 사용할 수 있도록 파이프 라인의 "저장 프로 시저"활동을 사용하여 워터 마크를 Azure SQL 데이터베이스에 저장합니다.
아주 작은 메타 정보를 저장하기 위해 Azure SQL 데이터베이스를 사용하는 것은 과도하게 보입니다 (내 원본 데이터베이스는 읽기 전용 btw 임). 차라리 Azure의 다른 곳에 저장하고 싶습니다 . 아마도 Blob 저장소 또는 무엇이든.
요컨대 : 이러한 유형의 데이터를 쉽게 추적 할 수있는 방법이 있습니까? 아니면 저장된 procs (또는 Azure Functions 등)를 사용하는 것으로 제한됩니까?

답변
필자는 매우 유사한 시나리오를 접했고, ADF에 워터 마크 정보를 저장할 수 없다는 사실을 발견했습니다. 적어도 쉽게 액세스 할 수있는 방식은 아닙니다.
결국 저는 파이프 라인에서 이미 사용하고있는 SQL 서버에 워터 마크 / 구성 정보를 저장하기 위해 기본 계층 Azure SQL 데이터베이스를 만들었습니다.
이것에 대한 좋은 점은 내 솔루션이 서로 다른 데이터베이스를 사용하는 여러 비즈니스 단위로 확장되었을 때 특정 워터 마크 정보가 어떤 BU를위한 것인지 추적하는 열을 추가하기 만하면 각각에 대한 워터 마크 정보를 유지할 수 있다는 것입니다.
Blob Storage는 실제로 더 저렴한 옵션이지만 기존 데이터베이스에서 추가 데이터베이스 / 테이블을 사용하는 것보다 약간 더 많은 노력이 필요하다는 것을 알았습니다.
작은 구성 항목에 대해 ADF 자체에 작은 데이터 세트를 유지하는 것이 정말 유용 할 것이라는 데 동의합니다. Microsoft에 제안하는 것이 좋습니다.
복사 활동을 사용하여이를 달성하는 방법이 있지만 참조 용으로 'LookupOldWaterMarkActivity'에서 최신 워터 마크를 얻는 것은 복잡합니다.
데이터 세트 설정 :

활동 설정 복사 :
소스 및 싱크 데이터 세트는 동일합니다. 추가 열의 표현식을 다음으로 변경하십시오.@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}

이를 통해 워터 마크를 .txt 파일에 컬럼으로 저장할 수 있습니다. 그러나 Lookup 활동으로 최신 워터 마크를 얻는 것은 어렵습니다. 'LookupOldWaterMarkActivity'의 출력은 다음과 같기 때문입니다.
{
"count": 1,
"value": [
{
"Prop_0": "11/24/2020 02:39:14",
"Prop_1": "11/24/2020 08:31:42"
}
]
}
키 이름은 ADF에서 생성됩니다. "11/24/2020 08:31:42"를 얻으려면 열 개수를 가져 와서 다음과 같은 표현식을 사용해야합니다.@activity('LookupOldWaterMarkActivity').output.value[0][Prop_(column count - 1)]
최신 워터 마크를 얻는 방법 :
GetMetadata 활동을 사용하여 columnCount 가져 오기
다음 식을 사용하십시오.
@activity('LookupOldWaterMarkActivity').output.value[0][concat('Prop_',string(sub(activity('Get Metadata1').output.columnCount,1)))]