เมื่อก่อน
นําไปใช้กับ: การคํานวณคอลัมน์จากการคํานวณ ตารางจากการคํานวณ หน่วยวัดภาพการคํานวณ
ส่งกลับค่าปัจจุบันของคอลัมน์ที่ระบุในการส่งผ่านการประเมินภายนอกของคอลัมน์ที่กล่าวถึง
EARLIER มีประโยชน์สําหรับการคํานวณแบบซ้อนที่คุณต้องการใช้ค่าบางอย่างเป็นอินพุตและสร้างการคํานวณที่ยึดตามอินพุตนั้น ใน Microsoft Excel คุณสามารถทําการคํานวณดังกล่าวได้เฉพาะภายในบริบทของแถวปัจจุบันเท่านั้น อย่างไรก็ตาม ใน DAX คุณสามารถจัดเก็บค่าของอินพุต จากนั้นทําการคํานวณโดยใช้ข้อมูลจากตารางทั้งหมดได้
ส่วนใหญ่แล้วจะใช้ EARLIER ในบริบทของคอลัมน์จากการคํานวณ
ไวยากรณ์
EARLIER(<column>, <number>)
พารามิเตอร์
เงื่อนไข | คำนิยาม |
---|---|
คอลัมน์ | คอลัมน์หรือนิพจน์ที่แก้ไขเป็นคอลัมน์ |
num | (ไม่บังคับ) จํานวนบวกของการส่งผ่านการประเมินภายนอก ระดับการประเมินถัดไปจะแสดงด้วย 1 แต่จะแสดงด้วย 1 สองระดับจะแสดงแทนด้วย 2 และอื่น ๆ เมื่อละเว้นค่าเริ่มต้นคือ 1 |
ค่าที่ส่งกลับ
ค่าปัจจุบันของแถวจาก คอลัมน์ ที่ จํานวน การส่งผ่านการประเมินภายนอก
ข้อยกเว้น
คําอธิบายของข้อผิดพลาด
หมายเหตุ
EARLIER สําเร็จหากมีบริบทแถวก่อนที่จะเริ่มต้นการสแกนตาราง มิฉะนั้นจะส่งกลับข้อผิดพลาด
ประสิทธิภาพของ EARLIER อาจช้าเนื่องจากในทางทฤษฎีอาจต้องดําเนินการตามจํานวนที่ใกล้เคียงกับจํานวนแถวทั้งหมด (ในคอลัมน์) คูณด้วยจํานวนเดียวกัน (ขึ้นอยู่กับไวยากรณ์ของนิพจน์) ตัวอย่างเช่น หากคุณมี 10 แถวในคอลัมน์ คุณอาจต้องใช้การดําเนินการประมาณ 100 รายการ หากคุณมี 100 แถว คุณอาจดําเนินการได้เกือบ 10,000 รายการ
ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคํานวณหรือกฎการรักษาความปลอดภัยระดับแถว (RLS)
หมายเหตุ
ในทางปฏิบัติ กลไกการวิเคราะห์ในหน่วยความจํา VertiPaq จะดําเนินการปรับให้เหมาะสมเพื่อลดจํานวนการคํานวณจริง แต่คุณควรระมัดระวังเมื่อสร้างสูตรที่เกี่ยวข้องกับการเกิดซ้ํา
ตัวอย่าง
เพื่อแสดงให้เห็นถึงการใช้ EARLIER คุณจําเป็นต้องสร้างสถานการณ์จําลองที่คํานวณค่าอันดับ จากนั้นใช้ค่าอันดับดังกล่าวในการคํานวณอื่น
ตัวอย่างต่อไปนี้จะยึดตามตาราง อย่างง่ายนี้ ProductSubcategory ซึ่งแสดงยอดขายทั้งหมดสําหรับแต่ละ ProductSubcategory
ตารางสุดท้าย รวมถึงคอลัมน์การจัดอันดับจะแสดงที่นี่
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Bib-กางเกงขาสั้น | $156,167.88 | 18 |
26 | แร็คจักรยาน | $220,720.70 | 14 |
27 | แท่นวางจักรยาน | $35,628.69 | 30 |
28 | ขวดและกรง | $59,342.43 | 24 |
5 | ฉากด้านล่าง | $48,643.47 | 27 |
6 | เบรก | $62,113.16 | 23 |
19 | หมวก | $47,934.54 | 28 |
7 | โซ่ | $8,847.08 | 35 |
29 | น้ํายาทําความสะอาด | $16,882.62 | 32 |
8 | จานหน้า | $191,522.09 | 15 |
9 | ตีนผี | $64,965.33 | 22 |
30 | Fenders | $41,974.10 | 29 |
10 | ส้อม | $74,727.66 | 21 |
20 | ถุง มือ | $228,353.58 | 12 |
4 | แฮนด์ | $163,257.06 | 17 |
11 | ชุด หู ฟัง | $57,659.99 | 25 |
31 | หมวกกันน็อค | $451,192.31 | 9 |
32 | เป้น้ํา | $96,893.78 | 20 |
21 | เสื้อยืดฟุตบอล | $699,429.78 | 7 |
33 | ไฟ | 36 | |
34 | ล็อก | $15,059.47 | 33 |
1 | จักรยานเสือภูเขา | $34,305,864.29 | 2 |
12 | เฟรมจักรยานเสือภูเขา | $4,511,170.68 | 4 |
35 | แพนเนียร์ | 36 | |
13 | บันได | $140,422.20 | 19 |
36 | ปั๊ม | $12,695.18 | 34 |
2 | จักรยานเสือหมอบ | $40,551,696.34 | 1 |
14 | เฟรมถนน | $3,636,398.71 | 5 |
15 | อานม้า | $52,526.47 | 26 |
22 | กางเกงขาสั้น | $385,707.80 | 10 |
23 | ถุง เท้า | $28,337.85 | 31 |
24 | ถุง น่อง | $189,179.37 | 16 |
37 | ยางและท่อ | $224,832.81 | 13 |
3 | จักรยานแบบทัวริ่ง | $13,334,864.18 | 3 |
16 | โครงจักรยานทัวริ่ง | $1,545,344.02 | 6 |
25 | เสื้อกั๊ก | $240,990.04 | 11 |
17 | ล้อ | $648,240.04 | 8 |
การสร้างค่าอันดับ
วิธีหนึ่งในการรับค่าอันดับสําหรับค่าที่กําหนดในแถวคือการนับจํานวนแถวในตารางเดียวกันที่มีค่ามากกว่า (หรือเล็ก) กว่าค่าที่กําลังเปรียบเทียบ เทคนิคนี้ส่งกลับค่าว่างหรือศูนย์สําหรับค่าสูงสุดในตาราง ในขณะที่ค่าเท่ากันจะมีค่าอันดับเดียวกันและค่าถัดไป (หลังจากค่าเท่ากัน) จะมีค่าลําดับที่ไม่ใช่แบบต่อเนื่อง ดูตัวอย่างด้านล่าง
คอลัมน์ จากการคํานวณใหม่ SubCategorySalesRanking ถูกสร้างขึ้นโดยใช้สูตรต่อไปนี้
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
ขั้นตอนต่อไปนี้อธิบายวิธีการคํานวณโดยละเอียด
ฟังก์ชัน EARLIER รับค่าของ TotalSubcategorySales สําหรับแถวปัจจุบันในตาราง ในกรณีนี้ เนื่องจากเป็นการเริ่มต้นกระบวนการ จึงเป็นแถวแรกในตาราง
EARLIER([TotalSubcategorySales]) ประเมินเป็น $156,167.88 ซึ่งเป็นแถวปัจจุบันในลูปภายนอก
ตอนนี้ ฟังก์ชัน FILTER จะส่งกลับตารางที่แถวทั้งหมดมีค่า TotalSubcategorySales ใหญ่กว่า $156,167.88 (ซึ่งเป็นค่าปัจจุบันสําหรับ EARLIER)
ฟังก์ชัน COUNTROWS นับจํานวนแถวของตารางที่กรองแล้ว และกําหนดค่าให้กับคอลัมน์จากการคํานวณใหม่ในแถวปัจจุบันบวก 1 จําเป็นต้องเพิ่ม 1 เพื่อป้องกันค่าอันดับสูงสุดกลายเป็นค่าว่าง
สูตรคอลัมน์จากการคํานวณย้ายไปยังแถวถัดไปและทําซ้ําขั้นตอนที่ 1 ถึง 4 ขั้นตอนเหล่านี้จะถูกทําซ้ําจนกว่าจะถึงจุดสิ้นสุดของตาราง
ฟังก์ชัน EARLIER จะรับค่าของคอลัมน์ก่อนการดําเนินการบนตารางปัจจุบันเสมอ หากคุณต้องการรับค่าจากลูปก่อนหน้านั้น ให้ตั้งค่าอาร์กิวเมนต์ที่สองเป็น 2