ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้เกี่ยวกับเทคนิคการบีบอัด LuckyTemplates ต่างๆ ในที่ช่วยเพิ่มประสิทธิภาพรายงานของคุณ
หลังจากโหลดข้อมูลทีละกลุ่มโดย Analysis Services ใน LuckyTemplates Power Pivot และSSASแล้ว เหตุการณ์สองเหตุการณ์จะเกิดขึ้น วิธีแรกคือพวกเขาพยายามใช้วิธีการเข้ารหัสต่างๆ เพื่อบีบอัดคอลัมน์เพื่อลดขนาด RAM โดยรวม ประการที่สองคือพวกเขาพยายามหาทุนจากลำดับการจัดเรียงที่ดีที่สุดซึ่งรวมค่าที่ซ้ำกัน วิธีนี้ยังเพิ่มการบีบอัดและลดแรงกดบนหน่วยความจำ
มีเทคนิคการบีบอัดต่างๆ ที่ใช้โดย Analysis Services บทช่วยสอนนี้ครอบคลุมสามวิธี โดยเฉพาะอย่างยิ่ง ได้แก่ การเข้ารหัสค่า การเข้ารหัสความยาวเรียกใช้ และการเข้ารหัสพจนานุกรม ในส่วนสุดท้ายของบทช่วยสอนนี้จะครอบคลุมถึงวิธีการเรียงลำดับการทำงานใน Analysis Services
สารบัญ
เทคนิคการบีบอัด LuckyTemplates #1: การเข้ารหัสค่า
อันแรกเรียกว่าการเข้ารหัสค่า
การเข้ารหัสค่าจะค้นหาความสัมพันธ์ทางคณิตศาสตร์ระหว่างแต่ละค่าในคอลัมน์เพื่อลดหน่วยความจำ นี่คือตัวอย่างใน Microsoft Excel:
คอลัมน์นี้ต้องการ 16,384 บิตเพื่อเก็บค่าต่างๆ
ในการคำนวณบิตที่ต้องการ ขั้นแรกให้ใช้ฟังก์ชัน MAX() ใน Excel เพื่อรับค่าสูงสุดในคอลัมน์ ในกรณีนี้คือ 9144 จากนั้นใช้ฟังก์ชัน POWER() เพื่อคำนวณบิตที่ต้องการ ใช้อาร์กิวเมนต์ POWER(2, X) โดยที่ X คือค่าบวกใดๆ ที่จะส่งคืนคำตอบที่มากกว่าค่า MAX ในกรณีนี้ X ยังแสดงถึงบิตที่ต้องการด้วย สำหรับตัวอย่างนี้ ค่าของ X คือ 14 ซึ่งได้ผลลัพธ์เป็น16,384 ดังนั้นคอลัมน์จึงต้องการพื้นที่เก็บข้อมูล 14 บิต
หากต้องการลดบิตที่ต้องการโดยใช้การเข้ารหัสค่า VertiPaq จะค้นหาค่า MIN ในคอลัมน์และลบออกจากแต่ละค่า ในกรณีนี้ ค่า MIN ในคอลัมน์คือ 9003 หากคุณลบค่านี้ออกจากคอลัมน์ ค่านี้จะส่งคืนค่าเหล่านี้:
เมื่อใช้ฟังก์ชันและอาร์กิวเมนต์เดียวกัน คุณจะเห็นว่าสำหรับคอลัมน์ใหม่ ค่า MAX คือ 141 และการใช้8เป็นค่าของ X จะได้ผลลัพธ์เป็น256 ดังนั้นคอลัมน์ใหม่ต้องการเพียง 8 บิต
คุณสามารถดูการบีบอัดที่สองเมื่อเทียบกับคอลัมน์แรก
เมื่อข้อมูลถูกบีบอัดและคุณพยายามค้นหาคอลัมน์ใหม่Storage Engine หรือ Vertipaqจะสแกนคอลัมน์นี้ พวกเขาจะไม่เพียงแค่ส่งกลับค่าใหม่ของคอลัมน์ แต่จะบวกค่าที่ลบออกก่อนที่จะส่งคืนผลลัพธ์กลับไปยังผู้ใช้
อย่างไรก็ตาม การเข้ารหัสค่าจะทำงานเฉพาะในคอลัมน์ที่มีเลขจำนวนเต็มหรือค่าที่มีทศนิยมคงที่เท่านั้น
เทคนิคการบีบอัด LuckyTemplates #2: เรียกใช้การเข้ารหัสความยาว
วิธีการเข้ารหัสที่สองเรียกว่า Run Length Encoding
Run Length Encodingสร้างโครงสร้างข้อมูลที่ประกอบด้วยค่าที่แตกต่างกัน คอลัมน์ Start และคอลัมน์ Count
ลองมาเป็นตัวอย่าง:
ในกรณีนี้ จะระบุว่า มีค่า สีแดง หนึ่ง ค่าในแถวแรก จากนั้นพบว่า ค่า สีดำเริ่มต้นที่แถวที่สองและพร้อมใช้งานสำหรับสี่เซลล์ถัดไป ดำเนินการต่อไปยังค่าที่สามสีน้ำเงินซึ่งเริ่มต้นที่แถวที่หกและพร้อมใช้งานสำหรับสามแถวถัดไป และดำเนินต่อไปจนกว่าจะถึงค่าสุดท้ายในคอลัมน์
ดังนั้น แทนที่จะจัดเก็บทั้งคอลัมน์ ระบบจะสร้างโครงสร้างข้อมูลที่มีเพียงข้อมูลเกี่ยวกับตำแหน่งที่ค่าใดค่าหนึ่งเริ่มต้นและค่าสิ้นสุด และจำนวนค่าที่ซ้ำกัน
สำหรับคอลัมน์ที่มีโครงสร้างเดียวกัน สามารถบีบอัดข้อมูลเพิ่มเติมได้โดยการจัดเรียงค่าตามลำดับจากน้อยไปหามากหรือจากมากไปน้อย
ด้วยคอลัมน์ที่เรียงลำดับอย่างถูกต้องนี้ คุณจะเห็นว่าวิธีการเข้ารหัสความยาวการเรียกใช้จะส่งคืนโครงสร้างข้อมูลที่มีแถวน้อยกว่าหนึ่งแถว
ดังนั้น หากคุณต้องจัดการกับค่าที่แตกต่างกันจำนวนมาก ขอแนะนำให้จัดเรียงคอลัมน์ด้วยวิธีที่เหมาะสมที่สุดเท่าที่จะเป็นไปได้ สิ่งนี้จะทำให้คุณมีโครงสร้างข้อมูลที่มีแถวน้อยลง ซึ่งจะทำให้ใช้ RAM น้อยลง
ไม่สามารถใช้การเข้ารหัส Run Length กับคีย์หลักได้เนื่องจากคอลัมน์คีย์หลักประกอบด้วยค่าเฉพาะเท่านั้น ดังนั้น แทนที่จะเก็บหนึ่งแถวสำหรับแต่ละค่า ก็จะเก็บคอลัมน์ตามเดิม
เทคนิคการบีบอัด LuckyTemplates #3: การเข้ารหัสพจนานุกรม
วิธีการเข้ารหัสที่สามเรียกว่าการเข้ารหัสพจนานุกรม
การเข้ารหัสพจนานุกรมสร้างโครงสร้างคล้ายพจนานุกรมที่มีค่าเฉพาะของคอลัมน์ นอกจากนี้ยังกำหนดดัชนีให้กับค่าเฉพาะนั้น
จากตัวอย่างก่อนหน้านี้ มาดูกันว่าการเข้ารหัสพจนานุกรมทำงานอย่างไร ในกรณีนี้ ค่าสีแดง สีดำ และสีน้ำเงินจะได้รับดัชนีเป็น 0, 1 และ 2 ตามลำดับ
จากนั้นจะสร้างโครงสร้างข้อมูลที่คล้ายกับการเข้ารหัสความยาวของการเรียกใช้ อย่างไรก็ตาม แทนที่จะจัดเก็บค่าจริง การเข้ารหัสพจนานุกรมจะจัดเก็บดัชนีที่กำหนดของแต่ละค่า
สิ่งนี้ยังช่วยลดการใช้ RAM เนื่องจากตัวเลขใช้พื้นที่น้อยกว่าค่าสตริง
การเข้ารหัสพจนานุกรมยังทำให้ชนิดข้อมูลแบบตารางเป็นอิสระต่อกัน นั่นคือ ไม่ว่าคุณจะมีคอลัมน์ที่สามารถจัดเก็บในประเภทข้อมูลที่แตกต่างกันหรือไม่ ก็ไม่เป็นไร เนื่องจากโครงสร้างข้อมูลจะเก็บเฉพาะค่าดัชนีเท่านั้น
อย่างไรก็ตาม แม้ว่าจะเป็นอิสระจากกัน ชนิดข้อมูลจะยังคงมีผลต่อขนาดของพจนานุกรม ขนาดพจนานุกรม (หรือโครงสร้างข้อมูล) จะผันผวน ขึ้นอยู่กับชนิดข้อมูลที่คุณเลือกบันทึกคอลัมน์ แต่ขนาดของคอลัมน์จะยังคงเท่าเดิม
ดังนั้นขึ้นอยู่กับประเภทข้อมูลที่คุณเลือก เมื่อใช้การเข้ารหัสพจนานุกรมในคอลัมน์ คุณสามารถใช้การเข้ารหัสความยาวการเรียกใช้ได้ในภายหลัง
ในกรณีนี้ Analysis Services จะสร้างโครงสร้างข้อมูลสองแบบ ขั้นแรกจะสร้างพจนานุกรม จากนั้นจึงใช้ Run Length Encoding เพื่อเพิ่มการบีบอัดคอลัมน์เพิ่มเติม
เรียงลำดับในบริการวิเคราะห์
สำหรับส่วนสุดท้ายของบทช่วยสอนนี้ เรามาคุยกันถึงวิธีการที่ Analysis Services ตัดสินใจเลือกวิธีการจัดเรียงข้อมูลที่เหมาะสมที่สุด
ตัวอย่างเช่น ลองดูที่คอลัมน์ที่มีค่าสีแดง สีน้ำเงิน สีดำ สีเขียว และสีชมพู มีการกำหนดหมายเลข 1 ถึง 5 ให้กับพวกเขาด้วย สิ่งนี้ทำหน้าที่เป็นพจนานุกรมของคอลัมน์ของเรา
ตอนนี้เติมทั้งคอลัมน์ใน Excel ด้วยค่าเหล่านี้ ใช้อาร์กิวเมนต์นี้เพื่อสร้างคอลัมน์ที่มีค่าเหล่านี้แบบสุ่ม
ลากสูตรจนถึงแถวสุดท้าย คลิกตกลงหากหน้าต่างป๊อปอัปการทำงานขนาดใหญ่ ปรากฏขึ้น ตอนนี้จะมีลักษณะดังนี้:
ถัดไป คัดลอกทั้งคอลัมน์แล้ววางเป็นค่า
ตอนนี้ ถ้าคุณไปที่ ตัวเลือก Fileในเอกสาร Excel แล้วคลิกInfo คุณจะ เห็นว่าคอลัมน์นั้นใช้พื้นที่14.1MB
หากต้องการลดปริมาณ RAM ที่ใช้ไป คุณสามารถจัดเรียงคอลัมน์จาก A ถึง Z หากคุณตรวจสอบขนาด อีกครั้ง คุณจะเห็นว่ามันลดลงเหลือ12.5 MB
การ ลดลง 1.9 MBอาจดูไม่มากนัก นี่เป็นเพราะตัวอย่างใช้คอลัมน์เดียวใน Excel เพื่อสาธิต Excel จำกัดเพียง 1 ล้านแถวเท่านั้น อย่างไรก็ตาม ใน LuckyTemplates ข้อมูลของคุณสามารถประกอบด้วยหลายพันล้านแถวและคอลัมน์ การลดลงของพื้นที่ที่ใช้เพิ่มขึ้นอย่างทวีคูณ
บทสรุป
เมื่อข้อมูลของคุณได้รับการจัดเรียงในลักษณะที่เหมาะสมที่สุดแล้ว Analysis Services จะใช้เทคนิคการบีบอัดหนึ่งในสามแบบโดยขึ้นอยู่กับประเภทข้อมูล
การทำเช่นนั้นจะเพิ่มการบีบอัดข้อมูลของคุณ ซึ่งช่วยลดจำนวนหน่วยความจำที่ใช้ในอุปกรณ์ของคุณได้อย่างมาก สิ่งนี้ทำให้รายงานของคุณเหมาะสมยิ่งขึ้น ทำให้เรียกใช้และโหลดได้ง่ายขึ้น
ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates
ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก
บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ
ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น
ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร
เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates
บทช่วยสอนนี้จะหารือเกี่ยวกับแนวคิดของการทำให้แคชข้อมูลเป็นรูปธรรมและวิธีที่สิ่งเหล่านี้ส่งผลต่อประสิทธิภาพของ DAX ในการให้ผลลัพธ์
หากคุณยังคงใช้ Excel อยู่จนถึงตอนนี้ นี่เป็นเวลาที่ดีที่สุดในการเริ่มใช้ LuckyTemplates สำหรับความต้องการในการรายงานทางธุรกิจของคุณ
เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้