Cvičení – kombinování výsledků tabulky pomocí operátoru sjednocení
V tomto cvičení použijete union
operátor ke kombinování prodejních faktů shromážděných z různých zemí nebo oblastí.
Použití operátoru union
Váš prodejní tým vás požádá o vytvoření jedné tabulky, která kombinuje 10 libovolných prodejních výsledků z každé z následujících zemí/oblastí: Austrálie, Velká Británie a USA.
let
Pomocí příkazu vytvořte tři tabulkové výrazy, z nichž každý má 10 záznamů z konkrétní země nebo oblasti v tabulce SalesFact, aby představoval údaje o prodeji ze tří zemí/oblastí. Můžete si je představit jako tři samostatné tabulky.
Při zkoumání těchto tabulek můžete vidět, že mají stejné sloupce. Jediným rozdílem jsou data ve sloupci RegionCountryName
. Operátor slouží union
ke kombinování tabulek faktů o prodeji pro Spojené království a USA s tabulkou faktů o prodeji pro Austrálii.
Spusťte následující dotaz.
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
Výsledky by měly vypadat jako na následujícím obrázku:
Všimněte si, že z těchto tří tabulek získáte všechny řádky. Zkuste dotaz upravit tak, aby přidal simulovaná data pro Francii a zkombinoval je s daty z jiných zemí nebo oblastí.
V následujících částech použijete příkaz let
k vytvoření ad hoc tabulek, které simulují data se sloupci požadovanými pro scénáře.
Použití operátoru union
s tabulkami, které mají různé sloupce
Příští měsíc vás váš prodejní tým znovu požádá o vytvoření prodejních dat ze tří zemí/oblastí. Když tentokrát prozkoumáte tabulky, všimnete si, že mají různé sloupce. Pěkným výhodou operátoru union
je, že kombinuje tabulky i v případě, že mají různé sloupce. Pro tento dotaz použijete alternativní syntaxi operátoru union
, která nevyžaduje předaný vstup.
Spusťte následující dotaz.
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
Výsledky by měly vypadat jako na následujícím obrázku:
Všimněte si, že získáte všechny řádky ze tří tabulek a všech sloupců, které se vyskytují v některé z tabulek. Buňky, které nejsou definovány vstupním řádkem, jsou nastaveny na hodnotu null. Zkuste upravit dotaz, aby se přidaly další sloupce, a podívejte se, jak se ve výsledcích naplní jejich hodnoty.
union
Použijte operátor s tabulkami, které mají různé sloupce, a vracet pouze sloupce, ke kterým dochází ve všech tabulkách.
Následující měsíc vás váš prodejní tým znovu požádá o vytvoření prodejních dat ze tří zemí/oblastí, ale tentokrát chtějí jenom sloupce, které jsou společné pro všechny tři tabulky. Dříve jste viděli, že union
operátor vrátí všechny sloupce, ke kterým dochází v některé z tabulek. Toto chování je výchozí hodnotou operátoru union
označovaného jako vnější sjednocení, i když je osvědčeným postupem vždy explicitně určit druh sjednocení pro přehlednost.
Pokud chcete vrátit pouze sloupce, ke kterým dochází ve všech tabulkách, použijte vnitřní sjednocení na stejných simulovaných datech zadáním argumentu kind=inner
:
Spusťte následující dotaz.
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
Výsledky by měly vypadat jako na následujícím obrázku:
Všimněte si, že získáte všechny řádky ze tří tabulek a pouze sloupce, které se vyskytují ve všech tabulkách.
Teď zkuste upravit dotaz tak, aby se přidaly běžnější sloupce tím, že rozšíříte každou tabulku se sloupcem se stejným názvem. Pak se podívejte, jak se ve výsledcích vyplní jejich hodnoty.