Istnieje przekształcenie w przepływie danych mapowania

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Przepływy danych są dostępne zarówno w usłudze Azure Data Factory, jak i w potokach usługi Azure Synapse. Ten artykuł dotyczy przepływów danych mapowania. Jeśli dopiero zaczynasz transformacje, zapoznaj się z artykułem wprowadzającym Przekształcanie danych przy użyciu przepływu danych mapowania.

Przekształcenie istnieje to przekształcenie filtrowania wierszy, które sprawdza, czy dane istnieją w innym źródle, czy strumieniu. Strumień wyjściowy zawiera wszystkie wiersze w strumieniu po lewej stronie, które istnieją lub nie istnieją w prawym strumieniu. Istnieje transformacja podobna do SQL WHERE EXISTS i SQL WHERE NOT EXISTS.

Konfigurowanie

  1. Wybierz strumień danych, który sprawdzasz pod kątem istnienia na liście rozwijanej Prawy strumień .
  2. Określ, czy szukasz danych, które mają istnieć, czy nie istnieją w ustawieniu Typ istnieje.
  3. Wybierz, czy chcesz, aby wyrażenie niestandardowe było używane.
  4. Wybierz kolumny kluczy, które chcesz porównać ze swoimi warunkami. Domyślnie przepływ danych szuka równości między jedną kolumną w każdym strumieniu. Aby porównać wartość obliczoną, umieść kursor nad listą rozwijaną kolumny i wybierz pozycję Obliczona kolumna.

Exists settings

Wiele warunków istnieje

Aby porównać wiele kolumn z każdego strumienia, dodaj nowy warunek istnieje, klikając ikonę znaku plus obok istniejącego wiersza. Każdy dodatkowy warunek jest przyłączony przez instrukcję "and". Porównywanie dwóch kolumn jest takie samo jak następujące wyrażenie:

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

Wyrażenie niestandardowe

Aby utworzyć wyrażenie w postaci dowolnej, która zawiera operatory inne niż "i" i "równa się", wybierz pole Wyrażenie niestandardowe. Wprowadź wyrażenie niestandardowe za pomocą konstruktora wyrażeń przepływu danych, klikając niebieskie pole.

Exists custom settings

Jeśli tworzysz dynamiczne wzorce w przepływach danych przy użyciu "opóźnionego powiązania" kolumn za pośrednictwem dryfu schematu, możesz użyć byName() funkcji wyrażenia, aby użyć przekształcenia istnieje bez trwałego kodowania (tj. wczesnego powiązania) nazw kolumn. Przykład: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))

Optymalizacja emisji

Broadcast Join

W sprzężeniach wyszukiwanie i istnieje transformacja, jeśli jeden lub oba strumienie danych mieszczą się w pamięci węzła procesu roboczego, możesz zoptymalizować wydajność, włączając funkcję Emisja. Domyślnie aparat spark automatycznie zdecyduje, czy emitować jedną stronę. Aby ręcznie wybrać stronę do emisji, wybierz pozycję Naprawiono.

Nie zaleca się wyłączania emisji za pośrednictwem opcji Wyłącz , chyba że sprzężenia występują błędy przekroczenia limitu czasu.

Skrypt przepływu danych

Składnia

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

Przykład

W poniższym przykładzie istnieje przekształcenie o nazwie checkForChanges , które pobiera strumień NameNorm2 po lewej stronie i prawy strumień TypeConversions. Warunek istnieje to wyrażenie NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region , które zwraca wartość true, jeśli oba EMPID kolumny i Region w każdym strumieniu są zgodne. Gdy sprawdzamy istnienie, negate jest fałszywe. Nie włączamy żadnych emisji na karcie optymalizacji, więc broadcast ma wartość 'none'.

W środowisku interfejsu użytkownika ta transformacja wygląda jak na poniższej ilustracji:

Exists example

Skrypt przepływu danych dla tej transformacji znajduje się w poniższym fragmencie kodu:

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

Podobne przekształcenia to Lookup i Join.