Forum Discussion
Count with OR Condition
So, with the above dummy data, should ActiveClients output to 4 or 5 (because, although Bruce has 0 fee, he still counts if you factor in joint client fee/status)?
Hi,
It still does not show them as Active, it is the 2nd client with the fee income and because client 1 fee income, in this case Bruce, is 0 then both the clients are not counted.
We need a way to count both clients income.
I've added columns now in the clients table by merging Clients and Income in Power Query, this now shows the income for each client and I used a measure to sum the income. The screenshot below shows their joint income to be £2,090 but as Bruce income is O the result of the measure is still blank where I would expect a 1
Ideally I dont want to merge tables as that seems slower than using measures but I just wanted to show that the end result is the same.
- MarkLaf3 years agoSuper User
Okay, I think I understand what you are going for. I was definitely confusing myself and seeing some dummy data helped. If I understand correctly now, you should be fine with your model as is, just add an inactive relationship between Clients and Income.
Then you can turn on the relationship to get the fee associated with Clients:
ActiveClients = CALCULATE( COUNTROWS( SoleClients ), FILTER( SoleClients, VAR _clientsFee = CALCULATE( SUM( Income[Fee] ), USERELATIONSHIP ( Clients[CRMContactId2], Income[ClientCRMContactId] ) ) VAR _soleClientFee = CALCULATE( SUM( Income[Fee] ) ) RETURN _soleClientFee + _clientsFee >= 1 ), FILTER( SoleClients, "Active" IN { SoleClients[ActiveStatus], RELATED( Clients[ActiveStatus] ) } ) )- DataMinion3 years agoHelper I
Hi,
Thanks MarkLaf I really appreciate your help with this.
I'm still not getting the desired results though and include a screenshot below of my model as it doesn't have the same relationship between the Clients and Income tables as yours.
Its a many to many relationship as not all clients on the Clients table have a partner so there are blanks for CRMContactID2 for some. I filtered these out but I still got the same message.
When I click on the Learn more link this takes me to documentation on the cardinality rules and suggests I can't use the RELATED function. I honestly do not know whether this will make an impact but just letting you know.
https://learn.microsoft.com/en-gb/power-bi/transform-model/desktop-many-to-many-relationships
I also don't understand this part of your function so thought I'd best check
FILTER(
SoleClients,
"Active" IN { SoleClients[ActiveStatus], RELATED( Clients[ActiveStatus] ) }
)
There is no existing column SoleClients[ActiveStatus] I can add in but not sure what it means. I have another lookup table to determine what the Active Status is of the client, I can add a column if this will help.
Thanks again for your help
- MarkLaf3 years agoSuper User
Re: the Active IN filter, I had misread your formulas in your original post and missed that you have a separate ActiveStatus table. Similar to your issue with Income, you'll want to establish a relationship between Clients and ActiveStatus rather than solely rely on the SoleClient/ActiveStatus relationship or else you will just get data from other tables related to Clients[CRMContactId] and not Clients[CRMContactId2]. For now I'll just address the income conditional; we can tackle the active status if you can share details on relationship between ActiveStatus and SoleClient (i.e., is it on CRMContactId?).
I'm pretty sure we just need one tweak to get the previous measure working (along with removing active check for now at least): using CROSSFILTER to disable the SoleClients-->Income relationship.
ActiveClients_FeeOnly = CALCULATE( COUNTROWS( SoleClients ), FILTER( SoleClients, VAR _clientsFee = CALCULATE( SUM( Income[Fee] ), USERELATIONSHIP ( Clients[CRMContactId2], Income[ClientCRMContactId] ), CROSSFILTER ( SoleClients[CRMContactId], Income[ClientCRMContactId], NONE ) ) VAR _soleClientFee = CALCULATE( SUM( Income[Fee] ) ) RETURN _soleClientFee + _clientsFee >= 1 ) )Alternatively, if it would be useful to pull out the embedded combined fee calc, you could split the above into two measures:
Combined Fee = VAR _clientsFee = CALCULATE( SUM( Income[Fee] ), USERELATIONSHIP ( Clients[CRMContactId2], Income[ClientCRMContactId] ), CROSSFILTER ( SoleClients[CRMContactId], Income[ClientCRMContactId], NONE ), DISTINCT( Clients[CRMContactId2] ) ) VAR _soleClientFee = CALCULATE( SUM( Income[Fee] ), DISTINCT( SoleClients[CRMContactId] ) ) RETURN _soleClientFee + _clientsFee ActiveClients_FeeOnly_MeasureRef = CALCULATE( COUNTROWS( SoleClients ), FILTER( SoleClients, [Combined Fee] >= 1 ) )