Ikhtisar
Logika komputasi model relasional mengikuti dua prinsip utama:
Hanya bidang dalam kueri saat ini dan bidang terkait yang digunakan dalam komputasi. (Jika kueri hanya berisi bidang dari satu tabel logis, tabel logis lain dalam model relasional tidak disertakan dalam komputasi.)
Model menjaga integritas data bidang ukuran.
Diagram berikut menunjukkan alur pemrosesan umum. Dibandingkan dengan join fisik langsung, model relasional secara efektif mencegah ekspansi data:
Berikut adalah ikhtisar sederhana mengenai logika pemrosesan dalam model relasional. Dalam skenario dunia nyata, faktor seperti kardinalitas, laju kecocokan data, dan jenis bidang yang Anda gunakan memicu metode pemrosesan yang berbeda. Untuk detailnya, lihat contoh berikut.
Contoh
Konfigurasi model
Bidang tabel data
Tabel utama: Cases | Tabel sekunder: Population |
|
|
Struktur model relasional

Di mana:
Kunci gabungan: Medical Institution = Medical Institution
Hubungan join: N:N
Laju pencocokan data: Cocok Sebagian
Konfigurasi grafik dan metode perhitungan
Kueri satu tabel
Konfigurasi grafik
Dimensi | Medical Institution (tabel Population), Year (tabel Population) |
Ukuran | Sum of Population (tabel Population) |
Data hasil

Kueri multi-tabel (hanya dimensi)
Konfigurasi grafik
Dimensi | Month (tabel Cases), Year (tabel Population) |
Ukuran | - |
Data hasil

Logika inner join
Menggunakan
INNER JOIN: Ketika grafik hanya berisi dimensi, hanya data yang cocok yang dianggap bermakna. Data yang tidak cocok, seperti untuk institusi medis D dan E, diabaikan.Sistem melakukan join kedua tabel pada bidang "Medical Institution" menggunakan
INNER JOINuntuk membuat tabel antara. Setelah deduplikasi, sistem menampilkan data hasil.Institution (Cases)
Month (Cases)
Institution (Population)
Year (Population)
A
1
A
2020
A
1
A
2019
B
1
B
2020
B
1
B
2019
C
1
C
2020
C
1
C
2019
A
2
A
2020
A
2
A
2019
B
2
B
2020
B
2
B
2019
C
2
C
2020
C
2
C
2019
A
1
A
2020
A
1
A
2019
Kueri multi-tabel (hanya ukuran)
Konfigurasi grafik
Dimensi | - |
Ukuran | Sum of Number of Cases (tabel Cases), Sum of Population (tabel Population) |
Data hasil

Logika perhitungan
Ketika kueri hanya berisi ukuran dan tidak ada dimensi, agregasi menghasilkan satu baris data.
Dalam skenario ini, sistem melakukan agregasi ukuran dari
tabel Casesdantabel Populationsecara terpisah, lalu menggabungkan hasilnya.
Kueri multi-tabel (dimensi dan ukuran)
Contoh 1: Dimensi tabel kiri, ukuran tabel kanan
Konfigurasi grafik
Dimensi | Medical Institution (tabel Cases) |
Ukuran | Sum of Population (tabel Population) |
Data hasil

Langkah perhitungan
Langkah 1: Kombinasi dimensi dihitung dari bidang dimensi dalam grafik, Medical Institution (tabel Cases), dan kunci gabungan dari tabel ukuran, Medical Institution (tabel Population).
Karena kueri ini mencakup ukuran dari tabel Population, langkah ini mempertahankan semua nilai dimensi dari tabel tersebut. Hal ini memastikan integritas ukuran selama perhitungan selanjutnya.
Institution (Population) | Institution (Cases) |
A | A |
B | B |
C | C |
E | - |
Langkah 2: Kombinasi dimensi kemudian di-join dengan tabel Population untuk membuat tabel antara. Karena hanya kombinasi dimensi yang di-join dan setiap institusi medis unik di dalamnya, tidak terjadi eksplosi data.
Institution (Population) | Institution (Cases) | Population (Population) |
A | A | 100 |
B | B | 80 |
C | C | 70 |
A | A | 110 |
B | B | 75 |
C | C | 90 |
- | E | 60 |
- | E | 60 |
Langkah 3: Lakukan agregasi tabel antara berdasarkan dimensi yang digunakan dalam grafik untuk mendapatkan hasil akhir.
Karena "Medical Institution E" dari tabel Population tidak dapat dicocokkan dengan entri di tabel Cases, hasilnya berisi baris di mana dimensi Medical Institution bernilai null.

