แชร์ผ่าน


ก่อนหน้า

นําไปใช้กับ:การคํานวณคอลัมน์จากการคํานวณ ตารางจากการคํานวณ หน่วยวัดการคํานวณวิชวล

ส่งกลับค่าปัจจุบันของคอลัมน์ที่ระบุในการส่งผ่านการประเมินภายนอกของคอลัมน์ที่กล่าวถึง

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  

ขั้นตอนต่อไปนี้อธิบายวิธีการคํานวณโดยละเอียด

  1. ฟังก์ชัน EARLIER รับค่าของ TotalSubcategorySales สําหรับแถวปัจจุบันในตาราง ในกรณีนี้ เนื่องจากเป็นการเริ่มต้นกระบวนการ จึงเป็นแถวแรกในตาราง

  2. EARLIER([TotalSubcategorySales]) ประเมินเป็น $156,167.88 ซึ่งเป็นแถวปัจจุบันในลูปภายนอก

  3. ตอนนี้ ฟังก์ชัน FILTER จะส่งกลับตารางที่แถวทั้งหมดมีค่า TotalSubcategorySales ใหญ่กว่า $156,167.88 (ซึ่งเป็นค่าปัจจุบันสําหรับ EARLIER)

  4. ฟังก์ชัน COUNTROWS นับจํานวนแถวของตารางที่กรองแล้ว และกําหนดค่าให้กับคอลัมน์จากการคํานวณใหม่ในแถวปัจจุบันบวก 1 จําเป็นต้องเพิ่ม 1 เพื่อป้องกันค่าอันดับสูงสุดกลายเป็นค่าว่าง

  5. สูตรคอลัมน์จากการคํานวณย้ายไปยังแถวถัดไปและทําซ้ําขั้นตอนที่ 1 ถึง 4 ขั้นตอนเหล่านี้จะถูกทําซ้ําจนกว่าจะถึงจุดสิ้นสุดของตาราง

ฟังก์ชัน EARLIER จะรับค่าของคอลัมน์ก่อนการดําเนินการบนตารางปัจจุบันเสมอ หากคุณต้องการรับค่าจากลูปก่อนหน้านั้น ให้ตั้งค่าอาร์กิวเมนต์ที่สองเป็น 2

ฟังก์ชัน EARLIEST
ฟังก์ชันตัวกรอง