Упражнение. Объединение результатов таблицы с помощью оператора объединения

Завершено

В этом упражнении оператор используется union для объединения фактов продаж, собранных из различных стран или регионов.

Использовать оператор union.

Ваша группа продаж просит вас создать одну таблицу, которая объединяет 10 произвольных результатов продаж из каждой из следующих стран/регионов: Австралия, Соединенное Королевство и США.

Используйте инструкцию let для создания трех табличных выражений, каждый из которых содержит 10 записей из определенной страны или региона в таблице SalesFact , чтобы представить данные о продажах из трех стран или регионов. Их можно считать тремя отдельными таблицами.

Изучение этих таблиц можно увидеть, что они имеют одинаковые столбцы. Единственное различие заключается в том, что данные в столбце RegionCountryName . union Используйте оператор для объединения таблиц фактов продаж для Соединенного Королевства и США с таблицей фактов продаж для Австралии.

  1. Выполните следующий запрос.

    Выполнить запрос

    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
    

    Результаты должны выглядеть следующим образом:

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

  2. Обратите внимание, что вы получаете все строки из трех таблиц. Попробуйте изменить запрос, чтобы добавить имитированные данные для Франции и объединить их с данными из других стран или регионов.

В следующих разделах используется let инструкция для создания нерегламентированных таблиц, которые имитируют данные с столбцами, необходимыми для сценариев.

union Использование оператора с таблицами с разными столбцами

В следующем месяце ваша группа продаж снова просит вас создать данные о продажах из трех стран или регионов. При изучении таблиц на этот раз вы заметите, что они имеют разные столбцы. Приятно, что union оператор объединяет таблицы, даже если они имеют разные столбцы. Для этого запроса используется альтернативный синтаксис для union оператора, для которого не требуются входные данные.

  1. Выполните следующий запрос.

    Выполнить запрос

    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
    

    Результаты должны выглядеть следующим образом:

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

  2. Обратите внимание, что вы получаете все строки из трех таблиц и всех столбцов, которые происходят в любой из таблиц. Ячейки, не определенные входной строкой, имеют значение NULL. Попробуйте изменить запрос, чтобы добавить дополнительные столбцы и узнать, как заполняются их значения в результатах.

union Используйте оператор с таблицами с разными столбцами и возвращайте только столбцы, происходящие во всех таблицах.

В следующем месяце ваша группа продаж снова просит вас создать данные о продажах из трех стран или регионов, но на этот раз они хотят только столбцы, которые являются общими для всех трех таблиц. Ранее вы видели, что union оператор возвращает все столбцы, происходящие в любой из таблиц. Это поведение по умолчанию union оператора, называемого внешним объединением, хотя рекомендуется всегда явно указывать тип объединения для ясности.

Чтобы возвращать только столбцы, происходящие во всех таблицах, используйте внутреннее объединение с одинаковыми имитируемыми данными, указав kind=inner аргумент:

  1. Выполните следующий запрос.

    Выполнить запрос

    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
    

    Результаты должны выглядеть следующим образом:

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

    Обратите внимание, что вы получаете все строки из трех таблиц и только столбцы, которые происходят во всех таблицах.

  2. Теперь попробуйте изменить запрос, чтобы добавить более распространенные столбцы, расширив каждую таблицу с таким же именем. Затем узнайте, как их значения заполняются в результатах.