Oefening: tabelresultaten combineren met behulp van de samenvoegoperator
In deze oefening gebruikt u de operator union
om verkoopgegevens te combineren die zijn verzameld uit verschillende landen/regio's.
De operator union
gebruiken
Uw verkoopteam vraagt u om één tabel te maken waarin 10 willekeurige verkoopresultaten van elk van de volgende landen/regio's worden gecombineerd: Australië, het Verenigd Koninkrijk en de Verenigde Staten.
Gebruik de let
-instructie om drie tabellaire expressies te maken, elk met 10 records uit een specifiek land/regio, in de tabel SalesFact, om verkoopgegevens uit drie landen/regio's weer te geven. U kunt ze beschouwen als drie afzonderlijke tabellen.
Als u deze tabellen bekijkt, ziet u dat ze dezelfde kolommen hebben. Het enige verschil is de gegevens in de kolom RegionCountryName
. Gebruik de operator union
om de tabellen met verkoopgegevens voor het Verenigd Koninkrijk en de Verenigde Staten te combineren met de tabel met verkoopgegevens voor Australië.
Voer de volgende query uit.
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
Uw resultaten moeten eruitzien zoals in de volgende afbeelding:
U ziet dat u alle rijen uit de drie tabellen krijgt. Probeer de query te wijzigen om gesimuleerde gegevens toe te voegen voor Frankrijk en deze te combineren met de gegevens uit de andere landen/regio's.
In de volgende secties gebruikt u de let
instructie om ad-hoctabellen te maken die gegevens simuleren, met de kolommen die nodig zijn voor de scenario's.
Gebruik de operator union
met tabellen met verschillende kolommen
De volgende maand vraagt uw verkoopteam u opnieuw om de verkoopgegevens van de drie landen/regio's te maken. Wanneer u de tabellen deze keer bekijkt, ziet u dat ze verschillende kolommen hebben. Het mooie van de operator union
is dat tabellen worden gecombineerd, zelfs als ze verschillende kolommen hebben. Voor deze query gebruikt u de alternatieve syntaxis voor de union
-operator, waarvoor geen doorsluisde invoer is vereist.
Voer de volgende query uit.
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
Uw resultaten moeten eruitzien zoals in de volgende afbeelding:
U ziet dat u alle rijen uit de drie tabellen en alle kolommen in een van de tabellen krijgt. Cellen die niet zijn gedefinieerd door een invoerrij, worden ingesteld op null. Wijzig de query om meer kolommen toe te voegen en kijk hoe de waarden in de resultaten worden ingevuld.
Gebruik de operator union
met tabellen met verschillende kolommen en retourneer alleen de kolommen die in alle tabellen voorkomen
De volgende maand vraagt uw verkoopteam u opnieuw om de verkoopgegevens van de drie landen/regio's te maken, maar deze keer willen ze alleen de kolommen die voor alle drie de tabellen gebruikelijk zijn. Eerder hebt u gezien dat de operator union
alle kolommen retourneert die in een van de tabellen voorkomen. Dit gedrag is de standaardinstelling van de operator union
, een buitenste samenvoeging genoemd, maar het is raadzaam om altijd expliciet het type samenvoeging op te geven voor duidelijkheid.
Als u alleen de kolommen wilt retourneren die in alle tabellen voorkomen, gebruikt u een interne samenvoeging voor dezelfde gesimuleerde gegevens door het argument kind=inner
op te geven:
Voer de volgende query uit.
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
Uw resultaten moeten eruitzien zoals in de volgende afbeelding:
U ziet dat u alle rijen uit de drie tabellen krijgt en alleen de kolommen die in alle tabellen voorkomen.
Wijzig nu de query om meer algemene kolommen toe te voegen door elke tabel uit te breiden met een kolom met dezelfde naam. Bekijk vervolgens hoe hun waarden worden ingevuld in de resultaten.