Упражнение. Объединение результатов таблицы с помощью оператора объединения
В этом упражнении оператор используется union
для объединения фактов продаж, собранных из различных стран или регионов.
Использовать оператор union
.
Ваша группа продаж просит вас создать одну таблицу, которая объединяет 10 произвольных результатов продаж из каждой из следующих стран/регионов: Австралия, Соединенное Королевство и США.
Используйте инструкцию let
для создания трех табличных выражений, каждый из которых содержит 10 записей из определенной страны или региона в таблице SalesFact , чтобы представить данные о продажах из трех стран или регионов. Их можно считать тремя отдельными таблицами.
Изучение этих таблиц можно увидеть, что они имеют одинаковые столбцы. Единственное различие заключается в том, что данные в столбце RegionCountryName
. union
Используйте оператор для объединения таблиц фактов продаж для Соединенного Королевства и США с таблицей фактов продаж для Австралии.
Выполните следующий запрос.
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
Результаты должны выглядеть следующим образом:
Обратите внимание, что вы получаете все строки из трех таблиц. Попробуйте изменить запрос, чтобы добавить имитированные данные для Франции и объединить их с данными из других стран или регионов.
В следующих разделах используется let
инструкция для создания нерегламентированных таблиц, которые имитируют данные с столбцами, необходимыми для сценариев.
union
Использование оператора с таблицами с разными столбцами
В следующем месяце ваша группа продаж снова просит вас создать данные о продажах из трех стран или регионов. При изучении таблиц на этот раз вы заметите, что они имеют разные столбцы. Приятно, что union
оператор объединяет таблицы, даже если они имеют разные столбцы. Для этого запроса используется альтернативный синтаксис для union
оператора, для которого не требуются входные данные.
Выполните следующий запрос.
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
Результаты должны выглядеть следующим образом:
Обратите внимание, что вы получаете все строки из трех таблиц и всех столбцов, которые происходят в любой из таблиц. Ячейки, не определенные входной строкой, имеют значение NULL. Попробуйте изменить запрос, чтобы добавить дополнительные столбцы и узнать, как заполняются их значения в результатах.
union
Используйте оператор с таблицами с разными столбцами и возвращайте только столбцы, происходящие во всех таблицах.
В следующем месяце ваша группа продаж снова просит вас создать данные о продажах из трех стран или регионов, но на этот раз они хотят только столбцы, которые являются общими для всех трех таблиц. Ранее вы видели, что union
оператор возвращает все столбцы, происходящие в любой из таблиц. Это поведение по умолчанию union
оператора, называемого внешним объединением, хотя рекомендуется всегда явно указывать тип объединения для ясности.
Чтобы возвращать только столбцы, происходящие во всех таблицах, используйте внутреннее объединение с одинаковыми имитируемыми данными, указав kind=inner
аргумент:
Выполните следующий запрос.
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
Результаты должны выглядеть следующим образом:
Обратите внимание, что вы получаете все строки из трех таблиц и только столбцы, которые происходят во всех таблицах.
Теперь попробуйте изменить запрос, чтобы добавить более распространенные столбцы, расширив каждую таблицу с таким же именем. Затем узнайте, как их значения заполняются в результатах.