Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Dalam tutorial ini, kita akan melihat perkhidmatan analisis dalam enjin kedua - enjin storan.
Kami membincangkan enjin peringkat atas, enjin formula , dalam tutorial yang lalu. Apabila pengguna memahami cara kedua-dua enjin ini berfungsi, lebih mudah untuk mengoptimumkan dan meningkatkan prestasi pertanyaan DAX anda.
Tujuan utama enjin storan adalah untuk bekerja secara langsung dengan pangkalan data.
Enjin formula tidak mempunyai akses terus kepada pangkalan data, jadi ia biasanya melalui enjin storan untuk tujuan ini.
Enjin storan terdapat dalam dua jenis — mod import dan DirectQuery . Anda boleh mencampur dan memadankan kedua-dua jenis dalam model data yang sama untuk mencipta model komposit.
Isi kandungan
Bekerja Dengan Mod Import Dalam Enjin Storan
Mula-mula, mari bercakap tentang mod import. Ini juga lebih dikenali sebagai Vertipaq, tetapi ia juga dipanggil xVelocity atau In Memory Columnar Database.
Terdapat empat perkara penting untuk difahami tentang cara mod import berfungsi.
Pertama, Vertipaq mencipta salinan data terus daripada sumber data dan menyimpannya dalam RAM dalam format termampat .
Kedua, data yang diproses dalam mod import adalah berdasarkan operasi muat semula yang terakhir . Ini bermakna jika kali terakhir anda memuat semula data anda minggu lepas, maka data yang anda hadapi masih sama dengan data minggu lepas. Ini amat penting jika anda menggunakan persediaan komposit di mana satu jadual berada dalam mod import dan jadual lain dalam mod DirectQuery.
Katakan anda mempunyai jadual Produk, yang telah dimuat semula minggu lepas, dalam mod import. Bagi jadual Jualan, anda memutuskan untuk menyediakannya melalui DirectQuery kerana saiznya. Mari kita andaikan juga bahawa anda membuat laporan anda berdasarkan kedua-dua jadual yang anda bawa masuk lajur Jenama dan membuat ukuran Jumlah Jualan ke atas jadual Jualan yang sama. Anda juga ingin menggambarkan jumlah Jualan berdasarkan Jenama.
Anda perlu memuat semula data yang datang daripada mod import dahulu kerana anda mungkin mendapat data baharu dan dikemas kini daripada DirectQuery, dan data lapuk daripada Vertipaq. Ini akan meninggalkan beberapa baris kosong pada matriks anda dan visualisasi anda.
Perkara seterusnya yang perlu anda ketahui tentang Vertipaq ialah hanya operasi asas seperti , , , atau tersedia secara asli . Ini bermakna jika terdapat operasi lain yang lebih rumit termasuk dalam pelan pertanyaan, enjin storan perlu memanggil enjin formula untuk menyelesaikan bahagian kod ini.
Akhir sekali, enjin storan ialah pangkalan data yang sangat dioptimumkan kerana struktur kolumnar Vertipaq . Ini bermakna semua data adalah menyimpan lajur demi lajur dan bukan baris demi baris. Oleh kerana struktur ini, Vertipaq akan sentiasa lebih pantas daripada sambungan DirectQuery walaupun anda membuat indeks dalam model data hubungan anda.
Bekerja Dengan DirectQuery Dalam Enjin Storan
Pilihan seterusnya yang kami ada dalam perkhidmatan analisis LuckyTemplates ialah DirectQuery. Jika anda menggunakan sambungan DirectQuery, perkhidmatan analisis hanya bertindak sebagai laluan untuk pertanyaan yang dihantar oleh enjin formula.
Jadi katakan anda menulis pertanyaan. Enjin formula akan menjana pelan pertanyaan. Ia kemudiannya akan memajukan pertanyaan kepada enjin storan, yang telah diterjemahkan ke dalam bahasa ibunda pangkalan data. Selalunya, pertanyaan ini datang dalam SQL.
Jika pertanyaan menggunakan DirectQuery, harapkan ia dikemas kini sepanjang masa. Tidak perlu risau tentang bila kali terakhir anda memuat semula data.
Proses mengoptimumkan kod DAX dan model data juga akan bergantung pada cara pangkalan data hubungan dicipta. Jika anda mempunyai indeks dalam lajur anda, maka pertanyaan anda akan sentiasa dioptimumkan. Tetapi jika pangkalan data anda tidak dioptimumkan dari segi membuat laporan menggunakan perkhidmatan analisis atau LuckyTemplates, maka anda boleh menghadapi beberapa cabaran prestasi. Jadi bersungguh-sungguh dalam membuat pangkalan data anda dibina untuk pembangunan laporan.
Bekerja Dengan Model Komposit
Pilihan ketiga ialah mencipta model komposit supaya anda boleh mempunyai satu jadual dalam mod import dan jadual lain dalam DirectQuery.
Apabila anda menggunakan dua jadual daripada sumber yang berbeza, enjin formula akan menghantar satu permintaan kepada Vertipaq dan permintaan lain kepada sumber data DirectQuery. Dalam kedua-dua kes, perkhidmatan analisis juga akan mendapatkan semula cache data daripada Vertipaq dan DirectQuery. Enjin formula kemudiannya akan menggunakan JOIN, , atau sebarang lelaran pada kedua-dua cache data sebelum memberikan hasil kepada pengguna akhir.
Jadi, katakan anda cuba menggambarkan jumlah jualan mengikut jenama produk dalam laporan anda. Enjin formula akan menghantar permintaan kepada Vertipaq, di mana ia akan mendapatkan semula produk, jenama dan kunci produk. Kemudian, daripada DirectQuery, ia akan cuba mendapatkan semula jualan, harga bersih, kuantiti jualan dan kunci produk jualan.
Sebaik sahaja ia mempunyai dua cache data berdasarkan kunci produk, ia akan menyertai dua cache data dan mengira jumlah jualan. Ia kemudiannya akan membentangkan hasilnya kepada pengguna akhir.
Perkara Kritikal Lain Mengenai Enjin Storan
Memandangkan kami telah membincangkan jenisnya yang berbeza, terdapat beberapa faktor kritikal lain yang perlu anda ketahui tentang enjin storan untuk membantu anda mengoptimumkan pertanyaan DAX anda.
Seperti yang saya nyatakan sebelum ini, enjin storan menyediakan cache data kembali ke enjin formula dalam bentuk cache data yang tidak dimampatkan. Apabila anda berada dalam mod import, permintaan yang dihantar semula ke Vertipaq dalam proses dilaksanakan dalam bahasa xmSQL.
Bahasa xmSQL agak serupa dengan SQL tetapi tidak sama sepenuhnya. Kami akan bercakap tentang xmSWL secara terperinci apabila kami bercakap tentang rancangan pertanyaan dalam tutorial yang berbeza.
Ia juga penting untuk diingat bahawa enjin storan menggunakan semua teras yang tersedia dalam CPU anda. Keupayaan untuk menggunakan berbilang teras adalah bermanfaat sekiranya anda mempunyai berbilang segmen dalam model data anda.
Katakan anda mempunyai jadual dalam LuckyTemplates dengan 12 juta baris. Jadual ini kemudiannya akan dibahagikan kepada 12 segmen kerana dalam kedua-dua Power Pivot dan LuckyTemplates, setiap segmen memuatkan 1 juta baris. Ini tidak seperti perkhidmatan analisis secara umum, di mana satu segmen memuatkan 8 juta baris.
Jadi jika saya mempunyai enam teras dalam CPU saya, kesemua enam teras akan mengimbas enam pertama daripada 12 segmen pada masa yang sama. Setelah selesai, mereka akan beralih ke enam segmen seterusnya.
Tetapi jika saya bekerja dengan perkhidmatan analisis di mana segmen lalai memegang 8 juta baris, hanya dua daripada enam teras saya akan digunakan — satu segmen akan memproses 8 juta baris manakala yang lain memproses 4 juta.
Mengusahakan Pertanyaan Rumit
Terdahulu, saya menyebut bahawa mod import hanya menyokong operasi asas seperti MIN, MAX, SUM, COUNT dan GROUPBY. Jadi apa yang berlaku jika anda mengerjakan pertanyaan yang lebih rumit?
Katakan anda memutuskan untuk menggunakan pernyataan IF dalam konteks baris atau lelaran bersarang seperti SUMX pada jadual Produk dan Jualan.
Dalam kes ini, enjin storan tidak akan dapat menyelesaikan pertanyaan itu sendiri. Ia kemudiannya akan memanggil enjin formula, yang akan mula menyelesaikan baris pengiraan kompleks demi baris di dalam enjin storan. Sesetengah mungkin berpendapat bahawa ini adalah senario yang menggalakkan, dengan kedua-dua enjin berfungsi bersama - tetapi ini jauh dari kebenaran.
Anda lihat, apabila ini berlaku, cache data yang dihasilkan oleh enjin storan tidak boleh dicache sekiranya terdapat callbackdataID dalam pertanyaan tertentu itu. Jadi jika anda menyegarkan semula visual, pengiraan yang sama perlu dilakukan oleh kedua-dua enjin formula dan enjin storan, walaupun anda baru sahaja melaksanakan pertanyaan yang sama beberapa saat yang lalu. Ini akan membawa kepada kelewatan prestasi dan pengalaman pengguna yang buruk.
Perhatikan juga bahawa enjin storan tidak mengetahui sama ada pertanyaan telah dilaksanakan menggunakan DAX atau MDX. Seperti yang kami nyatakan sebelum ini, adalah tugas enjin formula untuk menukar pertanyaan kepada bahasa yang betul sebelum meneruskan pelan pertanyaan.
Akhir sekali, enjin formula menghantar pertanyaan ke dalam enjin storan satu demi satu. Ini bermakna mempunyai berbilang segmen adalah lebih baik supaya masa pengimbasan keseluruhan dalam Vertipaq dapat dikurangkan, dengan berbilang segmen diimbas pada masa yang sama.
DAX Untuk LuckyTemplates: Mengoptimumkan Menggunakan Enjin Formula dalam DAX Studio
Teknik Pengoptimuman Pertanyaan DAX Dan
Prestasi Pertanyaan Pelajaran Serta Persediaan Studio DAX
Kesimpulan
Memahami selok-belok enjin storan benar-benar membantu dalam mengoptimumkan pertanyaan DAX anda, terutamanya jika anda menggunakan DAX Studio. Jika anda juga telah melalui tutorial yang menerangkan enjin formula, anda boleh membuat keputusan yang lebih baik tentang cara membuat pertanyaan yang berprestasi lebih baik.
Walaupun enjin formula berfungsi sebagai enjin peringkat teratas, tidak syak lagi ia tidak dapat berfungsi sebaik mungkin jika kita tidak memaksimumkan kedua-dua enjin.
Semua yang terbaik,
Apa Itu Diri Dalam Python: Contoh Dunia Sebenar
Anda akan belajar cara menyimpan dan memuatkan objek daripada fail .rds dalam R. Blog ini juga akan membincangkan cara mengimport objek dari R ke LuckyTemplates.
Dalam tutorial bahasa pengekodan DAX ini, pelajari cara menggunakan fungsi GENERATE dan cara menukar tajuk ukuran secara dinamik.
Tutorial ini akan merangkumi cara menggunakan teknik Visual Dinamik Berbilang Thread untuk mencipta cerapan daripada visualisasi data dinamik dalam laporan anda.
Dalam artikel ini, saya akan menjalankan konteks penapis. Konteks penapis ialah salah satu topik utama yang perlu dipelajari oleh mana-mana pengguna LuckyTemplates pada mulanya.
Saya ingin menunjukkan cara perkhidmatan dalam talian LuckyTemplates Apps boleh membantu dalam mengurus laporan dan cerapan berbeza yang dijana daripada pelbagai sumber.
Ketahui cara untuk menyelesaikan perubahan margin keuntungan anda menggunakan teknik seperti mengukur percabangan dan menggabungkan formula DAX dalam LuckyTemplates.
Tutorial ini akan membincangkan tentang idea pewujudan cache data dan cara ia mempengaruhi prestasi DAX dalam memberikan hasil.
Jika anda masih menggunakan Excel sehingga sekarang, maka inilah masa terbaik untuk mula menggunakan LuckyTemplates untuk keperluan pelaporan perniagaan anda.
Apakah LuckyTemplates Gateway? Semua yang Anda Perlu Tahu