Bonjour à tous,
L'objectif est de créer une table qui identifie les clients qui n'ont pas acheter depuis plus de 20 jours.
Le jour de référence pour calculer la période est la date du dernier achat dans la table des Ventes (Fsales)
Mon code initial ci-dessous génère l'erreurA function 'CALCULATE' has been used in a True/False expression that is used as a table filter expression. This is not allowed.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SalesCustomerLastPurchase = CALCULATETABLE ( SUMMARIZE ( fSales// table , fSales[customer_id] , dCustomer[customer_first-name] , "sale date last", MAX(fSales[transaction_date]) , "Period no sales", DATEDIFF(CALCULATE(MAX(fSales[transaction_date]), all(fSales)) , MAX(fSales[transaction_date]), DAY) ) , DATEDIFF(MAX(fSales[transaction_date]), CALCULATE(MAX(fSales[transaction_date]), all(fSales)), DAY) >= 20 // => CALCULATE' has been used in a True/False expression that is used as a table filter expression. This is not allowed. )
Le code pour le filtre ci-dessous génère la même erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part , MAX(fSales[transaction_date])- CALCULATE(MAX(fSales[transaction_date]), all(fSales)) >= 20 // CALCULATE' has been used in a True/False expression that is used as a table filter expression. This is not allowed.
Qui a une idée ?
Merci par avance
Mes solutions de contournement mais la solution 2 pose une autre question (Cf. Solution 2)
Solution 2 mais elle suscite une autre question, pourquoi faut-il utiliser CALCULATE dans DATEDIFF sur les 2 dates sinon cela ne fonctionne pas alors que dans la solution 1 seulement sur 1 seul !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 fSalesCustomerLastPurchase = FILTER ( CALCULATETABLE ( SUMMARIZE ( fSales// table , fSales[customer_id] , dCustomer[customer_first-name] , "sale date last", MAX(fSales[transaction_date]) , "Period no sales", DATEDIFF(MAX(fSales[transaction_date]),CALCULATE(MAX(fSales[transaction_date]), all(fSales)), DAY) ) ) , [Period no sales] >= 20 )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CustomerLastPurchase = /*SELECTCOLUMNS ( */FILTER ( ADDCOLUMNS ( SUMMARIZE ( 'fSales', 'fSales'[customer_id] ,'dCustomer'[customer_first-name] ) ,"LastPurchaseDate", MAX('fSales'[transaction_date]) ,"Period no sale",DATEDIFF(CALCULATE(MAX('fSales'[transaction_date])), CALCULATE(MAX('fSales'[transaction_date]), ALL('fSales')), DAY) ) , [Period no sale] >= 20 ) /* ,'fSales'[customer_id],'dCustomer'[customer_first-name], [LastPurchaseDate] )*/
Partager