Forum Discussion

Laman's avatar
Laman
New Member
2 years ago

DAX Formula

Hi! I want to get products which are sold n month sequentially.   i wrote a dax measure , doest give an error but also doesnt works well. Example: if i want to find products which are sold 6  month sequentially, in a result it gives a product whcih are sold 3 month sequentially.

 

 

VAR NumberOfMonths = 6

VAR LastNMonths =
DATESINPERIOD(
'Date'[Date],
MAX('Date'[Date]),
-NumberOfMonths,
MONTH
)

VAR SelectedProductIDs =
SUMMARIZE(
FILTER(
'_Measures - Sales Invoice',
'_Measures - Sales Invoice'[SalesInvoiceDateID] IN LastNMonths
),
'_Measures - Sales Invoice'[ProductSID],
"MonthCount", DISTINCTCOUNT('_Measures - Sales Invoice'[SalesInvoiceDateID])
)

VAR ProductsWithSales =
FILTER(
SelectedProductIDs,
[MonthCount] = NumberOfMonths
)

RETURN
IF(
COUNTROWS('_Measures - Sales Invoice') > 0,
1,
0
)

 

3 Replies

  • Laman , Try updating your measure as

     

    VAR NumberOfMonths = 6

    VAR LastNMonths =
    DATESINPERIOD(
    'Date'[Date],
    MAX('Date'[Date]),
    -NumberOfMonths,
    MONTH
    )

    VAR SalesInLastNMonths =
    FILTER(
    '_Measures - Sales Invoice',
    '_Measures - Sales Invoice'[SalesInvoiceDateID] IN LastNMonths
    )

    VAR ProductMonthCount =
    ADDCOLUMNS(
    SUMMARIZE(
    SalesInLastNMonths,
    '_Measures - Sales Invoice'[ProductSID],
    'Date'[YearMonth]
    ),
    "MonthCount", COUNTROWS(SalesInLastNMonths)
    )

    VAR ProductsWithSalesInAllMonths =
    FILTER(
    ProductMonthCount,
    [MonthCount] = NumberOfMonths
    )

    RETURN
    IF(
    COUNTROWS(ProductsWithSalesInAllMonths) > 0,
    1,
    0
    )

  • Anonymous's avatar
    Anonymous
    Not applicable

    I feel the below revised formula may works

    VAR NumberOfMonths = 6

    VAR LastNMonths =
    DATESINPERIOD(
    'Date'[Date],
    MAX('Date'[Date]),
    -NumberOfMonths,
    MONTH
    )

    VAR SelectedProductIDs =
    SUMMARIZE(
    FILTER(
    '_Measures - Sales Invoice',
    '_Measures - Sales Invoice'[SalesInvoiceDateID] IN LastNMonths
    ),
    '_Measures - Sales Invoice'[ProductSID],
    "MonthCount", DISTINCTCOUNT('_Measures - Sales Invoice'[SalesInvoiceDateID].[Month])
    )

    VAR ProductsWithSales =
    FILTER(
    SelectedProductIDs,
    [MonthCount] = NumberOfMonths
    )

    RETURN
    IF(
    COUNTROWS(FILTER('_Measures - Sales Invoice', '_Measures - Sales Invoice'[ProductSID] IN ProductsWithSales)) > 0,
    1,
    0
    )

    • Laman's avatar
      Laman
      New Member

      Hello Anonymous thanks for repling. I got this error " Expression: The number of arguments is invalid. Function CONTAINSROW must have a value for each column in the table expression." how can i fix it?