OLAP-CUBE (การรายงานการจัดการแบบไดนามิก) ความรู้เบื้องต้นเกี่ยวกับการวิเคราะห์หลายตัวแปร

โดยทั่วไปแล้ว ผู้เชี่ยวชาญทุกคนรู้ดีว่า OLAP คืออะไรในปัจจุบัน อย่างน้อยแนวคิดของ “OLAP” และ “ข้อมูลหลายมิติ” ก็เชื่อมโยงกันอย่างแน่นแฟ้นในใจของเรา อย่างไรก็ตาม การที่หัวข้อนี้กำลังถูกหยิบยกขึ้นมาอีกครั้ง ผมหวังว่าจะได้รับการอนุมัติจากผู้อ่านส่วนใหญ่ เพราะการที่แนวคิดของบางสิ่งจะไม่ล้าสมัยไปตามเวลา คุณต้องสื่อสารกับเป็นระยะๆ คนฉลาดหรืออ่านบทความในสิ่งพิมพ์ดีๆ...

คลังข้อมูล (สถานที่ของ OLAP ในโครงสร้างข้อมูลขององค์กร)

คำว่า "OLAP" มีความเชื่อมโยงกับคำว่า "คลังข้อมูล" (คลังข้อมูล) อย่างแยกไม่ออก

นี่คือคำจำกัดความที่กำหนดโดย Bill Inmon “บิดาผู้ก่อตั้ง” แห่งคลังข้อมูล: “คลังข้อมูลคือการรวบรวมข้อมูลเฉพาะโดเมน มีกำหนดเวลา และไม่เปลี่ยนรูป เพื่อสนับสนุนการตัดสินใจของฝ่ายบริหาร”

ข้อมูลในคลังสินค้ามาจากระบบปฏิบัติการ (ระบบ OLTP) ซึ่งได้รับการออกแบบมาเพื่อทำให้กระบวนการทางธุรกิจเป็นแบบอัตโนมัติ นอกจากนี้ พื้นที่เก็บข้อมูลสามารถเติมเต็มจากแหล่งภายนอก เช่น รายงานทางสถิติ

เหตุใดจึงสร้างคลังข้อมูล - เพราะคลังข้อมูลเหล่านี้มีข้อมูลที่ซ้ำซ้อนอย่างเห็นได้ชัดซึ่ง "มีอยู่" อยู่แล้วในฐานข้อมูลหรือไฟล์ระบบปฏิบัติการ คำตอบอาจสั้นๆ ก็คือ เป็นไปไม่ได้หรือยากมากที่จะวิเคราะห์ข้อมูลจากระบบปฏิบัติการโดยตรง นี่เป็นเพราะสาเหตุหลายประการ รวมถึงการกระจายตัวของข้อมูล การจัดเก็บในรูปแบบ DBMS ที่แตกต่างกัน และใน "มุม" ที่แตกต่างกันของเครือข่ายองค์กร แต่ถึงแม้ว่าองค์กรจะจัดเก็บข้อมูลทั้งหมดไว้บนเซิร์ฟเวอร์ฐานข้อมูลกลาง (ซึ่งหาได้ยากมาก) นักวิเคราะห์ก็แทบจะไม่เข้าใจโครงสร้างที่ซับซ้อนและบางครั้งก็ทำให้เกิดความสับสนอย่างแน่นอน ผู้เขียนมีประสบการณ์ค่อนข้างเศร้าในการพยายาม "ป้อน" นักวิเคราะห์ผู้หิวโหยด้วยข้อมูล "ดิบ" จากระบบปฏิบัติการ - มันกลับกลายเป็นว่า "มากเกินไปสำหรับพวกเขา"

ดังนั้น วัตถุประสงค์ของพื้นที่เก็บข้อมูลคือเพื่อจัดเตรียม “วัตถุดิบ” สำหรับการวิเคราะห์ไว้ในที่เดียวและในโครงสร้างที่เรียบง่ายและเข้าใจได้ Ralph Kimball ในคำนำของหนังสือ "The Data Warehouse Toolkit" เขียนว่าหากหลังจากอ่านหนังสือทั้งเล่มแล้ว ผู้อ่านเข้าใจเพียงสิ่งเดียวเท่านั้น กล่าวคือ โครงสร้างของคลังสินค้าควรเรียบง่าย ผู้เขียนจะพิจารณาของเขา งานเสร็จสมบูรณ์

มีอีกเหตุผลหนึ่งที่ปรับรูปลักษณ์ของสถานที่จัดเก็บแยกต่างหาก - การสืบค้นเชิงวิเคราะห์ที่ซับซ้อนสำหรับข้อมูลการดำเนินงานทำให้งานปัจจุบันของ บริษัท ช้าลงการบล็อกตารางเป็นเวลานานและการยึดทรัพยากรเซิร์ฟเวอร์

ในความคิดของฉัน พื้นที่เก็บข้อมูลไม่จำเป็นต้องหมายถึงการสะสมข้อมูลจำนวนมหาศาล - สิ่งสำคัญคือสะดวกในการวิเคราะห์ โดยทั่วไปแล้ว มีคำศัพท์แยกต่างหากสำหรับสถานที่จัดเก็บข้อมูลขนาดเล็ก นั่นคือ Data Marts (ตู้ข้อมูล) แต่ในทางปฏิบัติของรัสเซีย คุณอาจไม่ได้ยินคำนี้บ่อยนัก

OLAP - เครื่องมือวิเคราะห์ที่สะดวก

การรวมศูนย์และการจัดโครงสร้างที่สะดวกไม่ใช่ทั้งหมดที่นักวิเคราะห์ต้องการ เขายังคงต้องการเครื่องมือในการดูและแสดงข้อมูลเป็นภาพ รายงานแบบเดิม แม้แต่รายงานที่สร้างขึ้นบนพื้นที่เก็บข้อมูลเดียวก็ยังขาดสิ่งหนึ่งที่สำคัญ นั่นก็คือความยืดหยุ่น ไม่สามารถ "บิด" "ขยาย" หรือ "ยุบ" เพื่อให้ได้มุมมองข้อมูลที่ต้องการ แน่นอนคุณสามารถโทรหาโปรแกรมเมอร์ได้ (ถ้าเขาต้องการมา) และเขา (ถ้าเขาไม่ยุ่ง) จะทำรายงานใหม่เร็วพอ - พูดภายในหนึ่งชั่วโมง (ฉันกำลังเขียนสิ่งนี้และฉันไม่เชื่อ ด้วยตัวเอง - ในชีวิตมันไม่ได้เกิดขึ้นเร็วขนาดนั้น ให้เวลาเขาสามชั่วโมงเถอะ) . ปรากฎว่านักวิเคราะห์สามารถทดสอบแนวคิดได้ไม่เกินสองแนวคิดต่อวัน และเขา (หากเขาเป็นนักวิเคราะห์ที่ดี) ก็สามารถคิดไอเดียดังกล่าวได้หลายไอเดียต่อชั่วโมง และยิ่งนักวิเคราะห์เห็น "ส่วน" และ "ส่วน" ของข้อมูลที่มากขึ้น เขาก็จะมีแนวคิดมากขึ้น ซึ่งในทางกลับกัน ก็ต้องอาศัย "ส่วน" ในการตรวจสอบมากขึ้นเรื่อยๆ ถ้าเพียงเขามีเครื่องมือที่ช่วยให้เขาขยายและยุบข้อมูลได้อย่างง่ายดายและสะดวก! OLAP ทำหน้าที่เป็นเครื่องมือดังกล่าว

แม้ว่า OLAP ไม่ใช่คุณลักษณะที่จำเป็นของคลังข้อมูล แต่ก็มีการใช้มากขึ้นในการวิเคราะห์ข้อมูลที่สะสมในคลังสินค้า

ส่วนประกอบที่รวมอยู่ในที่เก็บทั่วไปจะแสดงในรูปที่ 1 1.

ข้าว. 1. โครงสร้างคลังข้อมูล

ข้อมูลการปฏิบัติงานถูกรวบรวมจากแหล่งต่างๆ ล้างข้อมูล บูรณาการ และจัดเก็บไว้ในที่จัดเก็บเชิงสัมพันธ์ นอกจากนี้ยังพร้อมสำหรับการวิเคราะห์โดยใช้เครื่องมือการรายงานต่างๆ อีกด้วย จากนั้นข้อมูล (ทั้งหมดหรือบางส่วน) จะถูกจัดเตรียมสำหรับการวิเคราะห์ OLAP สามารถโหลดลงในฐานข้อมูล OLAP พิเศษหรือจัดเก็บไว้ในที่เก็บข้อมูลเชิงสัมพันธ์ได้ องค์ประกอบที่สำคัญที่สุดคือข้อมูลเมตา เช่น ข้อมูลเกี่ยวกับโครงสร้าง ตำแหน่ง และการเปลี่ยนแปลงของข้อมูล ด้วยเหตุนี้จึงมั่นใจได้ถึงการมีปฏิสัมพันธ์ที่มีประสิทธิภาพของส่วนประกอบการจัดเก็บข้อมูลต่างๆ