Contoh 2: Dimensi tabel kiri, ukuran tabel kanan (salah)
Konfigurasi grafik
Dimensi | Year (tabel Cases) |
Ukuran | Sum of Population (tabel Population) |
Data hasil

Langkah perhitungan
Langkah 1: Kombinasi dimensi dihitung dari bidang dimensi dalam grafik, Year (tabel Cases), dan kunci gabungan dari tabel ukuran, Medical Institution (tabel Population). Untuk kejelasan, Medical Institution (tabel Cases) juga ditampilkan di sini.
Karena kueri ini mencakup ukuran dari tabel Population, langkah ini mempertahankan semua nilai dimensi dari tabel tersebut. Hal ini memastikan integritas ukuran selama perhitungan selanjutnya.
Institution (Population) | Institution (Cases) | Year (Cases) |
A | A | 2019 |
A | A | 2020 |
B | B | 2020 |
C | C | 2020 |
E | - | - |
Dalam tabel Cases, "Medical Institution A" memiliki catatan untuk tahun 2019 dan 2020. Akibatnya, kombinasi dimensi berisi dua baris untuk "A" pada bidang Medical Institution (tabel Population).
Langkah 2: Kombinasi dimensi kemudian di-join dengan tabel Population untuk membuat tabel antara.
Year (Cases) | Institution (Population) | Population (Population) |
2019 | A | 100 |
2020 | A | 100 |
2020 | B | 80 |
2020 | C | 70 |
2019 | A | 110 |
2020 | A | 110 |
2020 | B | 75 |
2020 | C | 90 |
- | E | 60 |
- | E | 60 |
Joining dua baris duplikat "A" dalam kombinasi dimensi ke tabel Population menduplikasi data populasi untuk "Medical Institution A", menyebabkan eksplosi data.
Langkah 3: Tabel antara kemudian diagregasi berdasarkan dimensi yang digunakan dalam grafik untuk menghasilkan hasil akhir.

Dalam skenario ini, eksplosi data terjadi meskipun menggunakan model relasional. Untuk menghindari masalah seperti ini, kami merekomendasikan hal berikut:
Konfigurasikan kunci gabungan dengan benar: Dalam contoh ini, Anda harus menetapkan
Medical InstitutiondanYearsebagai kunci gabungan komposit. Hal ini mencegah eksplosi data saat tabel antara dibuat pada Langkah 2.Gunakan dimensi dan ukuran dari tabel logis yang sama ketika kueri lintas tabel tidak diperlukan: Dalam contoh ini, kueri
Medical InstitutiondanPopulationhanya daritabel Populationakan menghasilkan hasil yang benar.
Contoh 3: Dimensi tabel kanan, ukuran tabel kiri (salah)
Konfigurasi grafik
Dimensi | Year (tabel Population) |
Ukuran | Sum of Number of Covered Areas (tabel Cases) |
Data hasil

Langkah perhitungan
Langkah 1: Kombinasi dimensi dihitung dari bidang dimensi dalam grafik, Year (tabel Population), dan kunci gabungan dari tabel ukuran, Medical Institution (tabel Cases). Untuk kejelasan, Medical Institution (tabel Population) juga ditampilkan di sini.
Karena kueri ini mencakup ukuran dari tabel Cases, langkah ini mempertahankan semua nilai dimensi dari tabel tersebut. Hal ini memastikan integritas ukuran selama perhitungan selanjutnya.
Institution (Cases) | Institution (Population) | Year (Population) |
A | A | 2020 |
A | A | 2019 |
B | B | 2020 |
B | B | 2019 |
C | C | 2020 |
C | C | 2019 |
D | - | - |
Dalam tabel Population, institusi medis A, B, dan C masing-masing memiliki catatan untuk tahun 2019 dan 2020. Hal ini menyebabkan dua baris untuk "A", dua untuk "B", dan dua untuk "C" muncul dalam kombinasi dimensi pada bidang Medical Institution (tabel Cases). Institusi Medis E dari tabel populasi tidak cocok.
Langkah 2: Kombinasi dimensi kemudian di-join dengan tabel Cases untuk membuat tabel antara.
Institution (Cases) | Year (Population) | Covered areas (Cases) |
A | 2020 | 1 |
A | 2019 | 1 |
B | 2020 | 1 |
B | 2019 | 1 |
C | 2020 | 2 |
C | 2019 | 2 |
A | 2020 | 1 |
A | 2019 | 1 |
B | 2020 | 1 |
B | 2019 | 1 |
C | 2020 | 2 |
C | 2019 | 2 |
D | - | 1 |
A | 2020 | 1 |
A | 2019 | 1 |
Joining baris duplikat untuk institusi medis A, B, dan C dalam kombinasi dimensi ke tabel Cases menduplikasi data Number of Covered Areas, menyebabkan eksplosi data.
Langkah 3: Tabel antara kemudian diagregasi berdasarkan dimensi yang digunakan dalam grafik untuk menghasilkan hasil akhir.

