TFS 2008 Cube Report between two points in time - tfs

In TFS 2008, I'd like to be able to create a pivot table/chart to show the difference in a specific field between two given points in time. The reason is we put our initial estimates in at the beginning and then update it to the total number of hours we did against the item when we finish. An obvious answer to this, would be two separate fields, one for initial and one for final, but that isn't how it was set up, so the only way I can pull the data is querying against the history of the work item.
I am up for writing a custom SQL query or updating the cube with a new perspective if necessary, but ideally, I'd like to just pull it together with the TFS cube into excel 2007. I was looking at the Work Item History perspective, but I'm just not seeing anything close enough in there.

The Work Item history in the TFS cube indeed exposes the state of the work item fields over time. You can just select the start and end point in the pivot table connected to the cube datasource as the row or column. On the other axis, select the field you want to display. The values in the table will show the values for the fields in both points in time.

Related

Extract Last Value as Metric from Table Calculation in Tableau?

I have raw data in Tableau that looks like:
Month,Total
2021-08,17
2021-09,34
2021-10,41
2021-11,26
2021-12,6
And by using the following calculation
RUNNING_SUM(
COUNTD(IF [Inserted At]>=[Parameters].[Start Date]
AND [Inserted At]<=[End Date]
THEN [Id] ELSE NULL END
))
/
LOOKUP(RUNNING_SUM(
COUNTD(IF [Inserted At]>=[Parameters].[Start Date]
AND [Inserted At]<=[End Date]
THEN [Id] ELSE NULL END
)),-1)*100-100
I get
Month,My_Calc
2021-08,NULL
2021-09,200
2021-10,80.4
2021-11,28.3
2021-12,5.1
And all I really want is 5.1 (last monthly value) as one big metric (% Month-Over-Month Growth).
How can I accomplish this?
I'm relatively new to Tableau and don't know how to use calculated fields in conjunction with the date groupings aspect to express I want to calculate month-over-month growth. I've tried the native year-over-year growth running total table calculation but that didn't end with the same result since I think my calculation method is different.
First a brief table calc intro, and then the answer at the end.
Most calculations in Tableau are actually performed by the data source (e.g. database server), and the results are then returned to Tableau (i.e. the client) for presentation. This separation of responsibilities allows high performance, even when facing very large data sets.
By contrast, table calculations operate on the table of query results that were returned from the server. They are executed late in the order of operations pipeline. That is why table calcs operate on aggregated data -- i.e. you have to ask for WINDOW_SUM(SUM([Sales)) and not WINDOW_SUM([Sales])
Table calcs give you an opportunity to make final passes of calculations over the query results returned from the data source before presentation to the user. You can for instance calculate a running total or make the visualization layout dynamically depend in part on the contents of the query results. This flexibility comes at a cost, the calculation is only one part of defining a table calc. You also have to specify how to apply the calculation to the table of summary results, known as partitioning and addressing. The Tableau on-line help has a useful definition of partitioning and addressing.
Essentially, table calcs are applied to blocks of summary data at a time, aka vectors or windows. Partitioning is how you tell Tableau how you wish to break up the summary query results into windows for purposes of applying your table calc. Addressing is how you specify the order in which you wish to traverse those partitions. Addressing is important for some table calcs, such as RUNNING_SUM, and unimportant for others, such as WINDOW_SUM.
Besides understanding partitioning and addressing very well, it is also helpful to learn about the functions INDEX(), SIZE(), FIRST(), LAST(), WINDOW_SUM(), LOOKUP() and (eventually) PREVIOUS_VALUE() to really understand table calcs. If you really understand them, you'll be able to implement all of these functions using just two of them as the fundamental ones.
Finally, to partially address your question:
You can use the boolean formula LAST() = 0 to tell if you are at the last value of your partition. If you use that formula as a filter, you can hide all the other values. You'll have to get partitioning and addressing specified correctly. You would essentially be fetching a batch of data from your server, using it in calculations on the client side, but only displaying part of it. This can be a bit brittle depending on which fields are on which shelves, but it can work.
Normally, it is more efficient to use a calculation that can be performed server-side, such as LOD calc, if that allows you to avoid fetching data only for client side calculations. But if the data is already fetched for another purpose, or if the calculation requires table calc features, such as the ability to depend on the order of the values, then table calcs are a good tool.
However you do it, the % month-to-month change from 2021.11 (a value of 26) to the value for 2021.12 (a value of 6) is not 5.1%.
It's (( 6 - 26 ) / 26) * 100 = -76.9 %
OK, starting from scratch, this works for me: ( I don't know how to get exactly the table format I want without using ShowMe and Flip, but it works. Anyone else? )
drag Date to rows, change it to combined Month(Date)
drag sales to column shelf
in showme select TEXT-TABLES
flip rows for columns using tool bar
that gets a table like the one you show above
Drag Sales to color (This is a trick to simply hold it for a minute ),
click the down-arrow on the new SALES pill in the mark card,
select "Add a table calculation",
select Running Total, of SUM, compute using Table(down), but don't close this popup window yet.
click Add Secondary Calculation checkbox at the bottom
select Percent Different From
compute using table down
relative to Previous
Accept your work by closing the popup (x).
NOW, change the new pill in the mark card from color to text
you can see the 5.1% at the bottom. Almost done.
Reformat again by clicking table in ShowMe
and flipping axes.
click the sales column header and hide it
create a new calculated field
label 'rows-from-bottom'
formula = last()
close the popup
drag the new pill rows-from-bottom to the filters shelf
select range 0 to 0
close the popup.
Done.
For the next two weeks you can see the finished workbook here
https://public.tableau.com/app/profile/wade.schuette/viz/month-to-month/hiderows?publish=yes

Update several Tbl Fields based on Start/End Dates

Good day to everyone! Hope all is well!
I am looking to run an update query or a group of queries that looks at my Date_Start and Date_End to determine if the Units (quantity of the respective record) fall in my defined current quarter 1/2/3/4 from another table (this table is a master table I’m using to provide the dates that I need to consider for defining the quarters).
I’ve been able to create queries that do this and then join them together to basically display the units out by quarter based on their respective start/end dates. The problem I am running into is this process takes a decent amount of time for the queries to populate that will drastically effect other processes down the line.
Thus we get to my desire. I am trying to no avail to create an update query that will update the quarter fields in my table based off of the queries I built to determine if the records start/end date fall in the respective quarter. I figure that running this update when records change will be an ok run time vs when I’m running reports or running an email script for the reports.
I have tried pulling in the table and query, joining them as equal on ID (the query pulls in the table's IDs), and selecting my field “CQ1” from the table, and setting the Update ether the respective field from the table or the query (which is the same as the field in the table).
All I get are the current values of the field in the data sheet view and an error of “Operation must use an updateable query.”
I have even tried placing a zero to see if that would do it with no luck. I have verified that all the fields are the same data type.
What am I doing wrong? Thanks!
Apologies to everyone.....I think my conscious brain was trying to overly complicate the process and while talking to a buddy about my issue distractedly created a new update query that worked. It all tied down to that I forgot to put a criteria on my quarter filed of is not null I believe. Thanks for anyone that has read this and is responding while I’m typing this or for those of you formulating a response.

How to query 'history' field in Team Foundation Server (TFS)?

I am trying to capture the history of changes when a user story is moved from one iteration to another.
I am trying to query in TFS and using the history field, but don't know what values to put in the value field to capture when a user story is moved to a new iteration. See image below.
I am trying to capture the history of changes when a user story is
moved from one iteration to another.
Unfortunately you cannot capture the information as the History filed is not the real change history for all actions. It just records the Discussion History.
And the work item query is to return work items which matched the given conditions from TFS but not the specific history information.
If you just want to get the real history (iteration change information in your scenario) for a specific work item, then you can call the REST API - Get Work item revisions
If you want to filter the work items which have the specific discussion words, then you can specify the words as the value of the History field. Reference below screenshot:

How can I get a report of all work items added to an iteration after a given date?

I need to produce a report, similar to the Unplanned Work report included with the MS Agile Process Template, but which lists me all work items which were added to an iteration after a given date.
The work item may have already been created before that date, so I can't used the created date.
Can anyone give any guidance on how I can go about this? If I can achieve it in Excel then that would be perfect...
Thanks.
Ok, took some work. Interesting enough though to put some effort in it ...
First screenshot is a Pivot table connected to the Analysis Cube. The most left colum shows the ID of a workitem. The second column shows the ChangeDate. In the row header I have included every iteration that I am interested in. What you see happening in the Excel sheet is items moving from one sprint to the other. For example, workitem 27 was created for iteration 1 at 14-3-2011. On 13-4-2011 it was moved to iteration 2. On 12-5-2011 it was moved to iteration 3. etc.
If I narrow down the filter to a specific iteration I actually see items entering the iteration and leaving the iteration. If I also change the ChangeDate filter, I can focus on items entering after a specific date, as you requested. Again, you can see item 27 enter iteration 2 at 13-4 and leave at 12-5. You can juggle around with the columns to get the view you want.
Finally, the options I used to get this view from TFS.
Hope this exceeds your expectations :-)

Sum up a calculated column's values for each user in Sharepoint 2007?

I've been looking around for quite some time, and I'm not entirely sure how to accomplish this in Sharepoint 2007.
I'm trying to create a web part view that takes the entries of a particular data source, groups the entries by the user, and then sums up a calculated column from said source.
I've found similar tutorials online about creating the web part views and making calculated columns; however, I can't figure out how to sum up the columns for each user listed.
Any ideas?
If you are using a List View Web Part, modify your view by selecting "Modify this view" in the view-picker (drop down list at the top right of the web part).
On the view settings page, expand the Group By section and specify which column(s) you will group by. Expand the Totals section and select which aggregations you want to perform on which columns.
Click OK.
The results are overall totals at the top of the column, and group totals above each group.

Resources