Latihan - Menggabungkan hasil tabel dengan menggunakan operator gabungan

Selesai

Dalam latihan ini, Anda menggunakan union operator untuk menggabungkan fakta penjualan yang dikumpulkan dari berbagai negara/wilayah.

Menggunakan operator union

Tim penjualan Anda meminta Anda untuk membuat satu tabel yang menggabungkan 10 hasil penjualan arbitrer dari masing-masing negara/wilayah berikut: Australia, Inggris Raya, dan Amerika Serikat.

let Gunakan pernyataan untuk membuat tiga ekspresi tabular, masing-masing dengan 10 rekaman dari negara/wilayah tertentu, dalam tabel SalesFact, untuk mewakili data penjualan dari tiga negara/wilayah. Anda dapat menganggapnya sebagai tiga tabel terpisah.

Memeriksa tabel ini, Anda dapat melihat bahwa tabel tersebut memiliki kolom yang sama. Satu-satunya perbedaan adalah data dalam RegionCountryName kolom. union Gunakan operator untuk menggabungkan tabel fakta penjualan untuk Britania Raya dan Amerika Serikat dengan tabel fakta penjualan untuk Australia.

  1. Jalankan kueri berikut:

    Menjalankan kueri

    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
    

    Hasil Anda akan terlihat seperti yang ada di gambar berikut:

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

  2. Perhatikan bahwa Anda mendapatkan semua baris dari tiga tabel. Coba ubah kueri untuk menambahkan data yang disimulasikan untuk Prancis dan menggabungkannya dengan data dari negara/wilayah lain.

Di bagian berikut, Anda menggunakan let pernyataan untuk membuat tabel ad hoc yang mensimulasikan data, dengan kolom yang diperlukan untuk skenario.

union Menggunakan operator dengan tabel yang memiliki kolom berbeda

Bulan berikutnya, tim penjualan Anda kembali meminta Anda untuk membuat data penjualan dari tiga negara/wilayah. Saat Anda memeriksa tabel kali ini, Anda melihat bahwa tabel tersebut memiliki kolom yang berbeda. Hal yang bagus tentang union operator adalah menggabungkan tabel bahkan jika mereka memiliki kolom yang berbeda. Untuk kueri ini, Anda menggunakan sintaks alternatif untuk union operator, yang tidak memerlukan input yang disalurkan.

  1. Jalankan kueri berikut:

    Menjalankan kueri

    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
    

    Hasil Anda akan terlihat seperti yang ada di gambar berikut:

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

  2. Perhatikan bahwa Anda mendapatkan semua baris dari tiga tabel dan semua kolom yang terjadi di salah satu tabel. Sel yang tidak ditentukan oleh baris input diatur ke null. Coba ubah kueri untuk menambahkan lebih banyak kolom dan lihat bagaimana nilainya diisi dalam hasil.

union Gunakan operator dengan tabel yang memiliki kolom yang berbeda dan hanya mengembalikan kolom yang terjadi di semua tabel

Bulan berikutnya, tim penjualan Anda kembali meminta Anda untuk membuat data penjualan dari tiga negara/wilayah, tetapi kali ini mereka hanya menginginkan kolom yang umum untuk ketiga tabel. Sebelumnya, Anda melihat bahwa union operator mengembalikan semua kolom yang terjadi di salah satu tabel. Perilaku ini adalah default union operator, yang disebut serikat luar, meskipun praktik terbaik untuk selalu secara eksplisit menentukan jenis serikat pekerja untuk kejelasan.

Untuk hanya mengembalikan kolom yang terjadi di semua tabel, gunakan gabungan dalam pada data simulasi yang sama dengan menentukan kind=inner argumen:

  1. Jalankan kueri berikut:

    Menjalankan kueri

    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
    

    Hasil Anda akan terlihat seperti yang ada di gambar berikut:

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

    Perhatikan bahwa Anda mendapatkan semua baris dari tiga tabel dan hanya kolom yang terjadi di semua tabel.

  2. Sekarang coba ubah kueri untuk menambahkan kolom yang lebih umum dengan memperluas setiap tabel dengan kolom dengan nama yang sama. Kemudian, lihat bagaimana nilainya diisi dalam hasilnya.