โดยสรุป เราสามารถกำหนด OLAP เป็นชุดเครื่องมือสำหรับการวิเคราะห์ข้อมูลหลายมิติที่สะสมในคลังสินค้า ตามทฤษฎีแล้ว เครื่องมือ OLAP สามารถนำไปใช้กับข้อมูลการปฏิบัติงานหรือเครื่องมือเหล่านั้นได้โดยตรง สำเนาถูกต้อง(เพื่อไม่ให้รบกวนผู้ใช้งาน) แต่ด้วยเหตุนี้เราจึงเสี่ยงที่จะเหยียบคราดที่อธิบายไว้ข้างต้น เช่น เริ่มวิเคราะห์ข้อมูลการปฏิบัติงานที่ไม่เหมาะสำหรับการวิเคราะห์โดยตรง

ความหมายและแนวคิดพื้นฐานของ OLAP

ก่อนอื่น มาถอดรหัสกันก่อน: OLAP คือการประมวลผลการวิเคราะห์แบบออนไลน์ กล่าวคือ การวิเคราะห์ข้อมูลการปฏิบัติงาน หลักการกำหนด 12 ประการของ OLAP ถูกกำหนดขึ้นในปี 1993 โดย E.F. Codd "ผู้ประดิษฐ์" ฐานข้อมูลเชิงสัมพันธ์ ต่อมา คำจำกัดความได้รับการแก้ไขใหม่ในสิ่งที่เรียกว่าการทดสอบ FASMI ซึ่งกำหนดให้แอปพลิเคชัน OLAP ต้องมีความสามารถในการวิเคราะห์ข้อมูลหลายมิติที่ใช้ร่วมกันได้อย่างรวดเร็ว ()

การทดสอบฟาสมี

เร็ว(เร็ว) - การวิเคราะห์ควรดำเนินการอย่างรวดเร็วเท่าๆ กันในทุกด้านของข้อมูล เวลาตอบสนองที่ยอมรับได้คือ 5 วินาทีหรือน้อยกว่า

การวิเคราะห์(การวิเคราะห์) - จะต้องเป็นไปได้ที่จะดำเนินการวิเคราะห์เชิงตัวเลขและสถิติประเภทพื้นฐานที่กำหนดล่วงหน้าโดยผู้พัฒนาแอปพลิเคชันหรือกำหนดโดยผู้ใช้อย่างอิสระ

แบ่งปันแล้ว(แชร์) - ผู้ใช้จำนวนมากต้องมีสิทธิ์เข้าถึงข้อมูล ในขณะที่จำเป็นต้องควบคุมการเข้าถึงข้อมูลที่เป็นความลับ

หลายมิติ(หลายมิติ) เป็นคุณลักษณะหลักที่สำคัญที่สุดของ OLAP

ข้อมูล(ข้อมูล) - แอปพลิเคชันจะต้องสามารถเข้าถึงข้อมูลที่จำเป็นใด ๆ โดยไม่คำนึงถึงปริมาณและตำแหน่งการจัดเก็บ

OLAP = มุมมองหลายมิติ = Cube

OLAP มอบวิธีที่สะดวกและรวดเร็วในการเข้าถึง ดู และวิเคราะห์ข้อมูลทางธุรกิจ ผู้ใช้จะได้รับแบบจำลองข้อมูลที่เป็นธรรมชาติและใช้งานง่าย โดยจัดเรียงข้อมูลไว้ในรูปแบบของลูกบาศก์หลายมิติ (Cubes) แกนของระบบพิกัดหลายมิติเป็นคุณลักษณะหลักของกระบวนการทางธุรกิจที่วิเคราะห์ ตัวอย่างเช่น สำหรับการขาย อาจเป็นผลิตภัณฑ์ ภูมิภาค ประเภทผู้ซื้อ เวลาถูกใช้เป็นมิติหนึ่ง ที่จุดตัดของแกน - มิติ (มิติ) - มีข้อมูลที่อธิบายลักษณะเชิงปริมาณของกระบวนการ - การวัด (การวัด) นี่อาจเป็นปริมาณการขายเป็นชิ้นหรือเป็นเงื่อนไขทางการเงิน ยอดคงเหลือ ต้นทุน ฯลฯ ผู้ใช้ที่วิเคราะห์ข้อมูลสามารถ "ตัด" คิวบ์ไปในทิศทางที่ต่างกัน รับข้อมูลสรุป (เช่น ตามปี) หรือในทางกลับกัน มีรายละเอียด ( ตามสัปดาห์ ) ข้อมูลและดำเนินการจัดการอื่น ๆ ที่อยู่ในใจของเขาในระหว่างกระบวนการวิเคราะห์

ตามการวัดในลูกบาศก์สามมิติที่แสดงในรูปที่. 2 มีการใช้ยอดขาย และเวลา ผลิตภัณฑ์และร้านค้าถูกใช้เป็นมิติ การวัดผลจะแสดงในระดับเฉพาะของการจัดกลุ่ม ได้แก่ ผลิตภัณฑ์จะถูกจัดกลุ่มตามหมวดหมู่ ร้านค้าตามประเทศ และข้อมูลระยะเวลาในการทำธุรกรรมตามเดือน อีกไม่นานเราจะดูรายละเอียดเพิ่มเติมเกี่ยวกับระดับของการจัดกลุ่ม (ลำดับชั้น)


ข้าว. 2. ตัวอย่างคิวบ์

"ตัด" ลูกบาศก์

แม้แต่ลูกบาศก์สามมิติก็ยากที่จะแสดงบนหน้าจอคอมพิวเตอร์เพื่อให้มองเห็นค่าของการวัดที่น่าสนใจ เราจะพูดอะไรเกี่ยวกับลูกบาศก์ที่มีมากกว่าสามมิติ? ตามกฎแล้วในการแสดงภาพข้อมูลที่เก็บไว้ในคิวบ์ จะใช้สองมิติที่คุ้นเคย เช่น ตาราง มุมมองที่มีแถวลำดับชั้นที่ซับซ้อนและส่วนหัวของคอลัมน์

การแสดงลูกบาศก์สองมิติสามารถรับได้โดยการ "ตัด" มันข้ามแกน (มิติ) หนึ่งแกนขึ้นไป: เราแก้ไขค่าของทุกมิติยกเว้นสองและเราจะได้ตารางสองมิติปกติ แกนนอนของตาราง (ส่วนหัวของคอลัมน์) แสดงถึงมิติหนึ่ง แกนตั้ง (ส่วนหัวของแถว) แสดงถึงอีกมิติหนึ่ง และเซลล์ตารางแสดงถึงค่าของการวัด ในกรณีนี้ ชุดของการวัดจะถือว่าเป็นหนึ่งในมิติ - เราจะเลือกหนึ่งหน่วยวัดที่จะแสดง (จากนั้นเราสามารถวางสองมิติในส่วนหัวของแถวและคอลัมน์) หรือแสดงหลายหน่วยวัด (และจากนั้นหนึ่งใน แกนตารางจะถูกครอบครองโดยชื่อของการวัดและค่าอื่น ๆ ของมิติ "ไม่ได้เจียระไน" เท่านั้น)

ลองดูที่รูป 3 - นี่คือลูกบาศก์สองมิติสำหรับหนึ่งหน่วยวัด - ยอดขายต่อหน่วย (ชิ้นที่ขาย) และสองมิติ "ไม่ได้เจียระไน" - ร้านค้า (ร้านค้า) และเวลา (เวลา)


ข้าว. 3. ชิ้นลูกบาศก์ 2D สำหรับการวัดหนึ่งครั้ง

ในรูป รูปที่ 4 แสดงมิติที่ "ไม่ได้เจียระไน" เพียงมิติเดียว - ร้านค้า แต่แสดงค่าของการวัดต่างๆ - ยอดขายต่อหน่วย (หน่วยที่ขาย) ยอดขายในร้าน (จำนวนการขาย) และต้นทุนร้านค้า (ค่าใช้จ่ายร้านค้า)


ข้าว. 4. ชิ้นลูกบาศก์ 2D สำหรับการวัดหลายแบบ

การแสดงลูกบาศก์สองมิติยังเป็นไปได้เมื่อมีมิติมากกว่าสองมิติที่ยังคง "ไม่ได้เจียระไน" ในกรณีนี้ ลูกบาศก์ "ตัด" สองมิติขึ้นไปจะถูกวางบนแกนชิ้น (แถวและคอลัมน์) - ดูรูปที่ 1 5.


ข้าว. 5. ชิ้นลูกบาศก์ 2D ที่มีหลายมิติบนแกนเดียว

แท็ก

ค่าที่ "วาง" ตามมิติเรียกว่าสมาชิกหรือป้ายกำกับ ป้ายกำกับถูกใช้ทั้งเพื่อ "ตัด" คิวบ์และเพื่อจำกัด (กรอง) ข้อมูลที่เลือก - เมื่ออยู่ในมิติที่ยังคง "ไม่ได้เจียระไน" เราไม่ได้สนใจค่าทั้งหมด แต่อยู่ในชุดย่อยของค่าเหล่านั้น เช่น สามเมือง จากหลายสิบ ค่าป้ายกำกับจะปรากฏในมุมมองคิวบ์ 2D เป็นส่วนหัวของแถวและคอลัมน์

ลำดับชั้นและระดับ

