The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends September 15. Request your voucher.
I would like to show parts produced per hour, starting with 7 AM today and running through 7 AM tommorow, rather than 0 AM today and running through 23 today. Is there a way to do this?
Solved! Go to Solution.
If you only have 24 values - 7am, 8am, 9am, etc for all 24 periods, you could create a custom column in Power Query to do this:
if [Column1] = "7am" then 1 else
if [Column1] = "8am" then 2 else
if [Column1] = "9am" then 3 else
null
That is 3. You just need to do the other 21. There must be a else null at the end without getting too deep in if/then/else constructs.
It is 100% case sensitive. So "7am" is not the same as "7AM"
If you have minutes then this isn't workable like that. Otherwise, we'd need to see data. How to get good help fast. Help us help you.
How to Get Your Question Answered Quickly - Give us a good and concise explanation
How to provide sample data in the Power BI Forum - Provide data in a table format per the link, or share an Excel/CSV file via OneDrive, Dropbox, etc.. Provide expected output using a screenshot of Excel or other image. Do not provide a screenshot of the source data. I cannot paste an image into Power BI tables.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingYes @pabeader - direct query should be avoided unless absolutely necessary. I didn't test any of that against DQ, and it doesn't suprise me it would break it. I do not think most of what I did there will fold.
So many limitations in Direct Query... not the least of which is you miss out on that fantastic tabular engine.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingYes. You will need to add a column to your data to show how you want Power BI to sort it. So 7am would be 1, 8am would be 2, etc. Then you tell Power BI to sort the time column by your sort column. You can read more about that here.
Note that it must be a 1:1 relationship. So if you have Jan 1, 2020, and 7am, and then Jan 2, 2020, also with 7am, the "1" sort code must be for both dates, assuming the 7am is in a separate column. You cannot have, for example, 1 for the Jan 1 7am record and a 2 for the Jan 2 7am record. Power BI will see a 7am record with a 1 and 2 and will not know how to sort it.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingI'm trying to do that but I'm getting a circular reference error message.
Establish your sort by column either in the source data, or in Power Query. You are probably using a Calculated Column. That isn't generally good practice. You can read this article on avoiding circular dependencies, but it goes much deeper than this. I cannot find the article I am specifically looking for right now, but it is on the SQLBI site somewhere.
In general, try to avoid calculated columns. There are times to use them, but it is rare. Getting data out of the source system, creating columns in Power Query, or DAX Measures are usually preferred to calculated columns. See these references:
Calculated Columns vs Measures in DAX
Calculated Columns and Measures in DAX
Storage differences between calculated columns and calculated tables
SQLBI Video on Measures vs Calculated Columns
EDIT: It was by Marco Russo from SQLBI, but he posted to Twitter, not their site. Here it is.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingDon't have access to the source data, can't figure out how to do in PQ since I'm stuck with DirectQuery. Calculated columns is the only way that I have been able to get this close. Not smart enough to figure out measures. I can get simple things like SUM to work but anything else and I'm stuck.
If you only have 24 values - 7am, 8am, 9am, etc for all 24 periods, you could create a custom column in Power Query to do this:
if [Column1] = "7am" then 1 else
if [Column1] = "8am" then 2 else
if [Column1] = "9am" then 3 else
null
That is 3. You just need to do the other 21. There must be a else null at the end without getting too deep in if/then/else constructs.
It is 100% case sensitive. So "7am" is not the same as "7AM"
If you have minutes then this isn't workable like that. Otherwise, we'd need to see data. How to get good help fast. Help us help you.
How to Get Your Question Answered Quickly - Give us a good and concise explanation
How to provide sample data in the Power BI Forum - Provide data in a table format per the link, or share an Excel/CSV file via OneDrive, Dropbox, etc.. Provide expected output using a screenshot of Excel or other image. Do not provide a screenshot of the source data. I cannot paste an image into Power BI tables.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingThis approach has got me as close as I think I can get. So I am going to Accept it.
For the whole story:
I have data from multiple machines. All the data is in two columns, column 1 is the machine # and column 2 is the time that the record was entered. There are 10 machines. When a machine produces a part, an entry in made in the table. So for example if machine 1 makes a part, there will be an entry of:
01 | 2020-12-29 9:03:02.343
If the next machine to make a part is 9, then there will be an entry of:
09 | 2020-12-29 9:03:02.500
And on like that. Each machine records it's name and time into the table.
What I want is an output that looks like:
Machine
Hour | 01|02|03|04|05|06|07|08|09|10
-----------------------------------------
7 | 23|13|45|32|10|17|33|19|10|11
8 | 10|13|45|32|10|17|33|19|10|11
9 | 23|13|34|32|10|22|33|19|10|11
10 | 23|13|45|32|10|17|33|19|10|11
11 | 23|13|45|32|10|32|33|19|10|11
12 | 23|18|45|32|10|17|33|19|10|11
13 | 23|13|45|32|10|23|33|19|10|11
14 | 23|13|45|45|10|17|33|19|10|11
15 | 23|13|45|32|10|17|33|19|10|11
16 | 23|13|45|32|10|17|33|19|10|11
17 | 23|14|45|32|10|11|33|19|10|11
18 | 23|13|21|32|10|12|33|19|10|11
19 | 23|23|45|32|10|18|33|19|10|11
20 | 23|13|45|32|10|17|33|19|10|11
21 | 31|13|45|32|10|17|33|19|10|11
22 | 23|13|45|35|10|17|33|19|10|11
23 | 23|13|22|32|10|17|21|19|10|11
0 | 23|13|45|32|10|17|33|19|10|11
1 | 23|13|45|31|10|12|33|19|10|11
2 | 23|32|45|32|10|22|33|19|10|11
3 | 23|13|13|32|10|17|19|19|10|11
4 | 32|13|45|32|10|17|33|19|10|11
5 | 23|13|45|32|10|17|33|11|10|11
6 | 23|13|45|32|10|17|33|19|10|11
Using Slicers for the Year, Month, and Day. The problem is that when you select the day, then the data in filtered to just that day. But our 24 hr shift, runs from 7:00 today through 7:00 tommorow.
So my over-ridding issue is I need a way to select a day, but get part of the next day, also.
Hi @pabeader , I would consider adding a 2nd date column, and then run your reports on that column. For example:
if DateTime.Time([Date]) < #time(7,0,0) then
Date.AddDays(DateTime.Date([Date]), -1)
else DateTime.Date([Date])
So any times before 7am get a day subtracted. Any times on or after 7am stay in the current day. You could even then remove the original date and just keep the "New Date" field, or however you want to report it.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingI think this breaks Direct Query...
User | Count |
---|---|
65 | |
62 | |
60 | |
53 | |
28 |
User | Count |
---|---|
181 | |
82 | |
67 | |
48 | |
44 |