Kueri ini salah menghitung jumlah Number of Covered Areas untuk institusi medis A, B, dan C karena duplikasi. Penyebab dan rekomendasinya sama seperti pada Contoh 2.
Konfigurasikan kunci gabungan dengan benar: Anda harus menetapkan
Medical InstitutiondanYearsebagai kunci gabungan komposit.Gunakan dimensi dan ukuran dari tabel logis yang sama ketika kueri lintas tabel tidak diperlukan: Anda harus melakukan kueri
YeardanNumber of Covered Areashanya daritabel Cases.
Perbandingan dengan pemodelan fisik
Pada versi sebelumnya, pemodelan set data Quick BI didasarkan pada pemodelan fisik. Pendekatan ini menggunakan antarmuka visual untuk mengonfigurasi join dan menggabungkan beberapa tabel menjadi satu tabel lebar.
Dengan pemodelan fisik, Anda harus secara eksplisit menentukan jenis join, seperti left join, inner join, atau full join. Hal ini mengharuskan Anda memahami data secara menyeluruh dan memprosesnya terlebih dahulu untuk memastikan integritas dan keunikan. Jika tidak, Anda berisiko mengalami masalah serius seperti eksplosi data.
Contoh terperinci
Konfigurasi model
Bidang tabel data
Tabel Kasus | Tabel populasi |
|
|
Struktur model fisik

Tabel lebar model fisik
Karena bidang 'Medical Institution' berisi nilai yang tidak unik, terjadi eksplosi data parah setelah pemodelan fisik. Misalnya, pada gambar di bawah, 'Population (tabel Population)' untuk 'Medical Institution' 'A' dan 'Year (tabel Population)' '2019' dihitung secara salah sebanyak tiga kali.

Konfigurasi dan perhitungan grafik
Contoh 1
Konfigurasi grafik
Dimensi | Medical Institution (tabel Cases) |
Ukuran | Sum of Population (tabel Population) |
Data hasil

Hasil yang benar

Contoh 2
Konfigurasi grafik
Dimensi | Year (tabel Cases) |
Ukuran | Sum of Population (tabel Population) |
Data hasil

Hasil yang benar

Kekurangan pemodelan fisik
Dengan pemodelan fisik, Anda harus memvalidasi akurasi model. Ketika data berisi nilai yang tidak unik atau hilang, Anda harus mengambil langkah tambahan untuk mencegah kesalahan data, seperti:
Gunakan SQL untuk mengagregasi data yang tidak unik sebelum membuat join.
Gunakan fungsi LOD untuk menentukan granularitas agregasi dan mencegah perhitungan yang salah.
Gunakan SQL untuk melengkapi data yang hilang atau menyesuaikan jenis join untuk mengatasi celah data dan mencegah kehilangan data.
Operasi ini memerlukan keahlian SQL, sehingga sulit bagi pengguna bisnis non-teknis. Selain itu, proses pemodelan fisik bersifat membosankan dan kompleks, mengharuskan Anda memverifikasi hasil secara berulang untuk memastikan akurasi.
Dalam pemodelan fisik, semakin banyak tabel yang di-join, semakin besar risiko eksplosi data. Model yang kompleks juga menyulitkan penelusuran dan penyelesaian masalah. Oleh karena itu, untuk meminimalkan jumlah tabel yang di-join, sebaiknya gunakan pemodelan fisik untuk membuat model terpisah untuk setiap skenario analisis. Namun, pendekatan ini menyebabkan proliferasi set data seiring bertambahnya skenario analisis, sehingga sulit dikelola dan dipelihara dalam jangka panjang.
Model relasional: kasus khusus
Penanganan bidang lintas tabel
Bidang lintas tabel adalah bidang terhitung yang menggunakan bidang dari beberapa tabel logis. Bidang ini tidak termasuk dalam satu tabel logis tertentu dan dikategorikan secara terpisah dalam set data.
Menghitung bidang lintas tabel selalu melibatkan beberapa tabel logis. Hasilnya bergantung pada hubungan join mereka, yang ditentukan oleh ukuran dan dimensi dalam kueri. Oleh karena itu, bidang ini hanya dapat dihitung dalam konteks kueri tertentu, sehingga data tingkat detailnya tidak tersedia untuk pratinjau.

Bidang lintas tabel pasca-agregasi
Anda membuat bidang lintas tabel pasca-agregasi dengan terlebih dahulu mengagregasi bidang dari tabel tunggal, lalu menggunakannya dalam perhitungan aritmetika lintas tabel (seperti penjumlahan, pengurangan, perkalian, atau pembagian).
Contohnya:

Untuk menghitung bidang ini, Quick BI pertama-tama menghitung SUM([人数(人数表)]) dari tabel jumlah orang dan SUM([覆盖区域数(病例表)]) dari tabel kasus, menghasilkan dua tabel antara berikut:
Medical institution (tabel kasus) | SUM(Jumlah orang (tabel jumlah orang)) |
A | 210 |
B | 155 |
C | 160 |
- | 120 |
Medical institution (tabel kasus) | SUM(Jumlah area yang dicakup (case table)) |
A | 3 |
B | 2 |
C | 4 |
D | 1 |
Quick BI kemudian melakukan join kedua tabel antara tersebut dan melakukan pembagian untuk menghitung hasil akhir.

Bidang lintas tabel tingkat detail
Anda membuat bidang lintas tabel tingkat detail dengan menggunakan bidang dari tabel tunggal dalam perhitungan lintas tabel pada tingkat detail sebelum agregasi apa pun.
Contohnya:

Untuk menghitung bidang ini, Quick BI pertama-tama melakukan join "tabel kasus" dan "tabel jumlah orang" pada kunci gabungannya untuk membuat tabel antara berikut:
Medical institution (tabel kasus) | Number of covered areas (tabel kasus) | Medical institution (tabel jumlah orang) | Number of people (tabel jumlah orang) |
A | 1 | A | 110 |
A | 1 | A | 100 |
B | 1 | B | 75 |
B | 1 | B | 80 |
C | 2 | C | 90 |
C | 2 | C | 70 |
A | 1 | A | 110 |
A | 1 | A | 100 |
B | 1 | B | 75 |
B | 1 | B | 80 |
C | 2 | C | 90 |
C | 2 | C | 70 |
A | 1 | A | 110 |
A | 1 | A | 100 |
Quick BI kemudian melakukan pembagian pada tabel antara ini dan mengagregasi hasilnya berdasarkan dimensi dalam grafik untuk menghasilkan hasil akhir:

Penanganan konstanta
Dalam model relasional, Quick BI memperlakukan konstanta (seperti teks biasa atau literal numerik) sebagai bidang lintas tabel tetapi menghitungnya secara berbeda dari bidang lintas tabel lainnya.
Sebagai contoh, jika Anda membuat konstanta '1' dalam set data model relasional, bidang tersebut muncul dalam kategori "Bidang Lintas Tabel":


Konstanta dalam perhitungan satu tabel
Dalam kasus ini, Quick BI memperlakukan konstanta sebagai bidang dalam tabel logis tersebut. Perhitungan kemudian mengikuti jalur kueri satu tabel, seperti yang ditunjukkan di bawah:

Konstanta dalam perhitungan multi-tabel
Dalam skenario ini, penanganan konstanta menjadi ambigu. Mengaitkan konstanta dengan tabel yang berbeda akan menghasilkan hasil perhitungan yang berbeda dan dapat menyebabkan hasil yang tidak terduga.
Oleh karena itu, dalam skenario ini, Quick BI memperlakukan konstanta sebagai bidang lintas tabel. Konstanta kemudian kehilangan asosiasinya dengan dimensi di semua tabel dan, akibatnya, tidak berpartisipasi dalam agregasi. Efeknya ditunjukkan di bawah:


