Exercício - Combinar os resultados da tabela usando o operador sindical

Concluído

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.

  1. Execute a seguinte consulta.

    Executar a 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:

    Screenshot of the union operator with tables that have the same columns, query, and results.

  2. 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.

  1. Execute a seguinte consulta.

    Executar a 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:

    Screenshot of the union operator, with tables that have different columns, query, and results.

  2. 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:

  1. Execute a seguinte consulta.

    Executar a 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:

    Screenshot of the union operator, returning common columns from tables that have different columns, query, and results.

    Observe que você obtém todas as linhas das três tabelas e apenas as colunas que ocorrem em todas as tabelas.

  2. 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.