แชร์ผ่าน


WINDOW

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

ส่งกลับหลายแถวซึ่งอยู่ในตําแหน่งภายในช่วงเวลาที่กําหนด

ไวยากรณ์

WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

พารามิเตอร์

เงื่อนไข คำนิยาม
from ระบุตําแหน่งที่หน้าต่างเริ่มต้น ซึ่งอาจเป็นนิพจน์ DAX ใด ๆ ที่แสดงค่าสเกลา
ลักษณะการทํางานขึ้นอยู่กับพารามิเตอร์ from_type:
- ถ้า from_type คือ REL จํานวนของแถวที่จะย้อนกลับ (ค่าลบ) หรือไปข้างหน้า (ค่าบวก) จากแถวปัจจุบันเพื่อรับแถวแรกในหน้าต่าง
- ถ้า from_typeABSและ from เป็นบวก ก็จะเป็นตําแหน่งเริ่มต้นของหน้าต่างจากจุดเริ่มต้นของพาร์ติชัน การทําดัชนีเป็นแบบ 1 และ 0 จะถูกแปลเป็น 1 ตัวอย่างเช่น 0 และ 1 หมายถึงหน้าต่างเริ่มต้นจากจุดเริ่มต้นของพาร์ติชัน ถ้า from เป็นลบจะเป็นตําแหน่งของการเริ่มต้นของหน้าต่างจากส่วนท้ายของพาร์ติชัน -1 หมายถึงแถวสุดท้ายในพาร์ติชัน
from_type ปรับเปลี่ยนลักษณะการทํางานของพารามิเตอร์ from ค่าที่เป็นไปได้คือค่า ABS (สัมบูรณ์) และ REL (สัมพัทธ์) ค่าเริ่มต้นคือ REL
to เหมือนกับ fromแต่ระบุจุดสิ้นสุดของหน้าต่าง แถวสุดท้ายจะรวมอยู่ในหน้าต่าง
to_type เหมือนกับ from_typeแต่ปรับเปลี่ยนลักษณะการทํางานของ to
relation (ไม่บังคับ) นิพจน์ตารางที่แสดงแถวผลลัพธ์
ถ้าระบุคอลัมน์ทั้งหมดใน partitionBy ต้องมาจากคอลัมน์นั้นหรือตารางที่เกี่ยวข้อง
ถ้าเว้นไว้: ต้องมีการระบุ
- orderBy อย่างชัดเจน
- นิพจน์ orderBy และ partitionBy ทั้งหมดต้องเป็นชื่อคอลัมน์ที่มีคุณสมบัติครบถ้วนและมาจากตารางเดียว
- ค่าเริ่มต้นคือ ALLSELECTED() ของคอลัมน์ทั้งหมดใน orderBy และ partitionBy
axis (ไม่บังคับ) แกนในรูปร่างวิชวล พร้อมใช้งานในการคํานวณวิชวลเท่านั้น และแทนที่ relation
orderBy (ไม่บังคับ) คําสั่ง ORDERBY() ที่มีนิพจน์ที่กําหนดวิธีการเรียงลําดับแต่ละพาร์ติชัน
ถ้าเว้นไว้: ต้องมีการระบุ
- relation อย่างชัดเจน
- ค่าเริ่มต้นการเรียงลําดับตามทุกคอลัมน์ใน relation ซึ่งยังไม่ได้ระบุใน partitionBy
blanks (ไม่บังคับ) ค่าจาระเหยที่กําหนดวิธีการจัดการค่าว่างเมื่อเรียงลําดับ relation หรือ axis
ค่าที่สนับสนุนคือ:
  • DEFAULT (ค่าเริ่มต้น) ซึ่งลักษณะการทํางานสําหรับค่าตัวเลขจะเป็นค่าว่างที่ถูกเรียงลําดับระหว่างค่าศูนย์และค่าลบ ลักษณะการทํางานสําหรับสตริงเป็นค่าว่างจะถูกเรียงลําดับก่อนสตริงทั้งหมด รวมถึงสตริงที่ว่างเปล่า
  • FIRSTช่องว่างจะถูกเรียงลําดับในตอนแรกเสมอ โดยไม่คํานึงถึงการเรียงลําดับจากน้อยไปหามากหรือจากมากไปหาน้อย
  • LASTช่องว่างจะถูกเรียงลําดับที่ส่วนท้ายเสมอ โดยไม่คํานึงถึงการเรียงลําดับจากน้อยไปหามากหรือจากมากไปหาน้อย
