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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
RvdHeijden
Post Prodigy
Post Prodigy

Difficult formula, just can't seem to get it to work

Ive got this formula, but can't seem to get it to work.

It returns the error:

 

In DATEDIFF function, the start date cannot be greater than the end dateThe current operation was cancelled because another operation in the transaction failed.

 

It probably is because there are BLANK dates in the colums but how can i change this formula so that it wont return an error.

Something like if the 'DueDate' is blank is should use TODAY () or something ??

 

 

Current Sick Hour =
var currMin=MAX(Verzuimverloop[Datum ziektemelding])
var currMax=MAX(Verzuimverloop[DueDate])
var currDate=MAX('Date'[Date])
var leftPart=DATEDIFF(currMin;DATE(YEAR(currMin);MONTH(currMin);DAY(currMin))+TIME(16;30;0);HOUR)-if(HOUR(currMin)<11;2;if(HOUR(currMin)>11&&HOUR(currMin)<13;13-HOUR(currMin)))
var rightPart=DATEDIFF(DATE(YEAR(currMax);MONTH(currMax);DAY(currMax))+TIME(8;0;0);currMax;HOUR)-if(HOUR(currMin)>13;2;if(HOUR(currMin)>11&&HOUR(currMin)<13;13-HOUR(currMin)))
return
if(OR(WEEKDAY(currDate;2)=6;WEEKDAY(currDate;2)=7)||
 OR(DATEVALUE(currDate)<DATEVALUE(currMin);DATEVALUE(currDate)>DATEVALUE(currMax));0;
 if(DATEVALUE(currDate)>DATEVALUE(currMin)&&DATEVALUE(currDate)<DATEVALUE(currMax);8;
  if(DATEVALUE(currDate)=DATEVALUE(currMin);leftPart;rightPart)))

1 ACCEPTED SOLUTION

Hi @RvdHeijden,

 

This scenario should use table Verzuimverloop. That's why we take this table back. Maybe the formula is this one:

Aantal ziektemeldingen =
CALCULATE (
    COUNT ( 'Verzuimverloop'[Naam voluit] );
    ALLEXCEPT ( 'Aantal keren ziek'; 'Aantal keren ziek'[Naam voluit] )
)

Best Regards!

Dale

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

105 REPLIES 105
Phil_Seamark
Employee
Employee

Hi @RvdHeijden

 

You could wrap an IFERROR around your DATEDIFF function like this to help track down the rows causing the issues (any with -1)

 

 

rightPart=IFERROR(
DATEDIFF(DATE(YEAR(currMax);MONTH(currMax);DAY(currMax))+TIME(8;0;0);currMax;HOUR)
,-1)

 


To learn more about DAX visit : aka.ms/practicalDAX

Proud to be a Datanaut!

@Phil_Seamark

That solved the problem with the error but the result is 0, on all the records so that wasn't what i hoped for 🙂

Im not sure how to solve the problem

Current Sick Hour =
var currMin=MAX(Verzuimverloop[Datum ziektemelding])
var currMax=MAX(Verzuimverloop[DueDate])
var currDate=MAX('Date'[Date])
var leftPart=DATEDIFF(currMin;DATE(YEAR(currMin);MONTH(currMin);DAY(currMin))+TIME(16;30;0);HOUR)-if(HOUR(currMin)<11;2;if(HOUR(currMin)>11&&HOUR(currMin)<13;13-HOUR(currMin)))
var rightPart=IFERROR(DATEDIFF(DATE(YEAR(currMax);MONTH(currMax);DAY(currMax))+TIME(8;0;0);currMax;HOUR);-1)-if(HOUR(currMin)>13;2;if(HOUR(currMin)>11&&HOUR(currMin)<13;13-HOUR(currMin)))
return
if(OR(WEEKDAY(currDate;2)=6;WEEKDAY(currDate;2)=7)||
 OR(DATEVALUE(currDate)<DATEVALUE(currMin);DATEVALUE(currDate)>DATEVALUE(currMax));0;
 if(DATEVALUE(currDate)>DATEVALUE(currMin)&&DATEVALUE(currDate)<DATEVALUE(currMax);8;
  if(DATEVALUE(currDate)=DATEVALUE(currMin);leftPart;rightPart)))

