ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
วันนี้ฉันต้องการพูดคุยเกี่ยวกับแนวคิดการสร้างแบบจำลองข้อมูลที่เรียกว่ามิติขยะ จากชื่อ คุณอาจคิดว่ามันเป็นเทคนิคที่ดูเสื่อมเสียและเป็นสิ่งที่คุณต้องการหลีกเลี่ยง แต่จริงๆ แล้วมันเป็นวิธีการที่มีประโยชน์
อันที่จริง ฉันทำงานกับคำถามจากและมิติข้อมูลขยะเป็นโซลูชันที่สมบูรณ์แบบสำหรับคำถามนี้ เมื่อคุณเห็นและเข้าใจแล้ว คุณจะพบว่ามีการประยุกต์ใช้มากมายในงานของคุณเอง คุณสามารถดูวิดีโอทั้งหมดของบทช่วยสอนนี้ได้ที่ด้านล่างของบล็อกนี้
สารบัญ
มิติขยะคืออะไร?
ชุดเครื่องมือคลังข้อมูลของคิมบอลล์และรอสซึ่งเป็นหนึ่งในคัมภีร์ไบเบิ้ลของการสร้างแบบจำลองมิติ ให้นิยามว่าเป็นการจัดกลุ่มของแฟล็กและตัวบ่งชี้จำนวนสมาชิกต่ำโดยทั่วไป จำนวนสมาชิกต่ำหมายถึงการสังเกตที่ไม่ซ้ำกันจำนวนเล็กน้อยภายในฟิลด์ที่กำหนด
ในตัวอย่างของเรา เรามีโมเดลข้อมูลสำหรับธุรกิจของเราในการสร้างพีซีแบบกำหนดเอง โมเดลข้อมูลเกี่ยวข้องกับคำสั่งซื้อและใบแจ้งหนี้ เรายังมีแฟล็กจำนวนหนึ่งที่เราสามารถจับประเภทของโปรเซสเซอร์ประเภทของ การกำหนดค่า ทาวเวอร์ (กะทัดรัดหรือเต็ม) และวัตถุประสงค์ (เกมหรือเวิร์กสเตชัน)
การกำหนดขนาดขยะโดยใช้การเปรียบเทียบลิ้นชักขยะในครัว
หากคุณดูที่แต่ละช่องเหล่านี้ มีเพียงสองข้อสังเกตที่ไม่ซ้ำกันในแต่ละช่อง นี่คือสิ่งที่ 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: ตัวอย่างในโลกแห่งความเป็นจริง
คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates
ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก
บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ
ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น
ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร
เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates
บทช่วยสอนนี้จะหารือเกี่ยวกับแนวคิดของการทำให้แคชข้อมูลเป็นรูปธรรมและวิธีที่สิ่งเหล่านี้ส่งผลต่อประสิทธิภาพของ DAX ในการให้ผลลัพธ์
หากคุณยังคงใช้ Excel อยู่จนถึงตอนนี้ นี่เป็นเวลาที่ดีที่สุดในการเริ่มใช้ LuckyTemplates สำหรับความต้องการในการรายงานทางธุรกิจของคุณ
เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้