หมายเหตุ เมื่อพารามิเตอร์ และช่องว่างในฟังก์ชัน () บนนิพจน์แต่ละนิพจน์มีการระบุไว้ นิพจน์ orderBy แต่ละรายการจะมีความสําคัญสําหรับนิพจน์ orderBy ที่เกี่ยวข้องและนิพจน์ orderBy โดยไม่ต้องระบุ จะเป็นไปตามพารามิเตอร์ ในฟังก์ชันหลัก
partitionBy (ไม่บังคับ) คําสั่ง () ที่มีคอลัมน์ที่กําหนดวิธีการแบ่งพาร์ติชัน ถ้าเว้นไว้ relation จะถือว่าเป็นพาร์ติชันเดียว
matchBy (ไม่บังคับ) ส่วนคําสั่ง () ที่มีคอลัมน์ที่กําหนดวิธีการจับคู่ข้อมูลและระบุแถวปัจจุบัน
reset (ไม่บังคับ) พร้อมใช้งานในการคํานวณวิชวลเท่านั้น ระบุว่าการคํานวณรีเซ็ตหรือไม่ และระดับใดของลําดับชั้นคอลัมน์ของรูปร่างวิชวล ค่าที่ยอมรับคือ: การอ้างอิงเขตข้อมูลไปยังคอลัมน์ในรูปร่างวิชวลปัจจุบัน NONE (ค่าเริ่มต้น) LOWESTPARENTHIGHESTPARENTหรือจํานวนเต็ม ลักษณะการทํางานขึ้นอยู่กับเครื่องหมายจํานวนเต็ม:
- ถ้าศูนย์หรือเว้นไว้ การคํานวณจะไม่รีเซ็ต เทียบเท่ากับ NONE
- ถ้าเป็นค่าบวก จํานวนเต็มจะระบุคอลัมน์ที่เริ่มต้นจากสูงสุด โดยไม่ขึ้นอยู่กับเกรน HIGHESTPARENT เทียบเท่ากับ 1
- ถ้าเป็นค่าลบ จํานวนเต็มจะระบุคอลัมน์ที่เริ่มต้นจากต่ําสุด ซึ่งสัมพันธ์กับเกรนปัจจุบัน LOWESTPARENT เทียบเท่ากับ -1

ค่าผลลัพธ์

แถวทั้งหมดจากหน้าต่าง

หมายเหตุ

ยกเว้นสําหรับคอลัมน์ที่เพิ่มโดย DAX ฟังก์ชันตาราง แต่ละคอลัมน์ใน relationเมื่อไม่มี matchBy อยู่ หรือแต่ละคอลัมน์ใน matchBy และ partitionByเมื่อ matchBy ปรากฏ อยู่ จะต้องมีค่าภายนอกที่สอดคล้องกันเพื่อช่วยกําหนดแถวปัจจุบันที่จะดําเนินการ ถ้าทั้ง from_type และ to_type ทั้งสองค่ามี ABSค่า สิ่งต่อไปนี้จะนําไปใช้กับคอลัมน์ partitionBy เท่านั้น:

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

ถ้าคอลัมน์ของ relationทั้งหมดถูกเพิ่มโดยฟังก์ชันตาราง DAX ระบบจะแสดงข้อผิดพลาด

ถ้า matchBy ปรากฏ WINDOW จะพยายามใช้คอลัมน์ matchBy และ partitionBy เพื่อระบุแถว หากไม่มี matchBy และคอลัมน์ที่ระบุภายใน orderBy และ partitionBy ไม่สามารถระบุเฉพาะแถวทุกแถวใน relationแล้ว:

  • WINDOW จะพยายามค้นหาจํานวนคอลัมน์เพิ่มเติมน้อยที่สุดที่จําเป็นในการระบุเฉพาะทุกแถว
  • ถ้าสามารถพบได้คอลัมน์ดังกล่าว WINDOW จะผนวกคอลัมน์ใหม่เหล่านี้เข้ากับ orderByโดยอัตโนมัติ และแต่ละพาร์ติชันจะถูกเรียงลําดับโดยใช้ชุดคอลัมน์ orderBy ใหม่นี้
  • ถ้าไม่พบคอลัมน์ดังกล่าว ข้อผิดพลาดจะถูกส่งกลับ

ตารางเปล่าจะถูกส่งกลับถ้า:

  • ไม่มีค่าภายนอกที่สอดคล้องกันของคอลัมน์ orderBy หรือ partitionBy อยู่ภายใน relation
  • หน้าต่างทั้งหมดอยู่นอกพาร์ติชัน หรือจุดเริ่มต้นของหน้าต่างจะอยู่หลังจบ

ถ้า WINDOW ถูกใช้ภายในคอลัมน์จากการคํานวณที่กําหนดไว้ในตารางเดียวกันกับ relationและ orderBy จะถูกละเว้น ข้อผิดพลาดจะถูกส่งกลับ

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

