Exercício - Combinar os resultados da tabela usando o operador sindical
Neste exercício, você usa o union
operador para combinar fatos de vendas que foram coletados de vários países/regiões.
Utilize o union
operador
Sua equipe de vendas solicita que você crie uma única tabela que combine 10 resultados de vendas arbitrários de cada um dos seguintes países/regiões: Austrália, Reino Unido e Estados Unidos.
Use a let
instrução para criar três expressões tabulares, cada uma com 10 registros de um país/região específico, na tabela SalesFact , para representar dados de vendas de três países/regiões. Você pode pensar neles como três tabelas separadas.
Examinando essas tabelas, você pode ver que elas têm as mesmas colunas. A única diferença são os dados na RegionCountryName
coluna. Utilize o operador para combinar os quadros de factos sobre vendas para o Reino Unido e os Estados Unidos com o union
quadro de factos sobre vendas para a Austrália.
Execute a seguinte consulta.
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
Seus resultados devem ser parecidos com os da imagem a seguir:
Observe que você obtém todas as linhas das três tabelas. Tente modificar a consulta para adicionar dados simulados para a França e combiná-los com os dados de outros países/regiões.
Nas seções a seguir, use a let
instrução para criar tabelas ad hoc que simulam dados, com as colunas necessárias para os cenários.
Usar o union
operador com tabelas com colunas diferentes
No mês seguinte, a sua equipa de vendas pede-lhe novamente para criar os dados de vendas dos três países/regiões. Quando você examina as tabelas desta vez, você percebe que elas têm colunas diferentes. O bom do union
operador é que ele combina tabelas, mesmo que elas tenham colunas diferentes. Para esta consulta, você usa a sintaxe alternativa para o union
operador, que não requer entrada canalizada.
Execute a seguinte consulta.
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
Seus resultados devem ser parecidos com os da imagem a seguir:
Observe que você obtém todas as linhas das três tabelas e todas as colunas que ocorrem em qualquer uma das tabelas. As células que não são definidas por uma linha de entrada são definidas como nulas. Tente modificar a consulta para adicionar mais colunas e ver como seus valores são preenchidos nos resultados.
Use o union
operador com tabelas que têm colunas diferentes e retornam apenas as colunas que ocorrem em todas as tabelas
No mês seguinte, sua equipe de vendas novamente solicita que você crie os dados de vendas dos três países/regiões, mas desta vez eles querem apenas as colunas que são comuns às três tabelas. Anteriormente, você viu que o union
operador retorna todas as colunas que ocorrem em qualquer uma das tabelas. Esse comportamento é o union
padrão do operador, chamado de união externa, embora seja uma prática recomendada sempre especificar explicitamente o tipo de união para clareza.
Para retornar apenas as colunas que ocorrem em todas as tabelas, use uma união interna nos mesmos dados simulados especificando o kind=inner
argumento:
Execute a seguinte consulta.
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
Seus resultados devem ser parecidos com os da imagem a seguir:
Observe que você obtém todas as linhas das três tabelas e apenas as colunas que ocorrem em todas as tabelas.
Agora tente modificar a consulta para adicionar mais colunas comuns estendendo cada tabela com uma coluna do mesmo nome. Em seguida, veja como seus valores são preenchidos nos resultados.