HI @RvdHeijden

 

I'd suggest breaking down your long forumla into smaller sections.  Create a few columns to show the various parts of your DAX and maybe this will highlight the area/data that is causing you the problem.  

 

Once you have found the issue you can remove the columns used to diagnose.  

 

DAX is definitely easier in baby-steps 🙂


To learn more about DAX visit : aka.ms/practicalDAX

Proud to be a Datanaut!

@Phil_Seamark 

Could you help me in doing this ?

 

Im not that good in Dax besides i got this formula on this forum so it's not one ive made myself

Hi @RvdHeijden

 

Formatting the DAX out makes it a little easier to digest.  I have done this for you (although using commas instead of semi-colons)

 

 

Column = 
VAR currMin =
    MAX ( Verzuimverloop[Datum ziektemelding] )
VAR currMax =
    MAX ( Verzuimverloop[DueDate] )
VAR currDate =
    MAX ( 'Date'[Date] )
VAR leftPart =
    DATEDIFF (
        currMin,
        DATE ( YEAR ( currMin ), MONTH ( currMin ), DAY ( currMin ) )
            + TIME ( 16, 30, 0 ),
        HOUR
    )
        - IF (
            HOUR ( currMin ) < 11,
            2,
            IF ( HOUR ( currMin ) > 11 && HOUR ( currMin ) < 13, 13 - HOUR ( currMin ) )
        )
VAR rightPart =
    IFERROR (
        DATEDIFF (
            DATE ( YEAR ( currMax ), MONTH ( currMax ), DAY ( currMax ) ) + TIME ( 8, 0, 0 ),
            currMax,
            HOUR
        ),
        -1
    )
        - IF (
            HOUR ( currMin ) > 13,
            2,
            IF ( HOUR ( currMin ) > 11 && HOUR ( currMin ) < 13, 13 - HOUR ( currMin ) )
        )
RETURN
    IF (
        OR ( WEEKDAY ( currDate, 2 ) = 6, WEEKDAY ( currDate, 2 ) = 7 )
            || OR (
                DATEVALUE ( currDate ) < DATEVALUE ( currMin ),
                DATEVALUE ( currDate ) > DATEVALUE ( currMax )
            ),
        0,
        IF (
            DATEVALUE ( currDate ) > DATEVALUE ( currMin )
                && DATEVALUE ( currDate ) < DATEVALUE ( currMax ),
            8,
            IF ( DATEVALUE ( currDate ) = DATEVALUE ( currMin ), leftPart, rightPart )
        )
    )

 

 

This should make it easier to grab parts of the code into new columns.

 

eg, you can have a column that is just 

 

 

 

Column = 
VAR currMin =
    MAX ( Verzuimverloop[Datum ziektemelding] )
VAR currMax =
    MAX ( Verzuimverloop[DueDate] )
VAR currDate =
    MAX ( 'Date'[Date] )
VAR leftPart =
    DATEDIFF (
        currMin,
        DATE ( YEAR ( currMin ), MONTH ( currMin ), DAY ( currMin ) )
            + TIME ( 16, 30, 0 ),
        HOUR
    )
        - IF (
            HOUR ( currMin ) < 11,
            2,
            IF ( HOUR ( currMin ) > 11 && HOUR ( currMin ) < 13, 13 - HOUR ( currMin ) )
        )
VAR rightPart =
    IFERROR (
        DATEDIFF (
            DATE ( YEAR ( currMax ), MONTH ( currMax ), DAY ( currMax ) ) + TIME ( 8, 0, 0 ),
            currMax,
            HOUR
        ),
        -1
    )

return rightPart

  or

 

 

 

Column = 
VAR currMin =
    MAX ( Verzuimverloop[Datum ziektemelding] )
VAR currMax =
    MAX ( Verzuimverloop[DueDate] )
VAR currDate =
    MAX ( 'Date'[Date] )
