Mode DirectQuery dalam model tabular
Berlaku untuk: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Artikel ini menjelaskan mode DirectQuery untuk model tabular Analysis Services pada tingkat kompatibilitas 1200 dan yang lebih tinggi. Mode DirectQuery dapat diaktifkan untuk model yang Anda desain di Visual Studio, atau untuk model tabular yang telah disebarkan, Anda dapat mengubah ke mode DirectQuery dengan menggunakan SQL Server Management Studio (SSMS). Sebelum memilih mode DirectQuery, penting untuk memahami manfaat dan batasan.
Keuntungan
Secara default, model tabular menggunakan cache dalam memori untuk menyimpan dan mengkueri data. Saat model tabular mengkueri data yang berada dalam memori, bahkan kueri yang kompleks bisa sangat cepat. Namun, ada beberapa batasan untuk menggunakan data yang di-cache, misalnya, himpunan data yang sangat besar dapat melebihi memori dan pemrosesan yang tersedia (refresh) data model dalam memori dapat memerlukan sumber daya yang tersedia dalam jumlah yang berlebihan jika sering diperlukan.
DirectQuery mengatasi batasan ini sekaligus memanfaatkan fitur RDBMS yang membuat eksekusi kueri lebih efisien. Dengan DirectQuery:
Data sudah diperbarui. Karena data selalu dikueri di sumber data, aplikasi pelaporan klien selalu mendapatkan data terbaru.
Tidak ada overhead manajemen ekstra karena harus mempertahankan salinan data terpisah (dalam cache dalam memori). Tidak diperlukan pemrosesan (refresh) data model. Perubahan pada data sumber yang mendasarinya dapat segera tercermin dalam kueri terhadap model data.
Himpunan data dapat lebih besar dari kapasitas memori sumber daya server Analysis Services.
DirectQuery dapat memanfaatkan akselerasi kueri sisi penyedia, seperti yang disediakan oleh indeks kolom yang dioptimalkan memori.
Keamanan dapat diberlakukan oleh database sumber back-end dengan menggunakan fitur keamanan tingkat baris dari database (atau, Anda dapat menggunakan aturan keamanan tingkat baris yang ditentukan dalam model dengan menggunakan DAX).
Jika model berisi rumus kompleks yang mungkin memerlukan beberapa kueri, Analysis Services dapat melakukan pengoptimalan untuk memastikan bahwa rencana kueri untuk kueri yang dijalankan terhadap database back-end akan seefisien mungkin.
Batasan
Model tabular dalam mode DirectQuery memiliki beberapa batasan. Sebelum beralih mode, penting untuk menentukan apakah keuntungan eksekusi kueri pada server backend lebih besar daripada pengurangan fungsionalitas apa pun. Jika Anda mengubah mode model yang ada di Visual Studio, perancang model Tabular akan memberi tahu Anda tentang fitur apa pun dalam model Anda yang tidak kompatibel dengan mode DirectQuery. Ingatlah batasan berikut:
Fitur | Pembatasan |
---|---|
Sumber data | Model DirectQuery hanya dapat menggunakan data dari database relasional tunggal dari jenis berikut: Azure SQL Database, Azure Synapse Analytics, SQL Server, Oracle, dan Teradata. |
Prosedur tersimpan SQL | Untuk model DirectQuery, prosedur tersimpan tidak dapat ditentukan dalam pernyataan SQL untuk menentukan tabel. |
Tabel terhitung | Tabel terhitung tidak didukung dalam model DirectQuery, tetapi kolom terhitung adalah. Jika Anda mencoba mengonversi model tabular yang berisi tabel terhitung, kesalahan akan terjadi yang menyatakan bahwa model tidak boleh berisi data yang ditempelkan. |
Batas kueri | Batas baris default adalah satu juta baris. Batas ini dapat ditingkatkan dengan menentukan MaxIntermediateRowSize. Untuk mempelajari selengkapnya, lihat Properti DAX. |
Rumus DAX | Saat mengkueri model tabular dalam mode DirectQuery, Analysis Services mengonversi rumus DAX dan mengukur definisi menjadi pernyataan SQL. Rumus DAX yang berisi elemen yang tidak dapat dikonversi menjadi sintaks SQL akan mengembalikan kesalahan validasi pada model. Pembatasan ini sebagian besar terbatas pada fungsi tabel DAX tertentu. Untuk pengukuran, rumus DAX dikonversi ke operasi berbasis set terhadap penyimpanan data relasional. Ini berarti bahwa semua langkah yang dibuat secara implisit didukung. Saat terjadi kesalahan validasi, Anda harus menulis ulang rumus, mengganti fungsi yang berbeda, atau mengatasinya dengan menggunakan kolom turunan di sumber data. Jika model tabular menyertakan rumus yang berisi fungsi yang tidak kompatibel, model tersebut akan dilaporkan saat Anda beralih ke mode DirectQuery di perancang. Catatan: Beberapa rumus dalam model mungkin memvalidasi saat Anda mengalihkan model ke mode DirectQuery, tetapi mengembalikan hasil yang berbeda saat dijalankan terhadap cache vs. penyimpanan data relasional. Ini karena perhitungan terhadap cache menggunakan semantik mesin analitik dalam memori, yang berisi fitur yang dimaksudkan untuk meniru perilaku Excel, sedangkan kueri terhadap data yang disimpan dalam sumber data relasional menggunakan semantik SQL. |
Konsistensi rumus | Dalam kasus tertentu, rumus yang sama dapat mengembalikan hasil yang berbeda dalam model cache dibandingkan dengan model DirectQuery yang hanya menggunakan penyimpanan data relasional. Perbedaan ini adalah konsekuensi dari perbedaan semantik antara mesin analitik dalam memori dan sumber data. |
Batasan MDX | Tidak ada nama objek relatif. Semua nama objek harus sepenuhnya memenuhi syarat. Tidak ada pernyataan MDX cakupan sesi (set bernama, anggota terhitung, sel terhitung, total visual, anggota default, dan sebagainya), tetapi Anda dapat menggunakan konstruksi cakupan kueri, seperti klausa 'WITH'. Tidak ada tuple dengan anggota dari tingkat yang berbeda dalam klausul subpilih MDX. Tidak ada hierarki yang ditentukan pengguna. Tidak ada kueri SQL asli (biasanya, Analysis Services mendukung subset T-SQL, tetapi tidak untuk model DirectQuery). |
Menyambungkan ke Sumber Data
Saat merancang model DirectQuery di Visual Studio, menyambungkan ke sumber data dan memilih tabel dan bidang untuk disertakan dalam model Anda sama dengan model dalam memori.
Jika Anda sudah mengaktifkan DirectQuery tetapi belum tersambung ke sumber data, Anda bisa menggunakan Dapatkan Data (atau Wizard Impor Data untuk sumber data penyedia warisan) untuk menyambungkan ke sumber data, memilih tabel dan bidang, dan sebagainya. Perbedaannya adalah ketika Anda selesai, tidak ada data yang benar-benar diimpor ke cache dalam memori.
Jika Anda telah menggunakan Dapatkan Data untuk mengimpor data, tetapi belum mengaktifkan mode DirectQuery, saat Anda melakukannya, cache dalam memori akan dihapus.
Menambahkan data sampel ke proyek model DirectQuery
Secara default, saat menggunakan perancang model Tabular di Visual Studio (SSDT) untuk merancang proyek model tabular DirectQuery, database ruang kerja model tidak berisi data apa pun. Ada satu partisi default untuk setiap tabel dan partisi ini mengarahkan semua kueri ke sumber data. Sejak DirectQuery pertama kali diperkenalkan, desainer model Tabular menyertakan fitur Set as Sample di Partition Manager. Fitur ini memungkinkan penambahan partisi salinan ke tabel yang dapat digunakan untuk mengimpor sejumlah kecil data sampel ke dalam database ruang kerja. Fitur ini dimaksudkan untuk membantu memvalidasi keputusan pemodelan tanpa memengaruhi sumber data.
Penting
Saat ini, fitur Atur sebagai Sampeldi perancang model Tabular tidak didukung. Abaikan TableName <> tidak berisi partisi sampel; untuk menggunakan data di SSDT, tambahkan contoh peringatan partisi.
Menyebarkan model DirectQuery
Model DirectQuery disebarkan sama dengan model impor. Namun, tidak seperti model impor, jika model DirectQuery berisi item terhitung seperti kolom terhitung atau grup perhitungan, setelah disebarkan, Anda harus melakukan Penghitungan Ulang Proses pada semua tabel. Untuk mempelajari selengkapnya, lihat Memproses database, tabel, atau partisi.
Lihat juga
Mengaktifkan mode DirectQuery di Visual Studio
Mengaktifkan mode DirectQuery di SSMS
Menentukan partisi dalam model DirectQueryUji model dalam mode DirectQuery
Sumber data yang didukung di Azure Analysis Services
Sumber data yang didukung dalam SQL Server Analysis Services model tabular 1400 dan yang lebih tinggi.