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

Завершено

В этом упражнении вы используете оператор 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
    

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

    снимок экрана оператора UNION с таблицами с одинаковыми столбцами, запросом и результатами.

  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
    

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

    снимок экрана оператора объединения с таблицами с разными столбцами, запросами и результатами.

  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
    

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

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

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

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