reset สามารถใช้ในการคํานวณวิชวลเท่านั้น และไม่สามารถใช้ร่วมกับ orderBy หรือ partitionByได้ ถ้ามี reset อยู่ สามารถระบุ axis ได้ แต่ไม่สามารถระบุ relation ได้

ตัวอย่างที่ 1 - หน่วยวัด

หน่วยวัดต่อไปนี้:

3-day Average Price = 
AVERAGEX(
    WINDOW(
        -2,REL,0,REL,
        SUMMARIZE(ALLSELECTED('Sales'), 'Date'[Date], 'Product'[Product]),
        ORDERBY('Date'[Date]),
        KEEP,
        PARTITIONBY('Product'[Product])
    ), 
    CALCULATE(AVERAGE(Sales[Unit Price]))
)

ส่งกลับค่าเฉลี่ย 3 วันของราคาต่อหน่วยสําหรับแต่ละผลิตภัณฑ์ โปรดทราบว่าหน้าต่าง 3 วันประกอบด้วยสามวันซึ่งผลิตภัณฑ์มียอดขาย ไม่จําเป็นต้องเป็นสามวันปฏิทินติดต่อกัน

ตัวอย่างที่ 2 - หน่วยวัด

หน่วยวัดต่อไปนี้:

RunningSum =
SUMX (
    WINDOW (
        1, ABS, 0, REL,
        ALLSELECTED (
            'Date'[Fiscal Year],
            'Date'[Month Number Of Year]
        ),
        PARTITIONBY ( 'Date'[Fiscal Year] )
    ),
    [Total Sales]
)

แสดงผลรวมสะสมสําหรับยอดขายทั้งหมดตามเดือนของปี โดยรีสตาร์ตสําหรับทุกปีบัญชี:

ปี จํานวนเดือนของปี ยอดขาย RunningSum
ปีงบประมาณ 2018 1 $1,327,675 $1,327,675
ปีงบประมาณ 2018 2 $3,936,463 $5,264,138
ปีงบประมาณ 2018 3 $700,873 $5,965,011
ปีงบประมาณ 2018 4 $1,519,275 $7,484,286
ปีงบประมาณ 2018 5 $2,960,378 $10,444,664
ปีงบประมาณ 2018 6 $1,487,671 $11,932,336
ปีงบประมาณ 2018 7 $1,423,357 $13,355,693
ปีงบประมาณ 2018 8 $2,057,902 $15,413,595
ปีงบประมาณ 2018 9 $2,523,948 $17,937,543
ปีงบประมาณ 2018 10 $561,681 $18,499,224
ปีงบประมาณ 2018 11 $4,764,920 $23,264,145
ปีงบประมาณ 2018 12 $596,747 $23,860,891
FY2019 1 $1,847,692 $1,847,692
FY2019 2 $2,829,362 $4,677,054
FY2019 3 $2,092,434 $6,769,488
FY2019 4 $2,405,971 $9,175,459
FY2019 5 $3,459,444 $12,634,903
FY2019 6 $2,850,649 $15,485,552
FY2019 7 $2,939,691 $18,425,243
FY2019 8 $3,964,801 $22,390,045
FY2019 9 $3,287,606 $25,677,650
FY2019 10 $2,157,287 $27,834,938
FY2019 11 $3,611,092 $31,446,030
FY2019 12 $2,624,078 $34,070,109
FY2020 1 $3,235,187 $3,235,187
FY2020 2 $4,070,046 $7,305,233
FY2020 3 $4,429,833 $11,735,066
FY2020 4 $4,002,614 $15,737,680
FY2020 5 $5,265,797 $21,003,477
FY2020 6 $3,465,241 $24,468,717
FY2020 7 $3,513,064 $27,981,781
FY2020 8 $5,247,165 $33,228,947
FY2020 9 $5,104,088 $38,333,035
FY2020 10 $3,542,150 $41,875,184
FY2020 11 $5,151,897 $47,027,081
FY2020 12 $4,851,194 $51,878,275

ตัวอย่างที่ 3 - การคํานวณวิชวล

การคํานวณวิชวลต่อไปนี้ DAX คิวรี:

TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])

ส่งกลับยอดขายรวมตามเดือน ซึ่งคํานวณตามแต่ละปี สามารถใช้ค่า 1 และ -2 แทน HIGHESTPARENTที่มีผลลัพธ์เดียวกันได้

สกรีนช็อตด้านล่างแสดงเมทริกซ์วิชวลและนิพจน์การคํานวณวิชวล:

การคํานวณวิชวล

ตัวอย่างที่ 4 - การคํานวณวิชวล

การคํานวณวิชวลต่อไปนี้ DAX คิวรี:

TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])

ส่งกลับยอดขายรวมตามเดือน โดยคํานวณตามแต่ละไตรมาส

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM