I am trying to plot both the cummulated projected and cummulated actual number of hours worked on a project. I am trying to plot these two lines as two different series on a line graph.
I would like the planned line to show the accumulated hours planned, by month, for every month since the project started until the project ends.
I would like the actual line to show the accumulated actual hours spent on the project, by month, for every month from when the projected started to the current month, and then stop (not hold at the current value).
I have data/queries set up this way, but when I try to plot the two series, the lines stop at the current month.
For examlpe, I have a project that goes from January 2013 to December 2013. I have the cummulated planned hours for each month from January to December 2013 as (150, 300, 600, 900, 1200, 1500, 1950, 2350, 2650, 2950, 3250, 3400). So far my actual hours spent for January through July are (100, 250, 400, 750, 1050, 1350, 1750).
My chart right now only shows both series through July 2013. I would like series 1 (planned) to show me values for all 12 months. I would like series 2 (actual) to show me values through July, and then stop. I can add data to the actual column and set it equal to the prior month if it there is no value, but this gives an unsightly and potentially confusing flat line for actuals for the remaining months of the year.
If your lines stop at the current month it is probably due to queries. For example this chart acts as your need.
How do you join actual & budget data, In SQL queries or a joined dataset? There is probably an "inner join" that should be an "outer join".
Related
I have a line chart in which i am showing the cumulative value of the plan and actual and I have a week slicer in which I have the end of every week.
In the line chart, i would like to show the Actual until the filtered week.
I am not sure if that is possible since the slicer of week name is a specific date and not a range, can anyone help me ?
See attached files in the link below the excel file is how i want to be and the PBIX is how it is now.
https://www.dropbox.com/scl/fo/s71624sg18jccgugqikj1/h?dl=0&rlkey=4yd3leqbxjvp2kwnqqxh0gj62
In a Report Builder table I have to show the value from the last day of the given month, when the month is not expanded.
When the month is expanded, the dates have to show the specific value for that day.
Example is January with values 1 to 31 (same as the day numbers):
When January is expanded, it has to show value 1 on Jan 1.... value 15 on Jan 15... value 31 on Jan 31.
When contracted (and the table only show one row for January), it should show the last day's value of 31
Some months do not have values on all days, so the formula just need to take the last value of that given month
When I use the formula "Last()", then it works half of the time, while for some months, the value extracted is the 3rd or 4th last day of the month - do you know what is wrong here?
Hope above makes sense, and thanks for help.
I think I fixed it my self:
Using Last () formula
Learning how to make a sort order in my Union All dataset, so it came out in the right way
How to give points to my self?
Context: I have an dataset of Orders in quicksight, that is joined with Customer data. Because a Customer can have more than one Order the Customer data is duplicated and needs to be deduped.
I need to do an analysis of the number of days it took from the Customer to register (customer_date_added) to their first order (min(order_date_added)) and then bucket/group the results based on customer_date_added with different granularities of the date.
This is what I currently have working (6 visuals corresponding to the built-in date granularities in quicksight: year, quarter, month, week, day, hour)
*Visual 1* - x-axis:customer_date_added (aggregate year), y-axis:
ifelse(dateDiff(customer_date_added, min(order_date_added)) < 365, 1, 0)
*Visual 2* - x-axis:customer_date_added (aggregate quarter), y-axis:
ifelse(dateDiff(customer_date_added, min(order_date_added)) < 90, 1, 0)
*Visual 3* - x-axis:customer_date_added (aggregate month), y-axis:
ifelse(dateDiff(customer_date_added, min(order_date_added)) < 30, 1, 0)
*Visual 4* - x-axis:customer_date_added (aggregate week), y-axis:
ifelse(dateDiff(customer_date_added, min(order_date_added)) < 7, 1, 0)
.... etc
Issue: I have a lot of these dateDiff with bucketing visuals (not just days to first order) so my field list is getting overrun with fields like customer_first_order_within_year, customer_first_order_within_quarter, customer_first_order_within_month, etc. Also rather than just have one visual where I can change the date_granularity from year to month I have to maintain 6 different visuals for each dateDiff analysis I want to to.
What I want: One visual with two calculated fields (new_customer_with_first_order, new_customer_no_first_order). When I change the data granularity on customer_date_added to a new date granularity, the new_customer_with_first_order automatically displays customers that were added in that time period AND with a first order within that time period. Conversely new_customer_no_first_order would display customers that were added in that time period AND did not have an order within that time period. new_customer_with_first_order + new_customer_no_first_order = new customers within that time period.
What I have tried: I am relatively new to quicksight and business intelligence tools, but have a pretty good grasp of SQL. I have tried to read up on Level Aware Aggregation, Window Functions. None of these give examples using dates or date granularity. This seems like it would be a popular type of analysis but maybe it's not possible yet?
https://stackoverflow.com/a/63064505/3412268
https://docs.aws.amazon.com/quicksight/latest/user/windowMax-function.html
https://docs.aws.amazon.com/quicksight/latest/user/countOver-function.html
https://docs.aws.amazon.com/quicksight/latest/user/level-aware-aggregations.html
I am trying to create a D3 chart where I want the ticks to be by Week of Year
I would like to generate ticks like so Week 01 2016, Week 02 2016 etc
My data has only timestamps that are the beginning of the week for example 6 of Jan 2014 that is Week 01.
The problem is:
The D3 auto generation of ticks will generate a tick like 8 of January 2016 that If formatted will be Week 01 2016 but the data point is 6 of January 2016 and so
the point will appear before the tick with the same format and it will create confusion to my users.
Do I have to implement/override the tickValues so I have only ticks that are dates that are always the first day of the week or is there some option I can pass to D3 so the auto generation of ticks that this into account?
Assuming you have a d3 axis timeAxis, with a time scale, then you should be able to call
timeAxis.ticks(d3.time.week, 1)
which means "a tick every 1 week". d3 assumes Sunday is the beginning of the week, which might be just fine.
Alternatively, there's also something called "xdayOfTheYear" which I haven't tried before, but might work even better for you. See the documentation
timeAxis.ticks(d3.time.mondayOfYear)
I have a report which runs over multiple days and reports on 13 hours of data (07:00-20:00)
I have included an image below and as you can see the the date container starts before 7:00 and extends beyond the 20:00 mark.
I managed to get them to line up as I wanted but undid the changes and I have no idea how I did it.
What do I need to do?
This looks like a line graph with the Category Groups: Time, and Date.
You can also specifiy the Minimum and Maximum time range in Hours within the chart properties.