비고
이 문서에서는 공용 매개 변수 모드 기능을 사용하고 CI/CD 지원을 통해 Dataflow Gen2에만 적용되는 Dataflow Gen2에 대한 CI/CD 및 ALM(애플리케이션 수명 주기 관리) 솔루션 아키텍처의 솔루션 아키텍처에 중점을 둡니다.
Fabric Dataflow Gen2의 매개 변수를 사용하면 데이터 흐름이 디자인되는 방식을 형성하는 재사용 가능한 입력을 정의할 수 있으며 , 공용 매개 변수 모드 를 사용하면 파이프라인 또는 API를 통해 런타임에 해당 입력을 설정할 수 있습니다. 여러 값을 전달하여 여러 시나리오에서 동일한 논리를 다시 사용할 수 있으므로 변환을 다시 작성하거나 복제할 필요 없이 동적 자동화된 워크플로를 사용할 수 있으므로 단일 데이터 흐름을 매우 유연하고 다양하게 만듭니다.
이 자습서에서는 다음 방법을 보여 주는 예제를 안내합니다.
- 원본 매개 변수화: WideWorldImpoters 샘플 데이터 세트와 함께 Lakehouse를 원본으로 사용
- 논리 매개 변수화: 데이터 흐름 환경 전체에서 사용할 수 있는 입력 위젯 사용
- 대상 매개 변수화: 웨어하우스를 대상으로 사용
- 매개 변수 값을 사용하여 실행 요청 제출: 패브릭 파이프라인 내의 데이터 흐름 작업 환경을 통해 매개 변수 값 전달
비고
이 문서에 소개된 개념은 Dataflow Gen2에 보편적이며 여기에 표시된 것 이상으로 다른 원본 및 대상에 적용할 수 있습니다.
시나리오
이 시나리오에서 사용되는 데이터 흐름은 간단하지만 설명된 핵심 원칙은 모든 유형의 데이터 흐름에 적용됩니다. Wide World Importers 샘플 데이터 세트에 있는 Lakehouse에 저장된 "dimension_city"라는 테이블에 연결합니다. SalesTerritory 열이 "Southeast"인 행을 필터링하고, 그 결과를 데이터 웨어하우스 내의 City라는 새 테이블에 로드합니다. Lakehouse, Warehouse 및 Dataflow와 같은 모든 구성 요소는 동일한 작업 영역에 있습니다. 데이터 흐름을 동적으로 만들려면 원본 테이블, 필터 값 및 대상 테이블을 매개 변수화합니다. 이러한 변경 내용을 통해 데이터 흐름을 하드 코딩된 값 대신 특정 값으로 실행할 수 있습니다.
계속하기 전에 홈 탭으로 이동하여 옵션을 선택하고 매개 변수 섹션에서 매개 변수 사용 레이블이 지정된 확인란을 선택하여 실행을 위해 매개 변수를 검색하고 재정의하고 실행 중에 데이터 흐름이 매개 변수를 수락하도록 허용하여 공용 매개 변수 모드를 사용하도록 설정합니다.
원본 매개 변수화
Lakehouse, Warehouse 또는 Fabric SQL과 같은 패브릭 커넥터를 사용하는 경우 모두 동일한 탐색 구조를 따르고 동일한 입력 형식을 사용합니다. 이 시나리오에서는 연결을 설정하기 위해 수동 입력이 필요한 커넥터가 없습니다. 그러나 각 작업 영역은 쿼리의 탐색 단계를 통해 연결하는 작업 영역과 항목을 보여 줍니다. 예를 들어 첫 번째 탐색 단계에는 쿼리가 연결하는 workspaceId가 포함됩니다.
목표는 수식 입력줄에서 하드 코딩된 값을 매개 변수로 바꾸는 것입니다. 특히 WorkspaceId 에 대한 매개 변수 하나와 LakehouseId에 대한 매개 변수를 만들어야 합니다. 매개 변수를 만들려면 리본 메뉴의 홈 탭으로 이동하여 매개 변수 관리를 선택한 다음 드롭다운 메뉴에서 새 매개 변수 를 선택합니다.
매개 변수를 만들 때 둘 다 필수 로 표시되고 텍스트 형식으로 설정되었는지 확인합니다. 현재 값의 경우 특정 환경의 해당 값과 일치하는 값을 사용합니다.
두 매개 변수가 모두 만들어지면 하드 코딩된 값 대신 사용하도록 쿼리 스크립트를 업데이트할 수 있습니다. 이렇게 하면 수식 입력줄의 원래 값을 작업 영역 ID 및 Lakehouse ID 매개 변수에 대한 참조로 수동으로 바꿔야 합니다. 원래 쿼리 스크립트는 다음과 같습니다.
let
Source = Lakehouse.Contents([]),
#"Navigation 1" = Source{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
#"Navigation 2" = #"Navigation 1"{[lakehouseId = "2455f240-7345-4c8b-8524-c1abbf107d07"]}[Data],
#"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
#"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
#"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
#"Removed columns"
탐색 단계에서 참조를 업데이트하면 업데이트된 새 스크립트는 다음과 같이 표시될 수 있습니다.
let
Source = Lakehouse.Contents([]),
#"Navigation 1" = Source{[workspaceId = WorkspaceId]}[Data],
#"Navigation 2" = #"Navigation 1"{[lakehouseId = LakehouseId]}[Data],
#"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
#"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
#"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
#"Removed columns"
또한 데이터 흐름 편집기에서 데이터 미리 보기를 올바르게 평가합니다.
논리 매개 변수화
원본에서 매개 변수를 사용했으므로 데이터 흐름의 변환 논리를 매개 변수화하는 데 집중할 수 있습니다. 이 시나리오에서 필터 단계는 논리가 적용되는 위치이며 필터링되는 값(현재 남동부로 하드 코딩됨)을 매개 변수로 바꿔야 합니다. 이렇게 하려면 Territory라는 새 매개 변수를 만들고, 해당 데이터 형식을 텍스트로 설정하고, 필요하지 않은 것으로 표시하고, 현재 값을 중동으로 설정합니다.
사용자 인터페이스를 사용하여 필터 단계를 만든 경우 필터링된 행 단계로 이동하여 두 번 선택하고 필터 단계에 대한 설정 대화 상자를 가져올 수 있습니다. 이 대화 상자를 사용하면 정적 값 대신 매개 변수를 사용하려는 경우 입력 위젯을 통해 선택할 수 있습니다.
매개 변수 선택 옵션을 선택하면 필요한 데이터 형식과 일치하는 사용 가능한 모든 매개 변수가 드롭다운으로 표시됩니다. 이 목록에서 새로 만든 Territory 매개 변수를 선택할 수 있습니다.
확인을 선택하면 다이어그램 뷰에서 새로 만든 매개 변수와 사용 중인 쿼리 간의 링크가 이미 생성되었음을 알 수 있습니다. 뿐만 아니라 데이터 미리 보기는 이제 중동 지역에 대한 정보를 표시합니다.
대상 매개 변수화
비고
Dataflow Gen2의 데이터 대상 개념과 데이터 대상 및 관리되는 설정에 대한 문서에서 매시업 스크립트를 만드는 방법을 알아보는 것이 좋습니다.
이 시나리오에서 매개 변수화할 마지막 구성 요소는 대상입니다. 데이터 흐름 편집기에서 데이터 대상에 대한 정보를 찾을 수 있지만 데이터 흐름의 이 부분을 매개 변수화하려면 Git 또는 REST API를 사용해야 합니다.
이 자습서에서는 Git을 통해 변경하는 방법을 보여줍니다. Git을 통해 변경하려면 다음을 확인합니다.
- WarehouseId라는 이름의 매개 변수를 만듭니다. 웨어하우스의 해당 ID를 현재 값으로 사용하고 필요에 따라 텍스트 데이터 형식으로 설정해야 합니다.
- 데이터 흐름 저장: 리본의 홈 탭에 있는 저장 단추를 사용합니다.
데이터 흐름이 저장되면 Git 리포지토리에 대한 변경 내용을 커밋하고 리포지토리로 이동하여 데이터 흐름의 mashup.pq 파일을 확인합니다. mashup.pq 파일을 볼 때 데이터 대상과 연결한 쿼리를 찾습니다. 이 시나리오에서는 해당 쿼리의 이름이 dimension_city. 이 쿼리 이름 위에 레코드 특성이 표시됩니다.
[DataDestinations = {[Definition = [Kind = "Reference", QueryName = "dimension_city_DataDestination", IsNewTarget = true], Settings = [Kind = "Manual", AllowCreation = true, ColumnSettings = [Mappings = {[SourceColumnName = "CityKey", DestinationColumnName = "CityKey"], [SourceColumnName = "WWICityID", DestinationColumnName = "WWICityID"], [SourceColumnName = "City", DestinationColumnName = "City"], [SourceColumnName = "StateProvince", DestinationColumnName = "StateProvince"], [SourceColumnName = "Country", DestinationColumnName = "Country"], [SourceColumnName = "Continent", DestinationColumnName = "Continent"], [SourceColumnName = "SalesTerritory", DestinationColumnName = "SalesTerritory"], [SourceColumnName = "Region", DestinationColumnName = "Region"], [SourceColumnName = "Subregion", DestinationColumnName = "Subregion"], [SourceColumnName = "Location", DestinationColumnName = "Location"], [SourceColumnName = "LatestRecordedPopulation", DestinationColumnName = "LatestRecordedPopulation"]}], DynamicSchema = false, UpdateMethod = [Kind = "Replace"], TypeSettings = [Kind = "Table"]]]}]
shared dimension_city = let
이 특성 레코드에는 이 쿼리에 연결된 모든 데이터 대상 논리가 있는 쿼리의 이름을 포함하는 QueryName이라는 필드가 있습니다. 이 쿼리는 다음과 같습니다.
shared dimension_city_DataDestination = let
Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
Navigation_1 = Pattern{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
Navigation_2 = Navigation_1{[warehouseId = "527ba9c1-4077-433f-a491-9ef370e9230a"]}[Data],
TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
TableNavigation
Lakehouse에 대한 원본 스크립트와 마찬가지로, 대상 스크립트에서도 사용해야 하는 workspaceid와 warehouseId를 하드코딩한 유사한 패턴이 있습니다. 이러한 고정 값을 매개 변수의 식별자로 바꾸고 스크립트는 다음과 같이 표시됩니다.
shared dimension_city_DataDestination = let
Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
Navigation_1 = Pattern{[workspaceId = WorkspaceId]}[Data],
Navigation_2 = Navigation_1{[warehouseId = WarehouseId]}[Data],
TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
TableNavigation
이제 작업 영역의 소스 제어 기능을 통해 데이터 흐름의 변경 내용을 사용하여 이 변경 내용을 커밋하고 데이터 흐름을 업데이트할 수 있습니다. 데이터 흐름을 열고 데이터 대상 및 추가된 이전 매개 변수 참조를 검토하여 모든 변경 내용이 있는지 확인할 수 있습니다. 그러면 데이터 흐름의 모든 매개 변수화가 완료되고 이제 실행 매개 변수 값을 전달하여 Dataflow를 실행할 수 있습니다.
매개 변수 값을 사용하여 요청 실행
패브릭 REST API를 사용하여 특정 실행 작업에 대한 매개 변수 값이 포함된 사용자 지정 페이로드를 사용하여 실행 요청을 보낼 수 있으며, REST API를 사용하여 데이터 흐름 매개 변수를 검색하고 데이터 흐름이 예상하는 것을 이해하여 실행을 트리거할 수 있습니다. 이 자습서에서는 패브릭 파이프라인의 데이터 흐름 작업 내에 있는 경험을 사용합니다. 먼저 파이프라인을 만들고 캔버스에 새 데이터 흐름 작업을 추가합니다. 작업 설정에서 데이터 흐름이 있는 작업 영역을 찾은 다음 드롭다운에서 데이터 흐름을 선택합니다.
데이터 흐름 매개 변수 섹션을 확장하여 데이터 흐름에서 사용 가능한 모든 매개 변수와 해당 기본값을 표시할 수 있습니다. 여기에 있는 모든 값을 바꿀 수 있으며 전달된 값은 데이터 흐름 실행을 평가하는 데 사용해야 하는 원본, 논리 및 대상을 정의하는 데 사용됩니다. 새 웨어하우스를 만들고 평가용 WarehouseId를 변경하거나 WorkspaceId 및 기타 매개 변수를 전달하여 해당 환경의 올바른 항목을 가리키도록 배포 파이프라인에서 이 패턴을 사용하여 새 시나리오를 시도할 수도 있습니다.