VAR leftPart =
    DATEDIFF (
        currMin,
        DATE ( YEAR ( currMin ), MONTH ( currMin ), DAY ( currMin ) )
            + TIME ( 16, 30, 0 ),
        HOUR
    )
        - IF (
            HOUR ( currMin ) < 11,
            2,
            IF ( HOUR ( currMin ) > 11 && HOUR ( currMin ) < 13, 13 - HOUR ( currMin ) )
        )
VAR rightPart =
  IF (
            HOUR ( currMin ) > 13,
            2,
            IF ( HOUR ( currMin ) > 11 && HOUR ( currMin ) < 13, 13 - HOUR ( currMin ) )
        )

return rightPart

 


To learn more about DAX visit : aka.ms/practicalDAX

Proud to be a Datanaut!

@Phil_Seamark

I used the formulas you provided and first of all thanks for your help.

 

The first formula returns values of -1 (on all records)

The second formula returns only BLANK values.


The combination, the originial formula returned the value 0 (on all records)

 

Im confused now :):)

 

This is what i intend to use the formula for and @v-shex-msft helped me with this as far as he could


1. Calculate the date diff.(new condition: break days not need to calculated)
2. Consider the break days, add conditions to filter the break days.
3. Convert to work hours.(new  condition: break hours should be filtered)
4. Add conditions to filter the break hours.
5. Summary these values with the same customer.
6. Add conditions to summary specify date range values.
7. Modify it to dynamic date range calculate based on based on date table.
8. Summary same department work hours.

 

Detailed description of formula calculate:

Sick leave range: 5/2/2017 10:00 am to 5/8/2017 11:00 am

Left part: 5/2/2017 10:00 am to 5/2/2017 6:00 pm (6 hours)
Middle part: 5/3/2017 to  5/5/2017 (3 days = 24 hours)
Right part: 5/8/2017 8:00 am to 5/8/2017 11:00 am (3 hours)

 

Total: 6+24+3=33 hours

@RvdHeijden

 

Hi,

You have so many conditions. Your formula may not be proper for you. So I rebuild a new one. Here is the step.

A few defaults:

  1. Workday from Monday to Friday.
  2. Work hours are 8:00-11:00 and 13:00-16:30
  3. Holidays aren’t concerned.
  4. The formulas below are the calculated column each.
  5. 9999 here means ERROR. Please correct the errors first before go any further.

There are some names you may need to change. Good luck!

  1. Let’s check the time in the table first, so we could use less IF condition.

Check =

IF (

    Verzuimverloop[StartTime] < Verzuimverloop[EndTime],

    IF (

        (

            Verzuimverloop[StartTime]

                < Verzuimverloop[StartTime].[Date] + TIME ( 8, 0, 0 )

        )

            || (

                Verzuimverloop[StartTime]

                    > Verzuimverloop[StartTime].[Date] + TIME ( 11, 0, 0 )

                    && Verzuimverloop[StartTime]

                        < Verzuimverloop[StartTime].[Date] + TIME ( 13, 0, 0 )

            ),

        9999,

        IF (

            (

                Verzuimverloop[EndTime]

                    > Verzuimverloop[EndTime].[Date] + TIME ( 16, 30, 0 )

            )

                || (

                    Verzuimverloop[EndTime]

                        > Verzuimverloop[EndTime].[Date] + TIME ( 11, 0, 0 )

                        && Verzuimverloop[EndTime]

                            < Verzuimverloop[EndTime].[Date] + TIME ( 13, 0, 0 )

                ),

            9999,

            0

        )

    ),

    9999

)

 

 2. We calculate the amount of weeks of the leave.

WeekAmount =

IF (

    Verzuimverloop[Check] = 0,

    WEEKNUM ( Verzuimverloop[EndTime], 2 )

        - WEEKNUM ( Verzuimverloop[StartTime], 2 ),

    9999

)

3. The total hours from start to end.

TotalHours =

IF (

    Verzuimverloop[Check] = 0,

    DATEDIFF ( Verzuimverloop[StartTime], Verzuimverloop[EndTime], MINUTE ) / 60,

    9999

)

3. Days from start to end.

Days =

IF (

    Verzuimverloop[Check] = 0,

    DATEDIFF ( Verzuimverloop[StartTime], Verzuimverloop[EndTime], DAY )

        - 2

            * (

                WEEKNUM ( Verzuimverloop[EndTime], 2 )

                    - WEEKNUM ( Verzuimverloop[StartTime], 2 )

            ),

    9999

)

 4. Work hours of leave.

WorkHoursLeave =

VAR st =

    TIME ( HOUR ( Verzuimverloop[StartTime] ), MINUTE ( Verzuimverloop[StartTime] ), SECOND ( Verzuimverloop[StartTime] ) )

VAR et =

    TIME ( HOUR ( Verzuimverloop[EndTime] ), MINUTE ( Verzuimverloop[EndTime] ), SECOND ( Verzuimverloop[EndTime] ) )

RETURN

    IF (

        Verzuimverloop[Check] <> 0,

        9999,

        IF (

            Verzuimverloop[Days] = 0,

            IF (

                et <= TIME ( 11, 0, 0 ),

                HOUR ( et - st ),

                IF (

                    et >= TIME ( 13, 0, 0 )

                        && st <= TIME ( 11, 0, 0 ),

                    HOUR ( et - st )

                        - 2,

                    HOUR ( et - st )

                )

            ),

            IF (

                st >= TIME ( 13, 0, 0 )

                    && et <= TIME ( 11, 0, 0 ),

                Verzuimverloop[TotalHours]

                    - Verzuimverloop[WeekAmount] * 48

                    - Verzuimverloop[Days] * 17.5

                    + 2,

                IF (

                    st <= TIME ( 11, 0, 0 )

                        && et <= TIME ( 11, 0, 0 ),

                    Verzuimverloop[TotalHours]

                        - 48 * Verzuimverloop[WeekAmount]

                        - Verzuimverloop[Days] * 17.5,

                    IF (

                        st <= TIME ( 11, 0, 0 )

                            && et >= TIME ( 13, 0, 0 ),

                        Verzuimverloop[TotalHours]

                            - 48 * Verzuimverloop[WeekAmount]

                            - Verzuimverloop[Days] * 17.5

                            - 2,

                        Verzuimverloop[TotalHours]

                            - 48 * Verzuimverloop[WeekAmount]

                            - Verzuimverloop[Days] * 17.5

                    )

                )

            )

        )

    )

 

Difficult formula, just can't seem to get it to work.jpg 

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-jiascu-msft i really appreciate the help but we are not quiet there yet.

 

I used the formulas and tweaked them a bit but in the first calculated colum 'Check' are a lot of 9999 values, so there are a lot of errors but i dont understand why.

 

is there an issue with this formula ?

 

Check =
IF (Verzuimverloop[Datum ziektemelding] < Verzuimverloop[Duedate];
    IF ((Verzuimverloop[Datum ziektemelding] < Verzuimverloop[Datum ziektemelding].[Date] + TIME ( 8; 0; 0 ))
            || (Verzuimverloop[Datum ziektemelding] > Verzuimverloop[Datum ziektemelding].[Date] + TIME ( 12; 0; 0 )
                    && Verzuimverloop[Datum ziektemelding] < Verzuimverloop[Datum ziektemelding].[Date] + TIME ( 12; 30; 0 )
            );9999;
            IF ((Verzuimverloop[DueDate]> Verzuimverloop[Duedate].[Date] + TIME ( 16; 30; 0 ))
                || (Verzuimverloop[DueDate] > Verzuimverloop[Duedate].[Date] + TIME ( 12; 0; 0 )
                        && Verzuimverloop[DueDate] < Verzuimverloop[Duedate].[Date] + TIME ( 12;30; 0 )
                );9999;0));9999)

@RvdHeijden

 

Hi, 

It looks good with the formula. This formula aims to check the errors of the original data. For example, the sick leave ought to start from 8:00 am. If the record is 7:00, we will get the wrong leave hours or we will have to minus this one hour in the formula, which will make the formula very complicated. To avoid this, we correct our original data first. Such error would be like this: the start time is greater than end time etc. So, you should review the data where error appears. You can post a image with errors here. Cover the confidential infromation first.

You could have seen the image I posted. Is it similar with yours?

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-jiascu-msft

Your right because i see that the time someone has called in sick can be on all hours of the day.

I see data with a time of 0:00 so can we change the formula to coop with this ?

 

it's not likely i change the original data but maybe we can change the formula so that IF the time is 0:00 then use 08.00 ?
This is how my data looks now and it looks similar to yours

 

but all of the errors are triggerd by dates with a time of 0:00 and sometimes the formula doesn't work right if the startdate has a time of lets say 08:00 and a DueDate of 0:00

 

2017-05-12_1000.png

@RvdHeijden

 

Hi,

 

Let's format the date and time first. All the other formula have to use these two new columns.

Due to your actual situation, change 17.5 to 16 and 2 to 0.5 in the formula "WorkHoursLeave".

You should make some changes of the formula.

CorrectStartTime =
VAR st =
    TIME ( HOUR ( Verzuimverloop[Datum ziektemelding] ), MINUTE ( Verzuimverloop[Datum ziektemelding] ), SECOND ( Verzuimverloop[Datum ziektemelding] ) )
RETURN
    IF (
        st < TIME ( 8, 0, 0 ),
        Verzuimverloop[Datum ziektemelding].[Date] + TIME ( 8, 0, 0 ),
        IF (
            st > TIME ( 16, 30, 0 ),
            Verzuimverloop[Datum ziektemelding].[Date] + TIME ( 16, 30, 0 ),
            Verzuimverloop[Datum ziektemelding]
        )
    )
CorrectEndTime =
VAR et =
    TIME ( HOUR ( Verzuimverloop[Duedate] ), MINUTE ( Verzuimverloop[Duedate] ), SECOND ( Verzuimverloop[Duedate] ) )
RETURN
    IF (
        et < TIME ( 8, 0, 0 ),
        Verzuimverloop[Duedate].[Date] + TIME ( 8, 0, 0 ),
        IF (
            et > TIME ( 16, 30, 0 ),
            Verzuimverloop[Duedate].[Date] + TIME ( 16, 30, 0 ),
            Verzuimverloop[Duedate]
        )
    )

 

Best Regards

Dale

 

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-jiascu-msft ive changed the formulas and used 'CorrectStartTime' and 'CorrectEndTime'

The amount of value '9999' is almost 0 but i have 2 cases in which 9999 is returned.

 

1. If the DueDate is empty then the 'CorrectEndTime' reads 30-12-1899 08:000:00

Is it possible to change the formula that IF duedate = Blank it uses TODAY () ?

2. one case in which the 'CorrectStartTime' is 14-12-2016 08:00:00 and the 'CorrectEndTime' has the same value 14-12-2016 08:00:00

    both 'Datum Ziekmelding' and 'Duedate' didn't have a time in the date just 14-12-2016 0:00:00

 

if we can fix both issues we'll have a 100% working formula and we can go on to the next step

 

@RvdHeijden

 

Hi,

 

1. I have made some changes to the formula. It could be right now. BUT, have a look at the question 2 and 3 first.

CorrectEndTime =
VAR et =
    TIME ( HOUR ( Verzuimverloop[Duedate] ), MINUTE ( Verzuimverloop[Duedate] ), SECOND ( Verzuimverloop[Duedate] ) )
RETURN
    IF (
        ISBLANK ( et ),
        TODAY (),
        IF (
            et < TIME ( 8, 0, 0 ),
            Verzuimverloop[Duedate].[Date] + TIME ( 8, 0, 0 ),
            IF (
                et > TIME ( 16, 30, 0 ),
                Verzuimverloop[Duedate].[Date] + TIME ( 16, 30, 0 ),
                Verzuimverloop[Duedate]
            )
        )
    )

2. One question: 'Duedate' 14-12-2016 00:00:00 means sick leave excludes 14-12-2016 or  to 14-12-2016 16:30:00. The answer may lead formula change. 

3. Did you make any verification? Did we get the right result?

 

Best Regards

Dale

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-jiascu-msft

Question 2 has been solved in the DB however i still have a 9999 value

CorrectStartTime is 15-5-2017 08:30:00 and the CorrectEndTime is Blank so it reads Today which is 15-5-2017 0:00:00 and that results in the error because EndDate is < StartDate

 

Some results dont seem to be right if i check the WorkHoursLeave

In this example you can see a couple of strange results

 

For example, if someone is sick for 1 day it should read 8 hours (given that startdate is 08:00:00)

 

but in this case someone has been sick from 15-1-16 until 19-1-16 which are 3 workingdays (not 2) and 3x8 hours is 24 and nog 64 hours. (Blue example)

 

But the Red example is also strange because someont is sick between 22-01-16 (sunday) and 28-01-16 (saturday) which are  5 workingdays and not 4 and 5x8 hours are 40 and not 80

2017-05-15_1638_001.png

 

 

@RvdHeijden

 

Hi,

The cause is the WeekAmount. If we minus 48 hours in these two examples, we will get the right answers. Please check out the formula of WeekAmount and do more checks. The actual situation is more complicated. When you correct the formula and you think all is fixed, you can post a screenshot here. I will do some verification.

 

Best Regards!

Dale

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-jiascu-msft
I seem to have made a mistake in the formula 'WeekAmount' because in the formula there were 2 CorrectStartTime instead of 1 CorrectStartTime and 1 CorrectEndTime

 

Ive corrected my mistake and checked the number of Days someone was sick and multiplied it with 8 working hours and everything is ok now.

 

But now comes the tricky one (i think)

 

My initial question was that i want to calculate the % of sick employees per month (per department)

 

That means that if someone was sick for 3 days which is 24 hours we need to calculatie the 100% which is about 20 days * 8 hours is 160 hours 24/160 is 15% sick.

How do i calculate the 100% workinghours of alle employees and then calculate the sick % in a given period.

@RvdHeijden

 

Hi,

 

You should have a Date Table and an Employee Table. If not, you can create one follow these steps.

1. Create a Date Table and add one column "IsWorkday" later.

Dates =
CALENDAR ( DATE ( 2017, 1, 1 ), DATE ( 2017, 12, 31 ) )

IsWorkday =
IF ( WEEKDAY ( [Date], 2 ) IN { 1, 2, 3, 4, 5 }, 1, 0 )

2. Add one column in table Verzuimverloop.

Date = [Datum ziektemelding].[Date]

3. Create relationships. (Showed in the picture.)

4. Create three measures.

TotalLeaveHours =
CALCULATE (
    SUM ( Verzuimverloop[WorkHoursLeave] ),
    FILTER ( Verzuimverloop, Verzuimverloop[Check] <> 9999 )
)

TotalWorkHours =
TOTALMTD ( SUM ( Dates[IsWorkday] ), Dates[Date] ) * 8
    * COUNT ( Employee[People] )

Result =
[TotalLeaveHours] / [TotalWorkHours]

5. See the result in the picture.

Is this what you want?

 

 

Difficult formula, just can't seem to get it to work2.jpg 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Best Regards!

Dale

 

 

 

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-jiascu-msft

The second formula returns an Syntax error, which is strange because its a short formula and i cant find the syntax error

 

TotalWorkHours = TOTALMTD ( SUM ( 'Date'[IsWorkday] ); 'Date'[Date] ) * 8 * COUNT ( employees[id] )

 

EDIT: nvm i got it to work 😉 i needed to ad the ' '

@RvdHeijden

 

Smiley Very Happy You get the point.

Community Support Team _ Dale
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-jiascu-msft

it looks like we are almost there but i want to show the data in this line graph.

However the results are not in the right format i think and when i change it to 'Percentage' it gets better

 

however the TotalLeaveHours changes if i change the visual TimeLine but the TotalWorkHours remain the same.

Obviously i want to have both values change if he change the 'Timeline' visual for example a month.

 

Ive been struggling with the relationships because i think that is where they problem lies but i dont know how to fix it.

 

2017-05-17_1539.png2017-05-17_1540.png

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.