ข้ามไปที่เนื้อหาหลัก
Office

บริบทในสูตรของ DAX

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

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

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

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

การทำความเข้าใจบริบท

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

ชนิดของบริบทที่แตกต่างกันได้แก่บริบทของแถวบริบทแบบสอบถามและบริบทตัวกรอง

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

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

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

ด้านบนของหน้า

บริบทแถว

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

ตัวอย่างเช่นสมมติว่าคุณสร้างคอลัมน์จากการคำนวณ = [ค่าขนส่งสินค้า] + [ภาษี],

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

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

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

= [ค่าขนส่งสินค้า] + ที่เกี่ยวข้อง (' ภูมิภาค ' [TaxRate])

สูตรนี้จะได้รับอัตราภาษีสำหรับภูมิภาคปัจจุบันจากตารางภูมิภาคเท่านั้น คุณไม่จำเป็นต้องรู้หรือระบุคีย์ที่เชื่อมต่อตาราง

บริบทแถวหลายแถว

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

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

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

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

= แม็กซ์ (ตัวกรอง (ยอดขาย, [ProdKey] = ก่อนหน้า ([ProdKey])), ยอดขาย [OrderQty])

สำหรับการฝึกปฏิบัติโดยละเอียดของสูตรนี้ให้ดูที่ก่อนหน้านี้

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

ด้านบนของหน้า

บริบทแบบสอบถาม

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

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

ตัวอย่างเช่นสมมติว่าคุณสร้างสูตรแบบง่ายนี้ที่รวมค่าในคอลัมน์กำไรของตารางยอดขาย: = SUM (' ยอดขาย ' [กำไร])

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

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

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

ด้านบนของหน้า

บริบทตัวกรอง

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างตัวกรองภายในสูตรให้ดูที่ฟังก์ชันตัวกรอง

สำหรับตัวอย่างของวิธีที่สามารถล้างตัวกรองเพื่อสร้างผลรวมทั้งหมดให้ดูที่ทั้งหมด

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

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

ด้านบนของหน้า

การกำหนดบริบทในสูตร

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

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

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

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

ตัวอย่างของบริบทในสูตร

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

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

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

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

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

ด้านบนของหน้า

อ้างอิงความสมบูรณ์

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

ถ้าคุณไม่คุ้นเคยกับแนวคิดข้อมูลที่เกี่ยวข้องเราขอแนะนำให้คุณอ่านหัวข้อเริ่มต้น,ภาพรวมของความสัมพันธ์

อ้างอิงความสมบูรณ์และความสัมพันธ์Power Pivot

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

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

การทำความเข้าใจเกี่ยวกับสมาชิกที่ไม่รู้จัก

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

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

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

การรักษาค่าที่ว่างเปล่าเปรียบเทียบกับแถวเปล่า

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

ด้านบนของหน้า

ขยายทักษะ Office ของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×