Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The FabCon + SQLCon recap series starts April 14th at 8am Pacific. If you’re tracking where AI is going inside Fabric, this first session is a can't miss. Register now

Reply
izhilin
Frequent Visitor

Get single value by date filter, similar to SQL LEFT JOIN / OUTER APPLY

Dear Colleagues,

 

I have 2 tables in my data model:

  1. Calendar (column "Date")
  2. Credit limits by customer (columns "Credit limit change date", "Credit limit change time", "Customer Nr", "Old credit limit", "New credit limit") - there can be multiple changes per one customer and date

I need to display a line chart:

  • Showing all dates from Calendar
  • By Customer
  • For each date, show "New credit limit" from Credit limits with "Credit limit change date" on or after Calendar.Date

So, in SQL I would just do:

 

select D.Date, CLValidAsOfDate."Customer Nr", CLValidAsOfDate."New credit limit"
from Date D
outer apply (select top 1 * from CreditLimits CL where CL."Credit limit change date" >= D.Date order by CL."Credit limit change date" asc, "Credit limit change time" desc) CLValidAsOfDate

 

What do I do in DAX?

 

Thank you!

 

Here is the pbix: https://1drv.ms/u/s!ApX8JJTnPqMHghFkPr1dcc9Ts5jX

3 REPLIES 3
v-juanli-msft
Community Support
Community Support

Hi @izhilin

Does my reply solve your question?

If not, Could you show the result table after applying SQL statement in SQL, so that i would know what i done wrong and modify to get the correct one?

 

Best Regards

Maggie

v-juanli-msft
Community Support
Community Support

Hi @izhilin

create a calculated column

sum1 = CALCULATE(SUM('Credit Limits'[New credit limit]),
ALLEXCEPT('Credit Limits','Credit Limits'[Customer Nr]),
FILTER('Calendar',[Credit Limit Change Date]>=[Date]))

8.png

 

If you'd like the consider the Credit Limit Change Time, you could add columns

 

rank1 = var rank1=RANKX(FILTER(ALL('Credit Limits'),'Credit Limits'[Customer Nr]=EARLIER('Credit Limits'[Customer Nr])),[Credit Limit Change Date],,ASC) 
        var rank2=RANKX(FILTER(ALL('Credit Limits'),[Customer Nr]=EARLIER([Customer Nr])&&[Credit Limit Change Date]=EARLIER([Credit Limit Change Date])),[Credit Limit Change Time],,ASC)
        Return rank1+rank2

sum2 = CALCULATE(SUM('Credit Limits'[New credit limit]),FILTER(ALLEXCEPT('Credit Limits','Credit Limits'[Customer Nr]),[rank1]<=EARLIER('Credit Limits'[rank1])))

 

Best Reagrds

Maggie

Anonymous
Not applicable

Hi 

@v-juanli-msft Did this resolve this issue?

 

i have a similar query i need to convert to DAX which nobody can answer, even the MVP's. Can you help?

 

SELECT *
FROM Fact f

Cross apply

select top 1
from dimension1 d1
where f.id=d1.id
and datefrom >=@From and dateto <=@To
order by datefrom desc

outer apply

select top 1
from dimension2 d2
where f.id=d2.id
and datefrom >=@From and dateto <=@To
order by datefrom desc

outer apply

select top 1
from dimension2 d2
where f.id=d2.id
and datefrom >=@From and dateto <=@To
order by datefrom desc

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

Check out the March 2026 Power BI update to learn about new features.