การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

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

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

ในกรณีของเดือน คุณจะมี 12 เดือนในหนึ่งปีเสมอ ในกรณีของควอเตอร์ คุณจะได้สี่ในสี่เสมอ สัปดาห์จะแตกต่างกัน เพราะมีเจ็ดวันในหนึ่งสัปดาห์ และ 52 สัปดาห์ในหนึ่งปี นั่นคือ 364 วัน ดังนั้นคุณจึงมีวันพิเศษอยู่ที่นั่น ในปีอธิกสุรทิน คุณมีเวลาเพิ่มอีกสองวัน

ดังนั้น ที่จริงจะสิ้นสุดลงในบางปี ตามรูปแบบการกำหนดหมายเลขสำหรับหมายเลขสัปดาห์ของ ISO ซึ่งบางครั้งมี 52 สัปดาห์ บางครั้งมี 53 สัปดาห์ สัปดาห์ที่ 53 เป็นสัปดาห์ที่จะเกิดปัญหามากที่สุด

สารบัญ

ปัญหาข่าวกรองเวลาของการคำนวณ DAX รายสัปดาห์

ในตัวอย่างนี้ ฉันใช้ราคาสปอตรวม ด้วยผลรวม ทำให้เห็นภาพและพูดถึงได้ง่ายขึ้น

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

ในกรณีนี้ ในแต่ละปี เราต้องการแสดงบรรทัดสำหรับสัปดาห์ที่ 53 ไม่ว่าปีนั้นจะมีสัปดาห์ที่ 53 หรือไม่ก็ตาม ดังนั้นคุณจะเห็นว่าในปี 2018 และ 2019 ไม่มีสัปดาห์ที่ 53 แต่ในปี 2020 มี เราต้องการให้สอดคล้องกันเพื่อให้บรรทัดที่ 53 อยู่ในแต่ละปี แต่เมตริกจะว่างเปล่าสำหรับปีที่ไม่มีปี 53

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

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

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

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

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

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

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

เรามีในการสร้างตารางจากคอลัมน์ CROSSJOIN ใช้ตารางสองตาราง แล้วตามด้วย VALUES ในหมายเลขสัปดาห์ของ ISO และเราจะจับคู่ข้อมูลเหล่านั้นเข้าด้วยกัน นั่นจะทำให้เรามี 53 สัปดาห์ในแต่ละปี

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

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

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

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

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

ถ้าเรากลับไปที่วิชวล เราต้องเปลี่ยนแถว แทนที่จะใช้หมายเลขปีและสัปดาห์ เราต้องการใช้หมายเลขปีและสัปดาห์จากตาราง CROSSJOIN และตอนนี้ เรามีสัปดาห์ที่ 53 ในปี 2018 ที่ว่างเปล่า และสัปดาห์ที่ 53 ในปี 2019 ที่ว่างเปล่า ในปี 2020 เรามีตัวเลขที่แท้จริงเนื่องจากมีสัปดาห์ที่ 53

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

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

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

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

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

แต่ถ้าเราดูที่ DAX เราจะเห็นว่าเป็น DAX เดียวกันกับที่สร้างตารางนั้นในรายงานอื่น ดังนั้น แทนที่จะเชื่อมโยงความสัมพันธ์ทางกายภาพ แล้วละเมิด Star Schema และแปลงให้เป็น Snowflake Schema เราสามารถรักษา Star Schema และใช้ความสัมพันธ์เสมือนได้

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

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

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

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence

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

การคำนวณ DAX รายสัปดาห์ – ปัญหา LuckyTemplates Time Intelligence


รับค่าสัปดาห์ก่อนหน้าของ LuckyTemplates โดยใช้ DAX และ Power Query
คำนวณยอดขายรายสัปดาห์ด้วย DAX ใน LuckyTemplates
Time Intelligence ใน DAX: วิธีเลือกระยะเวลาเริ่มต้นแบบไดนามิก

บทสรุป

ในบทช่วยสอนนี้ ฉันได้แสดงสองวิธีในการแก้ไขปัญหาการคำนวณ DAX รายสัปดาห์ใน LuckyTemplates หนึ่งคือการใช้ CROSSJOIN แต่มีข้อเสียบางประการ วิธีที่สองคือการใช้ TREATAS สร้างความสัมพันธ์เสมือนจริง และไม่ละเมิดแนวทางของ Star Schema

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

สิ่งที่ดีที่สุด

Leave a Comment

คู่มือการดาวน์โหลดและติดตั้ง R และ RStudio

คู่มือการดาวน์โหลดและติดตั้ง R และ RStudio

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

วิธีลดขนาดไฟล์ Excel – 6 วิธีที่มีประสิทธิภาพ

วิธีลดขนาดไฟล์ Excel – 6 วิธีที่มีประสิทธิภาพ

วิธีลดขนาดไฟล์ Excel – 6 วิธีที่มีประสิทธิภาพ

Power Automate คืออะไร? - สุดยอดคู่มือ

Power Automate คืออะไร? - สุดยอดคู่มือ

Power Automate คืออะไร? - สุดยอดคู่มือที่ช่วยให้คุณเข้าใจและใช้ได้อย่างมีประสิทธิภาพ

วิธีใช้ Power Query ใน Excel: คู่มือฉบับสมบูรณ์

วิธีใช้ Power Query ใน Excel: คู่มือฉบับสมบูรณ์

วิธีใช้ Power Query ใน Excel: คำแนะนำทั้งหมดเพื่อทำให้ข้อมูลของคุณมีประสิทธิภาพมากขึ้น

ตนเองคืออะไรใน 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 สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร