데이터 흐름 매핑의 있음 변환

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

데이터 흐름은 Azure Data Factory 및 Azure Synapse Pipelines 모두에서 사용할 수 있습니다. 이 문서는 매핑 데이터 흐름에 적용됩니다. 변환을 처음 사용하는 경우 매핑 데이터 흐름을 사용하여 데이터 변환 소개 문서를 참조하세요.

있음 변환은 데이터가 다른 원본 또는 스트림에 있는지 확인하는 행 필터링 변환입니다. 출력 스트림에는 오른쪽 스트림에 존재하거나 존재하지 않는 왼쪽 스트림의 모든 행이 포함됩니다. 있음 변환은 SQL WHERE EXISTSSQL WHERE NOT EXISTS과 유사합니다.

구성

  1. 오른쪽 스트림 드롭다운에서 있는지 확인할 데이터 스트림을 선택합니다.
  2. 있음 형식에 존재하거나 존재하지 않는 데이터를 찾고 있는지 여부를 지정합니다.
  3. 사용자 지정 식을 사용할지 여부를 선택합니다.
  4. 있음 조건으로 비교할 키 열을 선택합니다. 기본적으로 데이터 흐름은 각 스트림의 한 열이 같은지 검색합니다. 계산된 값을 통해 비교하려면 열 드롭다운 위로 마우스를 이동하여 계산 열을 선택합니다.

Exists settings

여러 개의 있음 조건

각 스트림에서 여러 열을 비교하려면 기존 행 옆에 있는 더하기 아이콘을 클릭하여 새 있음 조건을 추가합니다. 각 추가 조건은 “and” 문으로 조인됩니다. 두 열 비교는 다음 식과 동일합니다.

source1@column1 == source2@column1 && source1@column2 == source2@column2

사용자 지정 식

“and” 및 “equals to” 이외의 연산자를 포함하는 자유 형식 식을 만들려면 사용자 지정 식 필드를 선택합니다. 파란색 상자를 클릭하여 데이터 흐름 식 작성기를 통해 사용자 지정 식을 입력합니다.

Exists custom settings

스키마 드리프트를 통해 열의 “지연 바인딩”을 사용하여 데이터 흐름에서 동적 패턴을 빌드하는 경우 byName() 식 함수를 사용하여 열 이름을 하드코딩(즉, 초기 바인딩)하지 않고 있음 변환을 사용할 수 있습니다. 예: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))

브로드캐스트 최적화

Broadcast Join

조인, 조회 및 있음 변환에서 하나 또는 두 데이터 스트림이 작업자 노드 메모리에 맞는 경우 브로드캐스팅를 사용하도록 설정하여 성능을 최적화할 수 있습니다. 기본적으로 spark 엔진은 한쪽에서 브로드캐스트할지 여부를 자동으로 결정합니다. 브로드캐스트할 쪽을 수동으로 선택하려면 고정을 선택합니다.

조인이 실행되는 동안 시간 제한 오류가 발생하는 경우에만 해제 옵션을 통해 브로드캐스팅을 사용하지 않도록 설정하는 것이 좋습니다.

데이터 흐름 스크립트

구문

<leftStream>, <rightStream>
    exists(
        <conditionalExpression>,
        negate: { true | false },
        broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
    ) ~> <existsTransformationName>

예시

아래 예제는 왼쪽 스트림 NameNorm2 및 오른쪽 스트림 TypeConversions를 사용하는 checkForChanges라는 있음 변환입니다. 있음 조건은 각 스트림의 EMPIDRegion 열이 일치하는 경우 True를 반환하는 식 NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region입니다. 존재 여부를 확인하는 동안 negate는 False입니다. 최적화 탭에서 브로드캐스팅을 사용하도록 설정하지 않으므로 broadcast 값이 'none'입니다.

UI 환경에서 이 변환은 아래 이미지와 같습니다.

Exists example

이 변환에 대한 데이터 흐름 스크립트는 아래 코드 조각에 있습니다.

NameNorm2, TypeConversions
    exists(
        NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region,
	    negate:false,
	    broadcast: 'auto'
    ) ~> checkForChanges

유사 변환으로는 조회조인이 있습니다.