มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

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

สารบัญ

มิติขยะคืออะไร?

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

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

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

การกำหนดขนาดขยะโดยใช้การเปรียบเทียบลิ้นชักขยะในครัว

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

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

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

การลดขนาดของตารางข้อเท็จจริง

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

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

ตรวจสอบปัญหาของสมาชิกฟอรัม

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

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

นั่นคือสองธงที่เราต้องการพัฒนา กระโดดเข้าสู่ LuckyTemplates และค้นหาวิธีการทำ

การสร้างแบบจำลองข้อมูลสำหรับมิติขยะ

มาดูแบบจำลองข้อมูลกัน มันเป็นแบบจำลองข้อมูลที่เรียบง่ายจริงๆ เรามีตารางวัน ที่ขยาย และตารางธุรกรรม

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

ตารางธุรกรรมของเรามีสามฟิลด์เท่านั้น: หมายเลขบัญชี วัน ที่ในใบแจ้งหนี้และปริมาณการขาย

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

เราควรทำใน Power Query หรือคลังข้อมูล/SQL หากเรามีตัวเลือกนั้น แต่สำหรับตอนนี้ สมมติว่าเราไม่ทำ และเรากำลังทำในPower Query

การระบุประเภทไคลเอนต์สำหรับมิติข้อมูลขยะ

สิ่งแรกที่เราจะทำคือหาประเภทลูกค้า ไม่ว่าจะเป็นธุรกรรมแบบคำสั่งซื้อเดียวหรือหลายคำสั่งซื้อ เราจะใช้Group By , Count , และCount Rows

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

จากนั้นเพิ่มข้อมูลทั้งหมดและทำให้เป็นการดำเนินการแถวทั้งหมดเพื่อไม่ให้เราส่งคืนตารางรวม แต่เป็นตารางเริ่มต้นที่มีจำนวนแถวนั้นในแต่ละแถว

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

ลองดูที่ผลลัพธ์และขยายผล

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

เราสามารถเพิ่มคอลัมน์ที่กำหนดเองและตั้งชื่อเป็นClient Typeจากนั้นจึงสร้างคำสั่ง IF คำสั่งคือถ้า Count เท่ากับ 1 แสดงว่าเป็นคำสั่งเดียว มิฉะนั้นจะเป็นหลายคำสั่ง

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

เราจะเปลี่ยนคอลัมน์เป็นประเภทข้อความ ตอนนี้ เรามีหนึ่งในสองมิติของเราที่ตั้งค่าไว้ในตารางข้อเท็จจริง

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

เราจะเพิ่มคอลัมน์ที่กำหนดเองและตั้งชื่อคอลัมน์ว่าวันนี้ จากนั้นเพิ่มDateTime.LocalNowเพื่อให้วันที่และเวลาปัจจุบันแก่เรา จากนั้นDate.Fromเพื่อให้เฉพาะส่วนวันที่แก่เรา

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

ลองเปลี่ยนเป็นชนิดข้อมูลวันที่ แล้วย้ายคอลัมน์ไปด้านหน้า

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

มีวิธีง่ายๆ ในการสร้างการลบระหว่างสองคอลัมน์วันที่ เพียงเน้นวันที่ทั้ง สองนั้น คลิกวันที่บนริบบิ้น แล้วคลิกลบวัน

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

ซึ่งจะทำให้คุณเห็นความแตกต่างระหว่างสองวันดังกล่าวในแง่ของจำนวนวัน ตั้งชื่อคอลัมน์ใหม่นี้ว่าDays Before to Today

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

ขั้นตอนต่อไปคือการหาจำนวนวันขั้นต่ำก่อนวันนี้ ซึ่งหมายถึงคำสั่งซื้อล่าสุดสำหรับแต่ละหมายเลขบัญชี ถ้าตัวเลขนั้นน้อยกว่าหรือเท่ากับ 45 แสดงว่าทำงานอยู่

ลองทำอีกกลุ่มตามแล้วขั้นสูงแล้วตามด้วยหมายเลขบัญชี

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

อีกครั้ง เราจะใช้ข้อมูลทั้งหมดสำหรับชื่อคอลัมน์ใหม่และแถวทั้งหมดสำหรับการดำเนินการ

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

จากนั้นเราจะขยายข้อมูลทั้งหมดและลบหมายเลขบัญชี

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

เมื่อเราขยายออกไป เราจะมีวันที่ขั้นต่ำระหว่างสำหรับหมายเลขบัญชี

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

สุดท้าย เราจะเพิ่มคอลัมน์ที่กำหนดเองอีกคอลัมน์หนึ่ง และเรียกว่าClient Timing เราจะใส่พารามิเตอร์ what-if โดยที่หากMin Days Between ของเรา น้อยกว่าหรือเท่ากับ 45 แสดงว่าเป็นActiveหรืออย่างอื่นStalled

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

การลบคอลัมน์ที่ไม่จำเป็นออก

เนื่องจากตอนนี้เรามีคอลัมน์สนับสนุนมากมาย ให้คลิกเลือกคอลัมน์และนำคอลัมน์ที่เราไม่ต้องการออก

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

แทนที่จะเก็บไว้ในตารางความจริง ลองทำซ้ำตารางนี้

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

เราจะเรียกตารางที่ซ้ำกันว่าAccount Flags

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

กลับไปที่ตารางธุรกรรม และนำ ฟิลด์ประเภทลูกค้าและเวลาลูกค้าออก

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

ขณะนี้เรามีตารางข้อเท็จจริงดั้งเดิมและตารางแฟล็กบัญชี

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

ตอนนี้เรามีตารางมิติข้อมูลขยะแล้ว ที่เหลือก็แค่กดClose & Apply ขั้นตอนต่อไปคือการเชื่อมต่อหมายเลขบัญชีจากตารางธงบัญชีของเรากับหมายเลขบัญชีในตารางธุรกรรมของเรา

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

เรามีความสัมพันธ์แบบหนึ่งต่อกลุ่มระหว่างตาราง Transactions (ซึ่งเป็นตารางข้อเท็จจริงของเรา) และตาราง Account Flags (ซึ่งเป็นตารางมิติขยะของเรา)


สร้างความสัมพันธ์แบบจำลองข้อมูลของคุณใน LuckyTemplates
Data Modeling In LuckyTemplates: Tips & Best Practices

บทสรุป

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

หากเราคลิกที่คำสั่งซื้อหลายรายการ เราจะเหลือเฉพาะคำสั่งซื้อที่มีหลายคำสั่งซื้อ และถ้าเราคลิกคำสั่งเดียว เราจะเหลือคำสั่งซื้อเดียว

มิติขยะ: มันคืออะไรและทำไมมันถึงเป็นอะไรก็ได้ยกเว้นขยะ

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

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


ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

วิธีบันทึกและโหลดไฟล์ RDS ใน R

วิธีบันทึกและโหลดไฟล์ RDS ใน R

คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ

บทนำในการกรองบริบทใน LuckyTemplates

บทนำในการกรองบริบทใน LuckyTemplates

ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

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

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

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

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้