I have a matrix which is filtered by the FILTERS section on the visual. (this filter applies ONLY to this matrix) I want to create a header of the min&max dates of the matrix. The filter is Last 5 calendar months which is dynamic, therefore the min and max dates are changing accordingly.
this is the formula where i get info from the date table slicer.
= CALCULATE(min('Tarihler (Main)'[Tarih]),ALLSELECTED('Tarihler (Main)')) & " - " & CALCULATE(MAX('Tarihler (Main)'[Tarih]),ALLSELECTED('Tarihler (Main)'))
"ALLSELECTED" does not get the filtered dates from the matrix. is there any way around to achieve these dates ?
Thanks
Edit : The main date table is also filtered by a slicer which shall not affect this matrix.
Related
I have a "Line and clustered column chart" in Power BI where the bars are actual values and line is budgeted values. Actual and budgeted values often vary enough that their Y axis scaling doesn't match, so I need both axes to have the same scale. Start value for both could be zero, but End needs to be calculated. We need to dynamically calculate End based on the visible data within the chart. My approach so far has been to create a measure that calculates the highest monthly actual value and another measure that calculates the highest monthly budget value, then take that max of those two measures and use it in a function for the "End" value of both Y axes. I have not found the DAX that works yet.
Example of y axes with different scaling and the max value we want
I suspect I'll need to get the min and max dates that are selected in the visual, and the following measures give me those:
MinSelectedDate = CALCULATE(MIN('Date'[CalendarDate]), ALLSELECTED('Date'))
MaxSelectedDate = CALCULATE(MAX('Date'[CalendarDate]), ALLSELECTED('Date'))
I also suspect I'll need to build a table within the measure and summarize the values then iterate over that table to find the max. Somthing like this:
MaxActual = MAXX(
SUMMARIZE(ALLSELECTED('FactActualValues'), 'Date'[FirstDayOfMonth], "Volume", [Actual Values]),
[Actual Volumes]
)
However, when I try this DAX the data ends up being sliced by the month within each year. I'm using a matrix for dev/test.
Dev/test using matrix
The optimal solution is to have an analytical model with two columns (Date and FY).
Cancel dynamization of the table, setting the years to the "Year" column and converting it to Text type
Create the column "Month" from the month number of "MonthName" and convert to type Text
Create the date column of the format dd-mm-yyyyy from the concatenation using "01/"+[Month]+"/"+[Year]
Format the new date column to date format
The y-axis scale is resolved by the "Clustered Column Chart" visualization as it takes the maximum value of a single column of values plus some margin at the top and takes that as the y-axis value.
Got it! I was very close but didn't need to calculate min or max dates. Using ALLSELECTED gave me just the records from the FactActualValues table that I needed without applying an explicit filter. I also learned that some functions (e.g. - MAX) cannot "see" columns returned by table functions, but others like MAXX do support it. SUMMARIZE allows you to create a column and I learned that some people use the empty single quote to reference such a column.
Here's the DAX that works:
MaxMonthlyActual =
MAXX(
SUMMARIZE(
ALLSELECTED('FactActualValues'),
'Date'[FirstDayOfMonth],
"#ActVol", SUM('FactActualValues'[Total])
),
''[#ActVol]
)
Here is what the chart looks like using the DAX measure:
Chart with Y axes with matching scales
I have a date slicer that is controlled by the user. I am trying to use the users min/max date selection as a indicator. I have created two measures - one for the min value and another measure for the max value. Please see DAX code for one below:
NewMin = CALCULATE(FIRSTDATE('Master Query'[RegisterDate]),ALLSELECTED('Master Query'))
Now, on the Master Query Table there is a column that holds date values in the format of dd/mm/yyyy 00:00:00...I am adding another column and using a if statement to get a 0/1 output (i.e. checking if the date column is between the min and max date slicer selection) but it is not working. See DAX Below:
RangeCheck = IF('Master Query'[RegisterDate] >= 'Master Query'[NewMin] && 'Master Query'[RegisterDate] <= 'Master Query'[NewMax],1,0)
This does not work and I am unsure as to why. It seems its not recognising the dates or cant decipher if date is between the two min and max boundries.
A calculated column cannot read in dynamic filters from slicers. Calculated columns are only computed once per time the model is refreshed, not in response to interaction slicers or the filter pane.
In contrast, measures do work for dynamic calculations (though not when you try to use them within a calculated column).
I've got 3 tables. First is a date table that only has dates. Second is my actual values and third is my projected. Actuals and Projected are both related to the date table (1 to many single direction)
Trying to plot actual vs projected on a line graph, using the dates column from the dates table and a measure from each of the other two. This is my measure for actual values: count = calculate(counta(actual[product]))+0. The issue is then the graph shows 0s for all future dates where I only want my projected line to show up. Is there a different measure I can use to not show the 0 for the future date and be blank instead?
Try this
count = calculate(counta(actual[product]),
'Date'[Date] <= max(Date[Date)
)
Please note that Date: your calendar table,
[Date ] is column in side the Date table.
Please let me know if your issue has been resolved.
Trying to sort a column in my custom date table (a csv file) via a calculated column in the same table but am seeing an error. The calculated column does not reference the column I wish to sort by. Here's the DAX for the calculated column:
PeriodOffset =
Dates[Period] + Dates[FiscalYear] * 13
- CALCULATE ( VALUES ( Dates[Period] ), Dates[Date] = TODAY () )
- CALCULATE ( VALUES ( Dates[FiscalYear] ), Dates[Date] = TODAY () ) * 13
My date table has every date from 2003/4 to 2034/35, along with custom period numbers, calendar and fiscal years etc. The column I am trying to sort is called PeriodFiscalYear. Each value in that column has only one entry in the PeriodOffset column so it's not that.
The weird thing is, I have had this working in a previous report. In this instance, I was simply trying to recreate the functionality but it won't do it. Even stranger, if I create the PeriodFiscalYear column as a calculated column (currently it's hard-coded in the csv file), it works! So I have a sort-of workaround, I would just like to understand what is going on.
Thanks
I believe this has to do with the fact that data column are sorted when data are ingested into PBI. Calculated columns are calculated only at a later time.
Therefore:
you can sort data column only with other data columns (because calculated columns have not been calculated yet)
you can sort calculated column with both data column and calculated column
Solution:
A) PeriodFiscalYear becomes a calculated column
B) PeriodOffset becomes a data column (either in your CSV or Power Query)
I actually figured this out. The problem was with my data model - I had a circular relationship in there as I was deriving the Period column in one table using my calendar table then linking them back in the relationship!
I created a linking table with the keys in both to make the relationship, then hid it.
Thanks
I am new to Power bi but i want to use Slicer(user selection) while filter data with comparison by 'Greater Than' instead of equal to.
I have data of devices with LastUpdated date column. and slicer with few list of dates for 15 days gap (calendar would be better but as it is not available yet sticking with dates list)
When user select a date in Slicer i want to filter the data whose Lastupdated Date is greater than equal to selected date. How to achieve this? tried columns,measures..
Any help is appreciated.
I think you can create a measure that links the Date list table and the Device table, even if there is no relationship between them. However the measure must be present in your visualization otherwise the slicer will not affect it.
I've created a measure that calculates the maximum date for those rows which last update date is greater or equal than the slicer selection.
CalculatedLastUpdate =
CALCULATE (
MAX ( DeviceTable[LastUpdate] ),
FILTER (
DeviceTable,
DeviceTable[LastUpdate] >= MINX ( DateList, DateList[Date] )
)
)
DateList - a table containing a column [Date] with you date range.
DeviceTable - a table containing device data.
Now you can delete LastUpdate column from your visualization in order to avoid two columns with the same data.
Let me know if it helps.
I don't know about earlier , but now you can modify the date slicer to do as "after" the given date (you can do so by clicking on the icons present in the rightmost side of the slicer visual itself , wher you can select mode of slicer as between , after ,list , dropdown etc.)...which I believe means that you get all data for dates greater than the selected dates for the given column used in slicer which in your case will be LastUpdate.