ป้ายกำกับสามารถรวมกันเป็นลำดับชั้นที่ประกอบด้วยหนึ่งระดับขึ้นไป ตัวอย่างเช่น ป้ายกำกับของมิติร้านค้าจะถูกจัดกลุ่มเป็นลำดับชั้นตามระดับต่างๆ ตามธรรมชาติ:

ประเทศ

สถานะ

เมือง

เก็บ.

ค่ารวมจะคำนวณตามระดับของลำดับชั้น เช่น ปริมาณการขายสำหรับสหรัฐอเมริกา (ระดับ "ประเทศ") หรือสำหรับแคลิฟอร์เนีย (ระดับ "รัฐ") คุณสามารถใช้ลำดับชั้นมากกว่าหนึ่งลำดับชั้นในมิติเดียว เช่น สำหรับเวลา: (ปี ไตรมาส เดือน วัน) และ (ปี สัปดาห์ วัน)

สถาปัตยกรรมของแอปพลิเคชัน OLAP

ทุกสิ่งที่กล่าวไว้ข้างต้นเกี่ยวกับ OLAP เกี่ยวข้องกับการนำเสนอข้อมูลหลายมิติเป็นหลัก พูดคร่าวๆ แล้ววิธีการจัดเก็บข้อมูลไม่ได้เกี่ยวข้องกับผู้ใช้ปลายทางหรือผู้พัฒนาเครื่องมือที่ลูกค้าใช้

ความเป็นหลายมิติในแอปพลิเคชัน OLAP สามารถแบ่งออกเป็นสามระดับ:

  • การแสดงข้อมูลหลายมิติ - เครื่องมือสำหรับผู้ใช้ปลายทางที่ให้การแสดงภาพและการจัดการข้อมูลหลายมิติ เลเยอร์การแสดงหลายมิติจะสรุปจากโครงสร้างทางกายภาพของข้อมูลและถือว่าข้อมูลเป็นแบบหลายมิติ
  • การประมวลผลหลายมิติเป็นวิธี (ภาษา) สำหรับการกำหนดแบบสอบถามหลายมิติ (SQL ภาษาเชิงสัมพันธ์แบบดั้งเดิมไม่เหมาะสมที่นี่) และตัวประมวลผลที่สามารถประมวลผลและดำเนินการแบบสอบถามดังกล่าว
  • พื้นที่จัดเก็บข้อมูลหลายมิติเป็นวิธีการจัดระเบียบข้อมูลทางกายภาพที่ช่วยให้การดำเนินการสืบค้นหลายมิติมีประสิทธิภาพ

สองระดับแรกจำเป็นในเครื่องมือ OLAP ทั้งหมด ระดับที่สาม แม้ว่าจะแพร่หลาย แต่ก็ไม่จำเป็น เนื่องจากข้อมูลสำหรับการเป็นตัวแทนหลายมิติสามารถดึงออกมาจากโครงสร้างเชิงสัมพันธ์ทั่วไปได้ ตัวประมวลผลเคียวรีหลายมิติในกรณีนี้จะแปลเคียวรีหลายมิติเป็นเคียวรี SQL ที่ดำเนินการโดย DBMS เชิงสัมพันธ์

ตามกฎแล้ว ผลิตภัณฑ์ OLAP ที่เฉพาะเจาะจงอาจเป็นเครื่องมือการแสดงข้อมูลหลายมิติ ไคลเอ็นต์ OLAP (เช่น Pivot Tables ใน Excel 2000 จาก Microsoft หรือ ProClarity จาก Knosys) หรือเซิร์ฟเวอร์ DBMS หลายมิติ เซิร์ฟเวอร์ OLAP (เช่น Oracle Express Server หรือบริการ Microsoft OLAP)

โดยปกติแล้วเลเยอร์การประมวลผลหลายมิติจะถูกสร้างขึ้นในไคลเอนต์ OLAP และ/หรือเซิร์ฟเวอร์ OLAP แต่สามารถแยกได้ในรูปแบบที่บริสุทธิ์ เช่น ส่วนประกอบ Pivot Table Service ของ Microsoft

ด้านเทคนิคของการจัดเก็บข้อมูลหลายมิติ

ตามที่กล่าวไว้ข้างต้น เครื่องมือวิเคราะห์ OLAP ยังสามารถแยกข้อมูลได้โดยตรงจากระบบเชิงสัมพันธ์ แนวทางนี้น่าสนใจกว่าในสมัยนั้นเมื่อเซิร์ฟเวอร์ OLAP ไม่รวมอยู่ในรายการราคาของผู้ผลิต DBMS ชั้นนำ แต่วันนี้ Oracle, Informix และ Microsoft นำเสนอเซิร์ฟเวอร์ OLAP เต็มรูปแบบและแม้แต่ผู้จัดการฝ่ายไอทีที่ไม่ชอบสร้าง "สวนสัตว์" ของซอฟต์แวร์จากผู้ผลิตหลายรายในเครือข่ายของพวกเขาก็สามารถซื้อ (หรือส่งคำขอที่เกี่ยวข้องเพื่อ ฝ่ายบริหารของบริษัท ) เซิร์ฟเวอร์ OLAP ยี่ห้อเดียวกันกับเซิร์ฟเวอร์ฐานข้อมูลหลัก

เซิร์ฟเวอร์ OLAP หรือเซิร์ฟเวอร์ฐานข้อมูลหลายมิติ สามารถจัดเก็บข้อมูลหลายมิติได้หลายวิธี ก่อนที่จะพิจารณาวิธีการเหล่านี้ เราต้องพูดถึงสิ่งสำคัญเช่นการจัดเก็บหน่วย ความจริงก็คือในคลังข้อมูลใด ๆ ทั้งแบบธรรมดาและแบบหลายมิติพร้อมกับข้อมูลโดยละเอียดที่ดึงมาจากระบบปฏิบัติการ ตัวบ่งชี้สรุป (ตัวบ่งชี้รวม การรวมกลุ่ม) จะถูกจัดเก็บด้วย เช่น ผลรวมของปริมาณการขายตามเดือน ตามหมวดหมู่สินค้า ฯลฯ . ข้อมูลรวมจะถูกเก็บไว้อย่างชัดเจนเพื่อจุดประสงค์เดียวในการเร่งการดำเนินการตามคำขอ ท้ายที่สุดแล้วในอีกด้านหนึ่งตามกฎแล้วข้อมูลจำนวนมากจะถูกสะสมในคลังสินค้าและในทางกลับกันนักวิเคราะห์ในกรณีส่วนใหญ่จะไม่สนใจในรายละเอียด แต่เป็นตัวบ่งชี้ทั่วไป และหากต้องบวกยอดขายหลายล้านรายการในแต่ละครั้งเพื่อคำนวณยอดขายรวมสำหรับปี ความเร็วนี้ก็น่าจะยอมรับไม่ได้ ดังนั้นเมื่อโหลดข้อมูลลงในฐานข้อมูลหลายมิติ ตัวบ่งชี้ทั้งหมดหรือบางส่วนจะถูกคำนวณและบันทึก

แต่อย่างที่คุณทราบคุณต้องจ่ายทุกอย่าง และเพื่อความรวดเร็วในการประมวลผลคำขอข้อมูลสรุป คุณจะต้องจ่ายเงินสำหรับปริมาณข้อมูลและเวลาในการโหลดข้อมูลที่เพิ่มขึ้น ยิ่งไปกว่านั้น การเพิ่มปริมาณอาจเป็นหายนะอย่างแท้จริง - ในการทดสอบมาตรฐานที่เผยแพร่รายการหนึ่ง การคำนวณการรวมทั้งหมดสำหรับแหล่งข้อมูล 10 MB ต้องใช้ 2.4 GB นั่นคือ ข้อมูลเพิ่มขึ้น 240 เท่า! ระดับของข้อมูล "บวม" เมื่อคำนวณผลรวมขึ้นอยู่กับจำนวนขนาดของลูกบาศก์และโครงสร้างของมิติเหล่านี้ เช่น อัตราส่วนของจำนวน "พ่อ" และ "ลูก" ในระดับการวัดที่แตกต่างกัน เพื่อแก้ปัญหาการจัดเก็บหน่วยบางครั้งจึงถูกนำมาใช้ วงจรที่ซับซ้อนซึ่งทำให้สามารถเพิ่มประสิทธิภาพการค้นหาได้อย่างมากเมื่อคำนวณการรวมที่เป็นไปได้ทั้งหมด

