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
- Wybierz strumień danych, który sprawdzasz pod kątem istnienia na liście rozwijanej Prawy strumień .
- Określ, czy szukasz danych, które mają istnieć, czy nie istnieją w ustawieniu Typ istnieje.
- Wybierz, czy chcesz, aby wyrażenie niestandardowe było używane.
- 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.
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.
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
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:
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