How to write the formula to reverse the columns order in query function for Google Sheets? - reverse

I have a database for employees productivity by date, I created a query function to make a pivot table: first column has employee's supervisor, and the remaining columns are for the dates, however, I want to set those columns from recent date to the oldest.
I found an article about reversing columns order
This is the formula I've used:
=ArrayFormula({indirect("Week_Pivot!A1:A"&(transpose(row(index(Week_Pivot!B:B,max(isnumber(Week_Pivot!B:B)*row(Week_Pivot!B:B))))))),query({Indirect("Week_Pivot!B1:"&(transpose(row(index(Week_Pivot!B:B,max(isnumber(Week_Pivot!B:B)*row(Week_Pivot!B:B)))))))&""},ArrayFormula("select Col"&join(",Col",transpose(columns(Week_Pivot!A1:1)+1-row(indirect("A"&columns(Week_Pivot!A1:1)&":A"&2))))))})
The previous formula only reverses the headers but shows no data below it.

I finally figured it out, I've used the arrayformula function:
=arrayformula(transpose(ARRAYFORMULA(SORT(TRANSPOSE(QUERY(Raw_Pivot!A:G,"select C,G,E,F,avg(D) where A!='' group by C,G,E,F pivot B order by C",1)),1,false))))

Related

SSRS Rollup Fields for Rows

I am working on a report where I have employee time information along with dates for the time. Currently I have the tablix grouped by Employee and Date so that I only get time for that employee and date, however I get a row for each date:
What I am trying to do is drop the Date column and have the time for each Date rollup into it's specific date column (i.e. 7/16/2020 data would rollup into only the 7/16/2020 column header) and only have a single row for each employee. Desired output:
How can I accomplish this?
You Can create a matrix report with Row group and column group. Check below screen shot to get desired output.
Use a Matrix control instead of a table, add a row group by Employee (as you have already) ad then add a column group by date. This will give you the desired results.

SSRS - Place grouped data on the same row

I'm facing this SSRS issue that I can't seem to get working properly.
I got employees that work on particular projects on specific dates. I want the dates as columns and the projects per date on 1 row.
What I have now:
What I want to have:
Can anyone help me to get there?
Thanks!
Check the row group properties. You only need s single row group and that should only group by employee. My guess is that you group is grouping on more than just employee or you have more than one group.
Your row group should not be grouping by date, only the column group should group by date.

Plot total number of users by date joined

Is there any function or node which will add the number of elements in a set chronologically?
I would like to create a simple line graph of "total number of users" over time, but what I have is "user_email" (unique) and "date_created" for the date the user joined.
What is the easiest way to sum the number of users at any given time from their creation date and plot it in a graph according to time?
I tried searching for this, but didn't find anything related. New to KNIME. Thanks.
If you are sure that user_email only contains unique values, you can sort the table by date_created (if it isn't already sorted) then use a Counter Generation node to add a column containing a counter value.
For a more general solution, if you want to count the cumulative total of unique values in a table column, you can use this sequence:
GroupBy configured to group by the column whose unique values you want to count and to aggregate on the column you want to plot this against - for example, your timestamp column, probably with either the First or Last aggregation method
Sorter to sort on the aggregation column from GroupBy
then Moving Aggregation with the Cumulative computation box checked, and configured to aggregate on Count of the grouped column from GroupBy.

Create a column with daily number of orders in SSIS?

I'm trying to create a new column with the daily orders (the count of OrderNumber for each day). Since I have data coming from multiple sources, I'm using SSIS. My final table should look like this:
Date | Product Number | Quantity Sold | Number of Orders (for that date)
I've tried using Aggregate, but it's not working because of the other columns. I was thinking about creating a parallel source (the same staging table), on which I would use Aggregate to find the number of daily orders, and then find a way to bring it back to the final table, but there must be an easier way?
Aggregate transform takes and outputs only columns you select. So, for your case, select Date, Product, Quantity and some column for Order Count - we will return to this later. Specify Group by for the first two columns, Sum for the third, and Count for the forth. At output you will receive four columns with desired result.
Source column for Count should represent orders and does not include columns used in the first three functions. If you need to use one of these three columns, create a copy of it with Derived Column transfer. I would not recommend using (*) (all columns) for Count, since it will count rows with Null values as well.

Group by column & row in one part of expression, group by column only in another part of expression

I am trying to find a way to use the Group By functionality to create a table where the numerator of a fraction is grouped both by column and row, and the denominator is grouped only by column.
Here's my existing expression:
=Round(Sum(Fields!Days_In_Step.Value)/CountDistinct(Fields!ID.Value),1, MidpointRounding.AwayFromZero)
When grouped by rows (groupName) and columns (month/year) the numerator (Sum(Fields!Days_In_Step.Value)) gives me good data, but the denominator (CountDistinct(Fields!ID.Value)) is also grouped by row (groupName) and I don't want that.
I have a SQL solution but am trying to do this entire within SSRS expressions, if possible.
edit
Sample Data:
It would look like this. The background is that these groupings are counts of days and the "all" are counts of tickets, so we are trying to see who is sitting on their tickets longer.
Here is a mock-up including a sample data set using a pivot table:
Edit 2
Here is a full sample data set:
https://docs.google.com/spreadsheets/d/1rYPMcrLNB-FZN64Fn2-y3FtnM2iQo2VMH7YTdfiVnKM/edit?usp=sharing
I need to group on month as well as year, and I do not want to see "Exclude" in the group rows, however they cannot be filtered out of the tablix without being removed from the overall population, which is required for the denominator.
Your problem is caused by the scoping of aggregate functions. When you use aggregate function they run under the scope where it is placed in the tablix by default. In your case Sum() and CountDistinct() functions are running in both row groups (Owner Group) and column group (Month Group).
Fortunately, you can specify the scope that you want your aggregate function computes the aggregation, simply add the group name in the function:
CountDistinct(Fields!ID.Value,"MonthGroup")
The whole expression is like this:
=Round(Sum(Fields!Days_In_Step.Value)/
CountDistinct(Fields!ID.Value, "MonthGroup"),1, MidpointRounding.AwayFromZero)
Replace "MonthGroup" by the actual name of your group in columns
group.
This is result using the sample data you provided:
I've used this expression to show you how it is produced:
=Sum(Fields!Days.Value) & "/"
& CountDistinct(Fields!Ticket.Value,"MonthGroup") & "=" &
Sum(Fields!Days.Value)/CountDistinct(Fields!Ticket.Value,"MonthGroup")
Note my column group is named MonthGroup.
UPDATE: Scoping multiple groups in CountDistinct function.
Firstly I am not filtering the dataset, I prefer hide the Exclude rows using the below expression in the Hidden property of the Row Visibility window:
=IIF(Fields!Group.Value="Exclude" OR Fields!Group.Value="-1",true,false)
To count distinct id grouping by Month and Year but not by Group you can create a child group below Month group as you can see below:
My group is called Group2 and I used this expression in the Group on textbox.
=Fields!End_Month.Value & "-" & Fields!End_Year.Value
It will create a group per every Month-Year combination. When you create the group it will be added as a column group so you will have to delete the row so you will be prompted if you want to delete the group and row or delete the row only. Delete only the row leaving the group.
Now the expression you have to use is
=Round(Sum(Fields!Days.Value)/CountDistinct(Fields!ID.Value, "Group2"),1,MidpointRounding.AwayFromZero)
Replace Group2 by the name of the created group in your case.
This is the whole recreation of your scenario:
Let me know if this helps.