ตอนนี้เกี่ยวกับตัวเลือกต่าง ๆ สำหรับการจัดเก็บข้อมูล ทั้งข้อมูลแบบละเอียดและการรวมสามารถจัดเก็บไว้ในโครงสร้างเชิงสัมพันธ์หรือหลายมิติได้ พื้นที่จัดเก็บข้อมูลหลายมิติช่วยให้คุณสามารถปฏิบัติต่อข้อมูลเป็นอาร์เรย์หลายมิติ ซึ่งช่วยให้มั่นใจได้ถึงการคำนวณที่รวดเร็วเท่าเทียมกันของตัวบ่งชี้ทั้งหมดและการแปลงหลายมิติต่างๆ ในมิติใดๆ เมื่อไม่นานมานี้ ผลิตภัณฑ์ OLAP รองรับการจัดเก็บข้อมูลเชิงสัมพันธ์หรือหลายมิติ ในปัจจุบันตามกฎแล้วผลิตภัณฑ์ชนิดเดียวกันมีการจัดเก็บข้อมูลทั้งสองประเภทนี้และประเภทที่สามแบบผสม ข้อกำหนดต่อไปนี้มีผลบังคับใช้:

  • โมแลป(OLAP หลายมิติ) - ทั้งข้อมูลโดยละเอียดและผลรวมจะถูกจัดเก็บไว้ในฐานข้อมูลหลายมิติ ในกรณีนี้ จะได้ความซ้ำซ้อนมากที่สุด เนื่องจากข้อมูลหลายมิติประกอบด้วยข้อมูลเชิงสัมพันธ์โดยสมบูรณ์
  • โรแลป(OLAP เชิงสัมพันธ์) - ข้อมูลโดยละเอียดยังคงอยู่ที่เดิม "อยู่" - ในฐานข้อมูลเชิงสัมพันธ์ การรวมจะถูกเก็บไว้ในฐานข้อมูลเดียวกันในตารางบริการที่สร้างขึ้นเป็นพิเศษ
  • ฮอลป(Hybrid OLAP) - ข้อมูลรายละเอียดยังคงอยู่ (ในฐานข้อมูลเชิงสัมพันธ์) และผลรวมจะถูกจัดเก็บไว้ในฐานข้อมูลหลายมิติ

แต่ละวิธีมีข้อดีและข้อเสียในตัวเอง และควรใช้ขึ้นอยู่กับเงื่อนไข เช่น ปริมาณข้อมูล พลังของ DBMS เชิงสัมพันธ์ เป็นต้น

เมื่อจัดเก็บข้อมูลในโครงสร้างหลายมิติ อาจเกิดปัญหา "บวม" เนื่องจากการจัดเก็บค่าว่าง ท้ายที่สุดแล้ว หากสงวนพื้นที่อาร์เรย์หลายมิติไว้สำหรับการผสมป้ายกำกับมิติที่เป็นไปได้ทั้งหมด แต่จริงๆ แล้วมีเพียงส่วนเล็กๆ เท่านั้น (เช่น ผลิตภัณฑ์จำนวนหนึ่งจำหน่ายในภูมิภาคจำนวนน้อยเท่านั้น) จากนั้นส่วนใหญ่ ลูกบาศก์จะว่างเปล่าแม้ว่าพื้นที่จะถูกครอบครองก็ตาม ผลิตภัณฑ์ OLAP สมัยใหม่สามารถรับมือกับปัญหานี้ได้

ยังมีต่อ. ในอนาคตเราจะพูดถึงผลิตภัณฑ์ OLAP เฉพาะที่ผลิตโดยผู้ผลิตชั้นนำ

OLAP (การประมวลผลเชิงวิเคราะห์ออนไลน์)เป็นวิธีการประมวลผลข้อมูลเชิงวิเคราะห์ทางอิเล็กทรอนิกส์ที่แสดงถึงการจัดระเบียบข้อมูลเป็นหมวดหมู่ตามลำดับชั้นโดยใช้ผลรวมที่คำนวณไว้ล่วงหน้า ข้อมูล OLAP ได้รับการจัดระเบียบตามลำดับชั้นและจัดเก็บไว้ในคิวบ์แทนที่จะเป็นตาราง คิวบ์ OLAP คือชุดข้อมูลหลายมิติที่มีแกนที่มีพารามิเตอร์และเซลล์ที่มีข้อมูลรวมที่ขึ้นกับพารามิเตอร์ คิวบ์ได้รับการออกแบบมาเพื่อการวิเคราะห์ที่ซับซ้อนและหลายมิติของข้อมูลปริมาณมาก เนื่องจากจะให้เฉพาะผลลัพธ์สรุปสำหรับการรายงานแทน จำนวนมากบันทึกแยกต่างหาก

แนวคิดของ OLAP ได้รับการอธิบายในปี 1993 โดยนักวิจัยฐานข้อมูลที่มีชื่อเสียงและเป็นผู้เขียนแบบจำลองข้อมูลเชิงสัมพันธ์ E.F. Codd ปัจจุบันมีการนำการสนับสนุน OLAP ไปใช้กับ DBMS และเครื่องมืออื่นๆ มากมาย

คิวบ์ OLAP มีข้อมูลสองประเภท:

· ค่ารวม, ค่าที่คุณต้องการสรุป, เป็นตัวแทน เขตข้อมูลที่คำนวณ;

· ข้อมูลเชิงพรรณนาที่เป็นตัวแทน การวัดหรือ ขนาด. โดยทั่วไปข้อมูลเชิงพรรณนาจะจัดเป็นระดับรายละเอียด ตัวอย่างเช่น: "ปี", "ไตรมาส", "เดือน" และ "วัน" ในมิติ "เวลา" การจัดระเบียบฟิลด์เป็นระดับรายละเอียดช่วยให้ผู้ใช้รายงานสามารถเลือกระดับรายละเอียดที่ต้องการดู โดยเริ่มจากข้อมูลสรุประดับสูง จากนั้นเจาะลึกไปจนถึงมุมมองที่มีรายละเอียดมากขึ้น และในทางกลับกัน

เครื่องมือ Microsoft Query ยังช่วยให้คุณสร้างคิวบ์ OLAP จากการสืบค้นที่โหลดข้อมูลจากฐานข้อมูลเชิงสัมพันธ์ เช่น Microsoft Access โดยเปลี่ยนตารางเชิงเส้นให้เป็นลำดับชั้นที่มีโครงสร้าง (คิวบ์)

ตัวช่วยสร้างคิวบ์ OLAP เป็นเครื่องมือ Microsoft Query ในตัว เมื่อต้องการสร้างคิวบ์ OLAP ตามฐานข้อมูลเชิงสัมพันธ์ คุณต้องทำตามขั้นตอนต่อไปนี้ก่อนที่จะรันวิซาร์ด

1. กำหนดแหล่งข้อมูล (ดูรูปที่ 6.1)

2. ใช้ Microsoft Query สร้างแบบสอบถาม รวมถึงเฉพาะฟิลด์ที่จะเป็นฟิลด์ข้อมูลหรือฟิลด์มิติของคิวบ์ OLAP หากมีการใช้ฟิลด์ในคิวบ์มากกว่าหนึ่งครั้ง จะต้องรวมไว้ในแบบสอบถามที่จำเป็น จำนวนครั้ง.

3. ในขั้นตอนสุดท้ายของวิซาร์ดการสร้างแบบสอบถาม ให้ตั้งสวิตช์บนรายการ การสร้างคิวบ์ OLAP จากแบบสอบถามที่กำหนด(ดูรูปที่ 6.2) หรือหลังจากสร้างคำขอโดยใช้เมนูแบบสอบถามโดยตรง ไฟล์เลือกทีม สร้าง OLAP Cubeหลังจากนั้น Create OLAP Cube Wizard จะถูกเปิดใช้งาน

ตัวช่วยสร้างคิวบ์ OLAP ประกอบด้วยสามขั้นตอน

ในขั้นตอนแรกของตัวช่วยสร้าง (ดูรูปที่ 6.6) เขตข้อมูล– เขตข้อมูลจากการคำนวณที่ต้องกำหนดค่าทั้งหมด



ข้าว. 6.6. การกำหนดเขตข้อมูล

ตัวช่วยสร้างจะวางฟิลด์ที่คำนวณไว้ (โดยปกติจะเป็นฟิลด์ตัวเลข) ที่ด้านบนสุดของรายการ ตรวจสอบและกำหนดฟังก์ชันผลลัพธ์ของฟิลด์เหล่านี้ โดยปกติ - ผลรวม. เมื่อเลือกช่องข้อมูล ต้องเลือกอย่างน้อยหนึ่งช่องเป็นช่องจากการคำนวณ และต้องไม่ทำเครื่องหมายอย่างน้อยหนึ่งช่องเพื่อกำหนดมิติ

เมื่อสร้างคิวบ์ OLAP คุณสามารถใช้ฟังก์ชันสรุปสี่ฟังก์ชันได้ ผลรวม, ตัวเลข(จำนวนค่า) ขั้นต่ำ, ขีดสุดสำหรับช่องตัวเลขและหนึ่งฟังก์ชัน ตัวเลขสำหรับสาขาอื่นๆ ทั้งหมด ถ้าคุณต้องการใช้ฟังก์ชันสรุปต่างๆ หลายๆ ฟังก์ชันของเขตข้อมูลเดียวกัน จะต้องรวมเขตข้อมูลนั้นในการสืบค้นตามจำนวนครั้งที่ต้องการ

ชื่อของฟิลด์จากการคำนวณสามารถเปลี่ยนแปลงได้ในคอลัมน์ ชื่อเขตข้อมูล.

