Ćwiczenie — łączenie wyników tabeli przy użyciu operatora unii
W tym ćwiczeniu używasz union
operatora do łączenia faktów sprzedaży zebranych z różnych krajów/regionów.
union
Korzystanie z operatora
Zespół sprzedaży prosi o utworzenie pojedynczej tabeli, która łączy 10 dowolnych wyników sprzedaży z każdego z następujących krajów/regionów: Australia, Wielka Brytania i Stany Zjednoczone.
let
Użyj instrukcji , aby utworzyć trzy wyrażenia tabelaryczne, z których każdy ma 10 rekordów z określonego kraju/regionu w tabeli SalesFact, aby reprezentować dane sprzedaży z trzech krajów/regionów. Można je traktować jako trzy oddzielne tabele.
Sprawdzając te tabele, można zobaczyć, że mają one te same kolumny. Jedyną różnicą jest dane w kolumnie RegionCountryName
. union
Użyj operatora , aby połączyć tabele faktów sprzedaży dla Zjednoczonego Królestwa i Stany Zjednoczone z tabelą faktów sprzedaży dla Australii.
Uruchom poniższe zapytanie.
let AustraliaSales = SalesFact // Sales facts from Australia | lookup Customers on CustomerKey | where RegionCountryName == 'Australia' | take 10; let UnitedKingdomSales = SalesFact // Sales facts from United Kingdom | lookup Customers on CustomerKey | where RegionCountryName == 'United Kingdom' | take 10; let UnitedStatesSales = SalesFact // Sales facts from United States | lookup Customers on CustomerKey | where RegionCountryName == 'United States' | take 10; AustraliaSales | union UnitedKingdomSales, UnitedStatesSales
Wyniki powinny wyglądać podobnie do tych na poniższej ilustracji:
Zwróć uwagę, że wszystkie wiersze z trzech tabel są wyświetlane. Spróbuj zmodyfikować zapytanie, aby dodać symulowane dane dla Francji i połączyć je z danymi z innych krajów/regionów.
W poniższych sekcjach użyjesz let
instrukcji , aby utworzyć tabele ad hoc, które symulują dane, z kolumnami wymaganymi w scenariuszach.
union
Używanie operatora z tabelami, które mają różne kolumny
W następnym miesiącu zespół ds. sprzedaży ponownie prosi o utworzenie danych sprzedaży z trzech krajów/regionów. Podczas badania tabel tym razem zauważysz, że mają one różne kolumny. Dobrą rzeczą w operatorze union
jest to, że łączy tabele, nawet jeśli mają różne kolumny. W przypadku tego zapytania należy użyć alternatywnej składni operatora union
, która nie wymaga potokowych danych wejściowych.
Uruchom poniższe zapytanie.
let AustraliaSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'Australia' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, CityName; let UnitedKingdomSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United Kingdom' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, Occupation; let UnitedStatesSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United States' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, StateProvinceName; union AustraliaSales, UnitedKingdomSales, UnitedStatesSales
Wyniki powinny wyglądać podobnie do tych na poniższej ilustracji:
Zwróć uwagę, że wszystkie wiersze z trzech tabel i wszystkie kolumny, które występują w dowolnej z tabel. Komórki, które nie są zdefiniowane przez wiersz wejściowy, są ustawione na wartość null. Spróbuj zmodyfikować zapytanie, aby dodać więcej kolumn i zobaczyć, jak ich wartości są wypełniane w wynikach.
union
Użyj operatora z tabelami, które mają różne kolumny i zwracają tylko kolumny występujące we wszystkich tabelach
W następnym miesiącu zespół ds. sprzedaży ponownie prosi o utworzenie danych sprzedaży z trzech krajów/regionów, ale tym razem chcą tylko kolumn, które są wspólne dla wszystkich trzech tabel. Wcześniej zobaczyliśmy, że union
operator zwraca wszystkie kolumny występujące w dowolnej z tabel. To zachowanie jest domyślnym union
operatorem nazywanym unii zewnętrznej, chociaż najlepszym rozwiązaniem jest zawsze jawne określenie rodzaju unii w celu uzyskania jasności.
Aby zwrócić tylko kolumny występujące we wszystkich tabelach, użyj unii wewnętrznej na tych samych symulowanych danych, określając kind=inner
argument:
Uruchom poniższe zapytanie.
let AustraliaSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'Australia' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, CityName; let UnitedKingdomSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United Kingdom' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, Occupation; let UnitedStatesSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United States' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, StateProvinceName; union kind=inner AustraliaSales, UnitedKingdomSales, UnitedStatesSales
Wyniki powinny wyglądać podobnie do tych na poniższej ilustracji:
Zwróć uwagę, że wszystkie wiersze z trzech tabel są wyświetlane i tylko te kolumny, które występują we wszystkich tabelach.
Teraz spróbuj zmodyfikować zapytanie, aby dodać bardziej typowe kolumny, rozszerzając każdą tabelę o taką samą nazwę. Następnie zobacz, jak ich wartości są wypełniane w wynikach.