DAX ग्रुपिंग मूल्यांकन

Aug 16 2020

इस उपाय में - मैं ग्राहक आईडी द्वारा समूह में एक अस्थायी तालिका बना रहा हूं और प्रत्येक ग्राहक के लिए मिन ऑर्डर_डेट का वर्ष लौटाता हूं। मैं फिर उन ग्राहकों की # गिनती करना चाहता हूं जो किसी दिए गए वर्ष के लिए दिखाई देते हैं (मूल रूप से सिर्फ एक पंक्ति की गिनती)।

जो मैं समझने के लिए संघर्ष कर रहा हूं वह है - यह सूत्र SUMMARIZEइसके भीतर तालिका को देखने के लिए प्रतीत नहीं होता है। अगर मैं वर्ष और इस उपाय को एक मैट्रिक्स में रखता हूं, तो यह कच्चे टेबल के आधार पर गिना जाता है, न SUMMARIZEकि सूत्र में निर्मित समूहित संस्करण । किसी भी विचार क्यों यह इस तरह का मूल्यांकन कर रहा है?

COUNTROWS(
SUMMARIZE(
    Orders,
    Orders[Customer ID],
    "min_order_date_year",
    MIN(Orders[Order Date].[Year])))

जवाब

1 mkRabbani Aug 16 2020 at 14:14

आपके द्वारा प्रदान किए गए तर्क के अनुसार सूत्र ठीक है। आपको अपनी आवश्यकता और आपके कोड में क्या लिख ​​रहे हैं, दोनों के बारे में स्पष्ट करना होगा। आपका सूत्र ठीक वही लौट रहा है जो आप उसे निर्देश दे रहे हैं।

अगर मुझे सही समझ में आता है, तो आपको न्यूनतम वर्ष के लिए ग्राहक गणना की आवश्यकता है। यह कहें कि यदि आपके पास वर्ष 2019 के लिए 6 अद्वितीय ग्राहक हैं और वर्ष 2020 के लिए 11 अद्वितीय ग्राहक हैं, तो आप अपने उपाय से लौटने के लिए मूल्य 6 की तलाश कर रहे हैं।

अब, आपकी सारांश तालिका वास्तव में क्या लौटा रही है? यदि आप नीचे के रूप में केवल Summarize कोड के लिए एक अलग कस्टम तालिका बनाते हैं, तो आप देख सकते हैं कि तालिका वास्तव में आपके सभी ग्राहक नाम / आईडी को पहले कॉलम में रखेगी और दूसरा कॉलम उस ग्राहक के लिए उपलब्ध MIN वर्ष को छेद देगा।

orders_summarize = 
SUMMARIZE(
    Orders,
    Orders[customer id],
    "min_order_date_year",MIN(Orders[Order Date].[Year])
)

तो मूल रूप से आपके सारांश तालिका में सभी ग्राहक की सूची है। और अब आप अपने सारांश तालिका की पंक्तियों की गिनती कर रहे हैं जो वास्तव में अद्वितीय ग्राहकों की कुल संख्या वापस कर रही है।

अंत में, यदि आप एक विशिष्ट वर्ष (जैसे MIN वर्ष) के लिए ग्राहक गणना चाहते हैं, तो इन चरणों का पालन करें-

चरण -1: नीचे के रूप में एक कस्टम संक्षेप तालिका बनाएँ-

store_summarized_table = 
SUMMARIZE(
    store,
    store[Customer ID],
    "mindate",MIN(store[Order Date])
)

चरण -2: एक उपाय बनाएं-

count_cust_id = COUNT('store_summarized_table'[Customer ID])

चरण -3: अब अपने मैट्रिक्स दृश्यों को कॉन्फ़िगर करें जैसा कि नीचे की छवि में दिखाया गया है। आप छवि में आउटपुट भी प्राप्त कर सकते हैं-

भौतिक तालिका से बचने के लिए, आप इसे नीचे कर सकते हैं-

चरण -1: नीचे के रूप में एक कस्टम कॉलम बनाएँ-

is_min_year = 

// -- keep current row's customer id to a variable
VAR current_cust_id = store[Customer ID]
// -- keep current row's YEAR value to a variable
VAR current_year = store[Order Date].[Year]

// -- find the MIN YEAR from order date for the current row customer id
VAR min_year_current_custommer_id =  
CALCULATE(
    MIN(store[Order Date].[Year]),
    FILTER(
        store,
        store[Customer ID] = current_cust_id
    )
)

// -- check the current row's year is the MIN year of order date for the customer as well or not.
RETURN IF(current_year = min_year_current_custommer_id, 1,0)

या के रूप में एक उपाय बनाएँ

is_min_year_measure = 

VAR min_order_year_for_current_customer = 
CALCULATE(
    MIN(store[Order Date].[Year]),
    FILTER(
        ALL(store),
        store[Customer ID] = MIN(store[Customer ID])
    )
)

RETURN
IF ( MIN(store[Order Date].[Year]) = min_order_year_for_current_customer, 1,0)

चरण -2: नीचे के रूप में एक उपाय बनाएँ-

कस्टम कॉलम के लिए

count_cust_for_min_year = 
CALCULATE(
    DISTINCTCOUNT(store[Customer ID]),
    FILTER(
        store,
        store[is_min_year] = 1
    )
)

निर्मित उपाय के लिए

count_cust_for_min_year = 
CALCULATE(
    DISTINCTCOUNT(store[Customer ID]),
    FILTER(
        store,
        [is_min_year_measure] = 1
    )
)

अब "ऑर्डर डेट" जोड़ें और अपने मैट्रिक्स में "count_cust_for_min_year" को मापें। आउट पुट नीचे जैसा होगा-