ในขั้นตอนที่สองของวิซาร์ด ข้อมูลเชิงอธิบายและมิติข้อมูลจะถูกกำหนด (ดูรูปที่ 6.7) หากต้องการเลือกฟิลด์การวัด คุณต้องมาจากรายการ ฟิลด์แหล่งที่มาลากฟิลด์มิติระดับบนสุดที่ต้องการไปยังรายการ การวัดไปยังพื้นที่ที่ทำเครื่องหมายว่า ลากช่องมาที่นี่เพื่อสร้างมิติ. เมื่อต้องการสร้างคิวบ์ OLAP คุณต้องกำหนดอย่างน้อยหนึ่งมิติ ในขั้นตอนเดียวกันของวิซาร์ด คุณสามารถใช้เมนูบริบทเพื่อเปลี่ยนชื่อของฟิลด์มิติหรือระดับได้

ข้าว. 6.7. การกำหนดฟิลด์มิติ

ฟิลด์ที่มีข้อมูลที่แยกหรือแยกกันและไม่อยู่ในลำดับชั้นสามารถกำหนดเป็นมิติระดับเดียวได้ อย่างไรก็ตาม คิวบ์จะมีประสิทธิภาพมากขึ้นหากบางฟิลด์ถูกจัดระเบียบเป็นระดับ หากต้องการสร้างระดับเป็นส่วนหนึ่งของมิติ ให้ลากฟิลด์จากรายการ ฟิลด์แหล่งที่มาบนสนามที่เป็นมิติหรือระดับ ช่องที่มีข้อมูลรายละเอียดมากขึ้นควรวางไว้ในระดับที่ต่ำกว่า ตัวอย่างเช่น ในรูปที่ 6.7 ฟิลด์ ชื่องานคือระดับสนาม ชื่อห้างสรรพสินค้า.

เพื่อย้ายฟิลด์ไปยังระดับที่ต่ำกว่าหรือสูงกว่า ระดับสูงคุณต้องลากไปยังฟิลด์ที่ต่ำกว่าหรือสูงกว่าภายในมิติ หากต้องการแสดงหรือซ่อนระดับ ให้ใช้ปุ่ม หรือ ตามลำดับ

ถ้าคุณใช้ฟิลด์วันที่หรือเวลาเป็นมิติระดับบนสุด ตัวช่วยสร้างคิวบ์ OLAP จะสร้างระดับสำหรับมิติเหล่านั้นโดยอัตโนมัติ จากนั้นผู้ใช้สามารถเลือกระดับที่จะปรากฏในรายงานได้ ตัวอย่างเช่น คุณสามารถเลือกสัปดาห์ ไตรมาส และปี หรือเดือนได้ (ดูรูปที่ 6.7)

โปรดจำไว้ว่าวิซาร์ดจะสร้างระดับสำหรับฟิลด์วันที่และเวลาโดยอัตโนมัติเมื่อคุณสร้างมิติระดับบนสุดเท่านั้น เมื่อเพิ่มฟิลด์เหล่านี้เป็นระดับย่อยของมิติ ระดับอัตโนมัติจะไม่ถูกสร้างขึ้น

ในขั้นตอนที่สามของวิซาร์ด ประเภทของคิวบ์ที่สร้างโดยวิซาร์ดจะถูกกำหนด โดยมีสามตัวเลือกที่เป็นไปได้ (ดูรูปที่ 6.8)

ข้าว. 6.8. การเลือกชนิดของคิวบ์ที่จะสร้างในขั้นตอนที่สามของวิซาร์ด

· สองตัวเลือกแรกเกี่ยวข้องกับการสร้างคิวบ์ทุกครั้งที่คุณเปิดรายงาน (หากดูคิวบ์จาก Excel เรากำลังพูดถึงตารางสรุปข้อมูล) ในกรณีนี้คือไฟล์คำขอและไฟล์ คำจำกัดความของคิวบ์ * .oqyซึ่งมีคำแนะนำในการสร้างคิวบ์ ไฟล์ *.oqy สามารถเปิดได้ใน Excel เพื่อสร้างรายงานตามคิวบ์ และหากคุณต้องการเปลี่ยนแปลงคิวบ์ คุณสามารถเปิดไฟล์ด้วย Query เพื่อรันตัวช่วยสร้างคิวบ์ได้อีกครั้ง

ตามค่าเริ่มต้น ไฟล์ข้อกำหนดคิวบ์ เช่น ไฟล์แบบสอบถาม จะถูกจัดเก็บไว้ในโฟลเดอร์โปรไฟล์ผู้ใช้ใน Application Data\Microsoft\Que-ries เมื่อบันทึกไฟล์ *.oqy ในโฟลเดอร์มาตรฐาน ชื่อของไฟล์นิยามคิวบ์จะแสดงบนแท็บ ลูกบาศก์ OLAPเมื่อเปิดแบบสอบถามใหม่ใน Microsoft Query หรือเมื่อเลือกคำสั่ง สร้างคำขอ(เมนู ข้อมูล, เมนูย่อย การนำเข้าข้อมูลภายนอก) ในไมโครซอฟต์เอ็กเซล

· ในกรณีที่เลือกตัวเลือกที่สามของประเภทคิวบ์ การบันทึกไฟล์คิวบ์ที่มีข้อมูลทั้งหมดสำหรับคิวบ์ข้อมูลทั้งหมดสำหรับคิวบ์จะถูกดึงออกมา และไฟล์คิวบ์ที่มีนามสกุล * จะถูกสร้างขึ้นในตำแหน่งที่ผู้ใช้ระบุ .ลูกบาศก์ซึ่งข้อมูลนี้จะถูกเก็บไว้ ไฟล์นี้ไม่ถูกสร้างขึ้นทันทีเมื่อมีการคลิกปุ่ม พร้อม; ไฟล์จะถูกสร้างขึ้นเมื่อคุณบันทึกข้อกำหนดคิวบ์ลงในไฟล์ หรือเมื่อคุณสร้างรายงานตามคิวบ์

การเลือกประเภทคิวบ์จะขึ้นอยู่กับปัจจัยหลายประการ ได้แก่ จำนวนข้อมูลในคิวบ์ ประเภทและความซับซ้อนของรายงานที่จะสร้างตามคิวบ์ ทรัพยากรระบบ (หน่วยความจำและพื้นที่ดิสก์) ฯลฯ

ควรสร้างไฟล์คิวบ์ *.cub แยกต่างหากในกรณีต่อไปนี้:

1) สำหรับรายงานเชิงโต้ตอบที่เปลี่ยนแปลงบ่อยหากมีพื้นที่ดิสก์เพียงพอ

2) เมื่อคุณต้องการบันทึกคิวบ์บนเซิร์ฟเวอร์เครือข่ายเพื่อให้ผู้ใช้รายอื่นเข้าถึงได้เมื่อสร้างรายงาน ไฟล์คิวบ์สามารถจัดเตรียมข้อมูลเฉพาะจากฐานข้อมูลต้นทาง โดยละเว้นข้อมูลที่ละเอียดอ่อนหรือละเอียดอ่อนที่คุณต้องการป้องกันไม่ให้ผู้ใช้รายอื่นเข้าถึง

ในตารางเดือยมาตรฐาน ข้อมูลต้นฉบับจะถูกจัดเก็บไว้ในฮาร์ดไดรฟ์ในเครื่องของคุณ ด้วยวิธีนี้ คุณสามารถจัดการและจัดระเบียบใหม่ได้ตลอดเวลา แม้ว่าจะไม่ได้เข้าถึงเครือข่ายก็ตาม แต่สิ่งนี้ไม่มีทางใช้ได้กับตารางเดือย OLAP ในตารางเดือย OLAP แคชจะไม่ถูกจัดเก็บไว้ในฮาร์ดไดรฟ์ในเครื่อง ดังนั้นทันทีหลังจากตัดการเชื่อมต่อจาก เครือข่ายท้องถิ่นตารางเดือยของคุณจะไม่ทำงานอีกต่อไป คุณจะไม่สามารถย้ายฟิลด์เดียวในนั้นได้

หากคุณยังต้องวิเคราะห์ข้อมูล OLAP หลังจากออฟไลน์ ให้สร้างคิวบ์ข้อมูลออฟไลน์ คิวบ์ข้อมูลออฟไลน์เป็นไฟล์แยกต่างหากที่เป็นแคชตารางสาระสำคัญและจัดเก็บข้อมูล OLAP ที่ดูได้หลังจากยกเลิกการเชื่อมต่อจากเครือข่ายท้องถิ่น สามารถพิมพ์ข้อมูล OLAP ที่คัดลอกลงในตารางเดือยได้ ซึ่งมีคำอธิบายโดยละเอียดบนเว็บไซต์ http://everest.ua

หากต้องการสร้างคิวบ์ข้อมูลแบบสแตนด์อโลน ให้สร้างตารางเดือย OLAP ก่อน วางเคอร์เซอร์ภายในตารางสรุปสาระสำคัญแล้วคลิกปุ่มเครื่องมือ OLAP บนแท็บบริบทเครื่องมือ ซึ่งเป็นส่วนหนึ่งของกลุ่มแท็บบริบทของเครื่องมือ PivotTable เลือกคำสั่ง OLAP ออฟไลน์ (รูปที่ 9.8)

กล่องโต้ตอบการตั้งค่าคิวบ์ข้อมูล OLAP แบบออฟไลน์จะปรากฏบนหน้าจอ คลิกที่ปุ่มสร้างไฟล์ข้อมูลออฟไลน์ คุณได้เรียกทำงานตัวช่วยสร้างไฟล์ Data Cube คลิกปุ่มถัดไปเพื่อดำเนินการต่อตามขั้นตอน

ขั้นแรก คุณต้องระบุมิติและระดับที่จะรวมไว้ในคิวบ์ข้อมูล ในกล่องโต้ตอบ คุณต้องเลือกข้อมูลที่จะนำเข้าจากฐานข้อมูล OLAP แนวคิดคือการระบุเฉพาะขนาดที่จำเป็นหลังจากที่คอมพิวเตอร์ถูกตัดการเชื่อมต่อจากเครือข่ายท้องถิ่น ยิ่งคุณระบุมิติข้อมูลมากเท่าไร ขนาดใหญ่ขึ้นจะมี data cube ในตัว

คลิกปุ่มถัดไปเพื่อย้ายไปยังกล่องโต้ตอบตัวช่วยสร้างถัดไป สิ่งนี้ทำให้คุณสามารถระบุสมาชิกหรืออิลิเมนต์ข้อมูลที่จะไม่รวมอยู่ในคิวบ์ โดยเฉพาะอย่างยิ่ง คุณไม่จำเป็นต้องมีหน่วยวัดยอดขายทางอินเทอร์เน็ต ดังนั้นกล่องกาเครื่องหมายจะถูกล้างในรายการ กล่องกาเครื่องหมายที่ล้างแล้วระบุว่ารายการที่ระบุจะไม่ถูกนำเข้า และใช้พื้นที่ที่ไม่จำเป็นบนฮาร์ดไดรฟ์ในเครื่องของคุณ

ในขั้นตอนสุดท้าย ให้ระบุตำแหน่งและชื่อของคิวบ์ข้อมูล ในกรณีของเรา ไฟล์คิวบ์จะมีชื่อว่า MyOfflineCube.cub และจะอยู่ในโฟลเดอร์ Work

ไฟล์ดาต้าคิวบ์มีนามสกุล .ลูกบาศก์

หลังจากนั้นครู่หนึ่ง Excel จะบันทึกคิวบ์ข้อมูลออฟไลน์ในโฟลเดอร์ที่ระบุ หากต้องการทดสอบ ให้ดับเบิลคลิกที่ไฟล์ ซึ่งจะสร้างสมุดงาน Excel โดยอัตโนมัติซึ่งมีตารางเดือยที่เกี่ยวข้องกับคิวบ์ข้อมูลที่เลือก เมื่อสร้างแล้ว คุณสามารถแจกจ่ายคิวบ์ข้อมูลออฟไลน์ให้กับผู้ใช้ที่สนใจทั้งหมดที่ทำงานในโหมด LAN ออฟไลน์

เมื่อเชื่อมต่อกับเครือข่ายท้องถิ่นของคุณแล้ว คุณสามารถเปิดไฟล์คิวบ์ข้อมูลออฟไลน์และอัปเดตไฟล์และตารางข้อมูลที่เกี่ยวข้องได้ หลักการสำคัญระบุว่าคิวบ์ข้อมูลออฟไลน์ใช้สำหรับการทำงานเมื่อเครือข่ายท้องถิ่นถูกตัดการเชื่อมต่อเท่านั้น แต่จำเป็นต้องอัปเดตหลังจากกู้คืนการเชื่อมต่อแล้ว การพยายามอัพเดตคิวบ์ข้อมูลออฟไลน์หลังจากการเชื่อมต่อล้มเหลวจะส่งผลให้เกิดความล้มเหลว

ในส่วนของงานนี้ จะพิจารณาประเด็นต่อไปนี้:

  • OLAP คิวบ์คืออะไร
  • การวัด มิติ ลำดับชั้นคืออะไร?
  • การดำเนินการประเภทใดที่สามารถทำได้บน OLAP คิวบ์
แนวคิดของคิวบ์ OLAP

หลักสำคัญของ OLAP คือการนำเสนอข้อมูลหลายมิติ ในคำศัพท์เฉพาะทางของ OLAP แนวคิดของคิวบ์หรือไฮเปอร์คิวบ์ ใช้เพื่ออธิบายพื้นที่ข้อมูลแยกหลายมิติ

คิวบ์เป็นโครงสร้างข้อมูลหลายมิติที่นักวิเคราะห์ผู้ใช้สามารถสืบค้นข้อมูลได้ คิวบ์ถูกสร้างขึ้นจากข้อเท็จจริงและมิติ

ข้อมูล- เป็นข้อมูลเกี่ยวกับวัตถุและเหตุการณ์ในบริษัทที่จะต้องมีการวิเคราะห์ ข้อเท็จจริงในรูปแบบมาตรการประเภทเดียวกัน การวัดคือประเภทของค่าในเซลล์คิวบ์

การวัด- สิ่งเหล่านี้คือองค์ประกอบข้อมูลที่ใช้วิเคราะห์ข้อเท็จจริง คอลเลกชันขององค์ประกอบดังกล่าวจะสร้างแอตทริบิวต์มิติข้อมูล (เช่น วันในสัปดาห์สามารถสร้างแอตทริบิวต์มิติเวลาได้) ในงานวิเคราะห์ธุรกิจ สถานประกอบการเชิงพาณิชย์มิติข้อมูลมักประกอบด้วยหมวดหมู่ต่างๆ เช่น "เวลา" "การขาย" "ผลิตภัณฑ์" "ลูกค้า" "พนักงาน" และ "ที่ตั้งทางภูมิศาสตร์" มิติมักเป็นโครงสร้างแบบลำดับชั้น ซึ่งแสดงถึงหมวดหมู่เชิงตรรกะที่ผู้ใช้สามารถวิเคราะห์ข้อมูลจริงได้ แต่ละลำดับชั้นสามารถมีได้ตั้งแต่หนึ่งระดับขึ้นไป ดังนั้นลำดับชั้นของมิติ "ที่ตั้งทางภูมิศาสตร์" อาจรวมถึงระดับ: "ประเทศ - ภูมิภาค - เมือง" ในลำดับชั้นเวลา เราสามารถแยกแยะได้ เช่น ลำดับของระดับต่อไปนี้: มิติสามารถมีได้หลายลำดับชั้น (แต่ละลำดับชั้นของหนึ่งมิติต้องมีแอตทริบิวต์คีย์เดียวกันของตารางมิติ)

คิวบ์สามารถมีข้อมูลจริงจากตารางข้อเท็จจริงตั้งแต่หนึ่งตารางขึ้นไป และส่วนใหญ่มักจะมีหลายมิติ คิวบ์ที่กำหนดใดๆ มักจะมีจุดเน้นเฉพาะสำหรับการวิเคราะห์

รูปที่ 1 แสดงตัวอย่างลูกบาศก์ที่ออกแบบมาเพื่อวิเคราะห์ยอดขายผลิตภัณฑ์ปิโตรเลียมของบริษัทบางแห่งตามภูมิภาค ลูกบาศก์นี้มีสามมิติ (เวลา ผลิตภัณฑ์ และภูมิภาค) และหนึ่งหน่วยวัด (ยอดขายแสดงในรูปของตัวเงิน) ค่าการวัดจะถูกเก็บไว้ในเซลล์ที่สอดคล้องกันของคิวบ์ แต่ละเซลล์จะถูกระบุโดยไม่ซ้ำกันโดยชุดสมาชิกของแต่ละมิติ เรียกว่าทูเพิล ตัวอย่างเช่น เซลล์ที่อยู่ในมุมซ้ายล่างของคิวบ์ (มีค่า $98399) จะถูกระบุโดยทูเพิล [กรกฎาคม 2005, ตะวันออกไกล, ดีเซล] มูลค่า 98,399 ดอลลาร์ในที่นี้แสดงปริมาณการขาย (ในรูปตัวเงิน) ของน้ำมันดีเซลในตะวันออกไกลในเดือนกรกฎาคม พ.ศ. 2548

นอกจากนี้ ควรสังเกตด้วยว่าบางเซลล์ไม่มีค่าใดๆ เซลล์เหล่านี้ว่างเปล่าเนื่องจากตารางข้อเท็จจริงไม่มีข้อมูลสำหรับเซลล์เหล่านั้น

ข้าว. 1. Cube พร้อมข้อมูลการขายผลิตภัณฑ์ปิโตรเลียมในภูมิภาคต่างๆ

เป้าหมายสูงสุดของการสร้างคิวบ์ดังกล่าวคือการลดเวลาการประมวลผลของเคียวรีที่แยกข้อมูลที่ต้องการจากข้อมูลจริงให้เหลือน้อยที่สุด เพื่อให้งานนี้สำเร็จ โดยทั่วไปคิวบ์จะมีผลรวมที่คำนวณไว้ล่วงหน้าที่เรียกว่า การรวมตัว(การรวมกลุ่ม) เหล่านั้น. คิวบ์ครอบคลุมพื้นที่ข้อมูลที่มีขนาดใหญ่กว่าพื้นที่จริง - มีจุดที่คำนวณได้เชิงตรรกะอยู่ในนั้น ฟังก์ชันการรวมช่วยให้คุณคำนวณค่าของจุดในพื้นที่โลจิคัลตามค่าจริง ฟังก์ชันการรวมที่ง่ายที่สุดคือ SUM, MAX, MIN, COUNT ตัวอย่างเช่น การใช้ฟังก์ชัน MAX สำหรับคิวบ์ที่ให้ไว้ในตัวอย่าง คุณสามารถระบุได้ว่ายอดขายดีเซลสูงสุดเกิดขึ้นเมื่อใดในตะวันออกไกล เป็นต้น

คุณลักษณะเฉพาะอีกประการหนึ่งของลูกบาศก์หลายมิติคือความยากในการระบุต้นกำเนิด ตัวอย่างเช่น คุณจะตั้งค่าจุด 0 สำหรับมิติผลิตภัณฑ์หรือภูมิภาคได้อย่างไร วิธีแก้ไขปัญหานี้คือการแนะนำคุณลักษณะพิเศษที่รวมองค์ประกอบทั้งหมดของมิติเข้าด้วยกัน คุณลักษณะนี้ (สร้างขึ้นโดยอัตโนมัติ) มีเพียงองค์ประกอบเดียวเท่านั้น - ทั้งหมด สำหรับฟังก์ชันการรวมอย่างง่าย เช่น ผลรวม องค์ประกอบทั้งหมดจะเทียบเท่ากับผลรวมของค่าขององค์ประกอบทั้งหมดในพื้นที่จริงของมิติที่กำหนด

แนวคิดที่สำคัญในแบบจำลองข้อมูลหลายมิติคือพื้นที่ย่อยหรือคิวบ์ย่อย คิวบ์ย่อยเป็นส่วนหนึ่งของพื้นที่เต็มของลูกบาศก์ในรูปของรูปทรงหลายมิติภายในลูกบาศก์ เนื่องจากพื้นที่หลายมิติของลูกบาศก์ไม่ต่อเนื่องและมีจำกัด ลูกบาศก์ย่อยจึงแยกจากกันและมีจำกัดเช่นกัน

การดำเนินการบนคิวบ์ OLAP

การดำเนินการต่อไปนี้สามารถทำได้บนคิวบ์ OLAP:

  • ชิ้น;
  • การหมุน;
  • การรวมบัญชี;
  • รายละเอียด
ชิ้น(รูปที่ 2) เป็นกรณีพิเศษของคิวบ์ย่อย นี่คือขั้นตอนสำหรับการสร้างชุดย่อยของอาร์เรย์ข้อมูลหลายมิติที่สอดคล้องกับค่าเดียวขององค์ประกอบมิติตั้งแต่หนึ่งองค์ประกอบขึ้นไปที่ไม่รวมอยู่ในชุดย่อยนี้ ตัวอย่างเช่น หากต้องการทราบว่าการขายผลิตภัณฑ์ปิโตรเลียมมีความคืบหน้าอย่างไรในช่วงเวลาหนึ่งเฉพาะในบางภูมิภาค เช่น ในเทือกเขาอูราล คุณต้องแก้ไขมิติ "ผลิตภัณฑ์" ในองค์ประกอบ "อูราล" และแยกชุดย่อยที่เกี่ยวข้อง (คิวบ์ย่อย) ออกจาก ลูกบาศก์
  • ข้าว. 2.ชิ้นลูกบาศก์ OLAP

    การหมุน(รูปที่ 3) - การดำเนินการเปลี่ยนตำแหน่งของการวัดที่แสดงในรายงานหรือบนหน้าที่แสดง ตัวอย่างเช่น การดำเนินการหมุนอาจเกี่ยวข้องกับการจัดเรียงแถวและคอลัมน์ของตารางใหม่ นอกจากนี้ การหมุนคิวบ์ข้อมูลจะย้ายมิติที่อยู่นอกตารางให้เข้าที่โดยมีมิติปรากฏบนเพจที่แสดง และในทางกลับกัน

    ฉันอาศัยอยู่ใน Habr มาระยะหนึ่งแล้ว แต่ฉันไม่เคยอ่านบทความเกี่ยวกับหัวข้อคิวบ์หลายมิติ OLAP และ MDX แม้ว่าหัวข้อจะน่าสนใจมากและมีความเกี่ยวข้องมากขึ้นทุกวัน
    ไม่เป็นความลับเลยว่าในช่วงเวลาสั้นๆ ของการพัฒนาฐานข้อมูล การบัญชีอิเล็กทรอนิกส์ และระบบออนไลน์ ข้อมูลจำนวนมากได้สะสมไว้ ขณะนี้ การวิเคราะห์เอกสารสำคัญฉบับสมบูรณ์ และอาจมีความพยายามที่จะคาดการณ์สถานการณ์สำหรับแบบจำลองที่คล้ายกันในอนาคต ก็เป็นที่สนใจเช่นกัน
    ในทางกลับกัน บริษัทขนาดใหญ่ แม้ในช่วงเวลาหลายปี หลายเดือน หรือหลายสัปดาห์ ก็สามารถสะสมข้อมูลจำนวนมหาศาลได้ แม้แต่การวิเคราะห์ขั้นพื้นฐานก็ยังต้องใช้แนวทางพิเศษและข้อกำหนดด้านฮาร์ดแวร์ที่เข้มงวด สิ่งเหล่านี้อาจเป็นระบบประมวลผลธุรกรรมทางธนาคาร ตัวแทนขายหุ้น พนักงานรับโทรศัพท์ ฯลฯ
    ฉันคิดว่าทุกคนตระหนักดีถึง 2 แนวทางที่แตกต่างกันในการออกแบบฐานข้อมูล: OLTP และ OLAP แนวทางแรก (การประมวลผลธุรกรรมออนไลน์ - การประมวลผลธุรกรรมแบบเรียลไทม์) ได้รับการออกแบบมาเพื่อการรวบรวมข้อมูลที่มีประสิทธิภาพแบบเรียลไทม์ ในขณะที่แนวทางที่สอง (การประมวลผลการวิเคราะห์ออนไลน์ - การประมวลผลการวิเคราะห์แบบเรียลไทม์) มุ่งเป้าไปที่การสุ่มตัวอย่างและการประมวลผลข้อมูลอย่างมีประสิทธิภาพสูงสุดโดยเฉพาะ ทาง.

    มาดูความสามารถหลักของคิวบ์ OLAP สมัยใหม่และปัญหาใดบ้างที่แก้ไขได้ (ใช้การวิเคราะห์บริการ 2005/2008 เป็นพื้นฐาน):

    • เข้าถึงข้อมูลได้อย่างรวดเร็ว
    • การรวมตัวล่วงหน้า
    • ลำดับชั้น
    • ทำงานกับเวลา
    • ภาษาการเข้าถึงข้อมูลหลายมิติ
    • KPI (ตัวบ่งชี้ประสิทธิภาพหลัก)
    • การขุดวันที่
    • แคชหลายระดับ
    • การสนับสนุนหลายภาษา
    ดังนั้น เรามาดูความสามารถของคิวบ์ OLAP โดยละเอียดเพิ่มเติมอีกหน่อย

    เพิ่มเติมเล็กน้อยเกี่ยวกับความเป็นไปได้

    เข้าถึงข้อมูลได้อย่างรวดเร็ว
    จริงๆ แล้ว การเข้าถึงข้อมูลอย่างรวดเร็วไม่ว่าอาร์เรย์จะมีขนาดเท่าใดก็ตาม ถือเป็นพื้นฐานของระบบ OLAP เนื่องจากนี่คือจุดสนใจหลัก คลังข้อมูลจึงมักสร้างขึ้นบนหลักการที่แตกต่างจากฐานข้อมูลเชิงสัมพันธ์
    ในที่นี้ เวลาในการดึงข้อมูลอย่างง่ายจะวัดเป็นเศษส่วนของวินาที และการสืบค้นที่เกินไม่กี่วินาทีมักจะต้องมีการปรับให้เหมาะสม

    การรวมกลุ่มล่วงหน้า
    นอกเหนือจากการดึงข้อมูลที่มีอยู่อย่างรวดเร็วแล้ว ยังให้ความสามารถในการรวบรวมค่าที่ “มีแนวโน้มว่าจะถูกนำไปใช้มากที่สุด” ล่วงหน้าอีกด้วย เช่นถ้าเรามีบันทึกการขายสินค้าในแต่ละวันก็จะมีระบบ อาจจะนอกจากนี้เรายังสามารถรวบรวมยอดขายรายเดือนและรายไตรมาสล่วงหน้าได้ ซึ่งหมายความว่าหากเราขอข้อมูลเป็นรายเดือนหรือรายไตรมาส ระบบจะให้ผลลัพธ์แก่เราทันที เพราะเหตุใดการรวมกลุ่มล่วงหน้าจึงไม่เกิดขึ้นเสมอไป เพราะในทางทฤษฎี เป็นไปได้ที่การรวมสินค้า/เวลา/อื่นๆ เข้าด้วยกัน อาจมีจำนวนมากได้ ซึ่งหมายความว่าคุณต้องมีกฎเกณฑ์ที่ชัดเจนว่าองค์ประกอบใดที่จะรวมกลุ่มจะถูกสร้างขึ้น และองค์ประกอบใดจะไม่ถูกสร้างขึ้น โดยทั่วไป หัวข้อของการพิจารณากฎเหล่านี้และการออกแบบการรวมกลุ่มที่แท้จริงนั้นค่อนข้างกว้างขวางและสมควรได้รับบทความแยกต่างหากในตัวมันเอง

    ลำดับชั้น
    เป็นเรื่องปกติที่เมื่อวิเคราะห์ข้อมูลและสร้างรายงานขั้นสุดท้าย จะต้องคำนึงถึงข้อเท็จจริงที่ว่าเดือนประกอบด้วยวัน และพวกมันเองก็ก่อตัวเป็นไตรมาส และเมืองก็รวมอยู่ในพื้นที่ ซึ่งในทางกลับกันก็เป็นส่วนหนึ่งของภูมิภาคหรือประเทศ . ข่าวดีก็คือ ในตอนแรกคิวบ์ OLAP จะดูข้อมูลในแง่ของลำดับชั้นและความสัมพันธ์กับพารามิเตอร์อื่นๆ ของเอนทิตีเดียวกัน ดังนั้นการสร้างและการใช้ลำดับชั้นในคิวบ์จึงง่ายมาก

    ทำงานกับเวลา
    เนื่องจากการวิเคราะห์ข้อมูลส่วนใหญ่เกิดขึ้นในพื้นที่เวลา เวลาจึงมีความสำคัญเป็นพิเศษในระบบ OLAP ซึ่งหมายความว่าเพียงกำหนดระบบที่เรามีเวลาที่นี่ ในอนาคตคุณสามารถใช้ฟังก์ชันเช่น Year To Date, Month To Date ได้อย่างง่ายดาย (ช่วงเวลาตั้งแต่ต้นปี/เดือนถึงวันที่ปัจจุบัน) ระยะเวลาคู่ขนาน (ในวันหรือเดือนเดียวกันแต่ปีที่แล้ว) เป็นต้น

    ภาษาการเข้าถึงข้อมูลหลายมิติ
    เอ็มดีเอ็กซ์(นิพจน์หลายมิติ) - ภาษาคิวรีสำหรับการเข้าถึงโครงสร้างข้อมูลหลายมิติอย่างง่ายและมีประสิทธิภาพ และนั่นคือทั้งหมด – จะมีตัวอย่างบางส่วนด้านล่างนี้

    ตัวบ่งชี้ประสิทธิภาพหลัก (KPI)
    ตัวบ่งชี้ประสิทธิภาพคือระบบการวัดทางการเงินและไม่ใช่ทางการเงินที่ช่วยให้องค์กรกำหนดเป้าหมายเชิงกลยุทธ์ได้สำเร็จ ตัวบ่งชี้ประสิทธิภาพหลักสามารถกำหนดได้ง่ายๆ ในระบบ OLAP และใช้ในรายงาน

    วันที่ขุด
    การทำเหมืองข้อมูล(Data Mining) - โดยพื้นฐานแล้ว การระบุรูปแบบหรือความสัมพันธ์ที่ซ่อนอยู่ระหว่างตัวแปรในชุดข้อมูลขนาดใหญ่
    คำศัพท์ภาษาอังกฤษ "Data Mining" ไม่มีการแปลเป็นภาษารัสเซียที่ชัดเจน (การทำเหมืองข้อมูล การทำเหมืองข้อมูล การทำเหมืองข้อมูล การทำเหมืองข้อมูล การดึงข้อมูล/ข้อมูล) ดังนั้นในกรณีส่วนใหญ่จะใช้ในต้นฉบับ การแปลทางอ้อมที่ประสบความสำเร็จมากที่สุดคือคำว่า “data mining” (DMA) อย่างไรก็ตาม นี่เป็นหัวข้อแยกต่างหากและน่าสนใจไม่น้อยสำหรับการพิจารณา

    แคชหลายระดับ
    จริงๆ แล้ว เพื่อให้มั่นใจถึงความเร็วสูงสุดของการเข้าถึงข้อมูล นอกเหนือจากโครงสร้างข้อมูลที่ยุ่งยากและการรวมกลุ่มล่วงหน้าแล้ว ระบบ OLAP ยังรองรับการแคชหลายระดับอีกด้วย นอกเหนือจากการแคชแบบสอบถามแบบง่ายแล้ว บางส่วนของข้อมูลที่อ่านจากร้านค้า ค่ารวม และค่าที่คำนวณก็จะถูกแคชด้วย ดังนั้น ยิ่งคุณทำงานกับคิวบ์ OLAP นานเท่าไร ที่จริงแล้วคิวบ์ก็จะเริ่มทำงานเร็วขึ้นเท่านั้น นอกจากนี้ยังมีแนวคิดเรื่อง "การอุ่นเครื่องแคช" - การดำเนินการที่เตรียมระบบ OLAP สำหรับการทำงานกับรายงานเฉพาะ แบบสอบถาม หรือทั้งหมดรวมกัน

    การสนับสนุนหลายภาษา
    ใช่ใช่ใช่. อย่างน้อยที่สุด Analysis Services 2005/2008 (แม้ว่า Enterprise Edition) จะสนับสนุนหลายภาษา การแปลพารามิเตอร์สตริงของข้อมูลของคุณก็เพียงพอแล้ว และลูกค้าที่ระบุภาษาของเขาจะได้รับข้อมูลที่แปลเป็นภาษาท้องถิ่น

    ลูกบาศก์หลายมิติ

    แล้วลูกบาศก์หลายมิติพวกนี้คืออะไรกันแน่?
    ลองจินตนาการถึงอวกาศสามมิติที่มีแกนคือเวลา ผลิตภัณฑ์ และลูกค้า
    จุดในพื้นที่ดังกล่าวจะบ่งบอกถึงความจริงที่ว่าผู้ซื้อรายหนึ่งซื้อผลิตภัณฑ์เฉพาะในเดือนใดเดือนหนึ่ง

    ในความเป็นจริง ระนาบ (หรือเซตของจุดดังกล่าวทั้งหมด) จะเป็นลูกบาศก์ ดังนั้น เวลา ผลิตภัณฑ์ และลูกค้า จะเป็นมิติของมัน
    มันยากกว่าเล็กน้อยที่จะจินตนาการ (และวาด) ลูกบาศก์สี่มิติขึ้นไป แต่สาระสำคัญไม่เปลี่ยนแปลงและที่สำคัญที่สุดสำหรับระบบ OLAP มันไม่สำคัญเลยว่าคุณจะทำงานได้กี่มิติ (ภายในความสมเหตุสมผล) แน่นอน)

    MDX นิดหน่อย

    แล้วข้อดีของ MDX คืออะไร เป็นไปได้มากที่เราต้องอธิบายว่าเราต้องการเลือกข้อมูลอย่างไร อะไรกันแน่พวกเราต้องการ.
    ตัวอย่างเช่น,
    เลือก
    ( . ) บนคอลัมน์
    ( ., . ) บนแถว
    จาก
    ที่ไหน (., .)

    ซึ่งหมายความว่าฉันต้องการจำนวน iPhone ที่ขายได้ในเดือนมิถุนายนและกรกฎาคมในประเทศโมซัมบิก
    ในขณะเดียวกันฉันก็อธิบาย ที่นี่คือข้อมูลที่ฉันต้องการและ ยังไงฉันอยากเห็นพวกเขาในรายงาน
    สวยใช่มั้ยล่ะ?

    ต่อไปนี้ซับซ้อนกว่าเล็กน้อย:

    กับสมาชิก ใช้จ่ายเฉลี่ย AS
    . / .
    เลือก
    ( AverageSpend ) บนคอลัมน์
    ( .., .. ) บนแถว
    จาก
    ที่ไหน(.)

    * ซอร์สโค้ดนี้ถูกเน้นด้วย Source Code Highlighter

    อันที่จริงก่อนอื่นเรากำหนดสูตรในการคำนวณ "ขนาดการซื้อเฉลี่ย" และพยายามเปรียบเทียบว่าใคร (เพศใด) ใช้จ่ายเงินมากกว่าในการเยี่ยมชม Apple Store เพียงครั้งเดียว

    ภาษานี้น่าสนใจอย่างยิ่งทั้งในการศึกษาและการใช้งาน และอาจสมควรได้รับการอภิปรายมากมาย

    บทสรุป

    อันที่จริงบทความนี้ครอบคลุมแนวคิดพื้นฐานเพียงเล็กน้อย ฉันจะเรียกมันว่า "อาหารเรียกน้ำย่อย" - โอกาสที่จะสนใจชุมชน Habra ในหัวข้อนี้และพัฒนาต่อไป ในด้านการพัฒนา มีทุ่งนาขนาดใหญ่ที่นี่ และฉันยินดีที่จะตอบทุกคำถามของคุณ

    ป.ล.นี่เป็นโพสต์แรกของฉันเกี่ยวกับ OLAP และสิ่งพิมพ์ครั้งแรกเกี่ยวกับHabré - ฉันจะขอบคุณมากสำหรับข้อเสนอแนะที่สร้างสรรค์
    อัปเดต:ฉันโอนมันไปยัง SQL ฉันจะโอนมันไปที่ OLAP ทันทีที่พวกเขาอนุญาตให้ฉันสร้างบล็อกใหม่

    แท็ก: เพิ่มแท็ก