We used JIRA on-demand to manage an Agile project. Sometimes a story may be preliminarily sized in story points, but is then re-sized before commitment. I would like a query which shows the history of each story's status and point value.
For example:
Story 99 history:
1/1/2014 -- Status = Open; Points = Null
1/15/2014 -- Status = Reviewed; Points = 5
2/15/2014 -- Status = Committed; Points = 8
My goal (and maybe there is another way to do this) is to see how often we change our story sizes.
Thanks.
I thought I had a solution for you in using the "changed" JQL query (https://confluence.atlassian.com/display/JIRA/Advanced+Searching#AdvancedSearching-WAS), but unfortunately it looks like that is not supported currently in Jira. I received the following error from our hosted Jira instance:
History searches do not support the 'Story Points' field.
So as a user on demand query I don't think it is currently possible.
The only way I see of doing this would be to have a set day/time where you would run a query to get the current story points, export it as an excel file and then do it again after you review a set of stories and write some excel functions to show the change.
The larger question would be around your agile/scrum processes as to why estimated would change so frequently as to need tracking. If the team as a whole decides the points its ok if it doesn't match the reality once we start working on it. Or is this a case where it is updated on more than one occasion before its actually being worked on? If thats the case then I'd say that the story isn't well defined and need more information before it can be estimated?
Adding to Michael's answer, the daily monitoring for a given set of results to a query can be semi-automated using a JIRA filter subscription. You will still need to extract the issues from the results manually but at least in principle you can be sure not to miss any resizing that happens.
Related
I am designing airtable.
I met some issue.
I need to column total sum like excel.
For example:
Column1 Sum(Column1)
1 1
2 3
4 7
6 13
Like this. What is solution?
Thank you.
Airtable is not a spreadsheet but a relational database, the behavior you're looking for isn't straightforward to reproduce because it's not meant to work like rows matter and aren't anything but a temporary sort - they don't, so they're not.
I know you were probably hoping for a better answer than another question, but I simply have to ask - why do you need to do this inside Airtable? Why not just use one of dozens readily available and entirely free spreadsheet/table solutions?
Generally speaking and especially if you don't need to manipulate that data afterward (a big if), Airtable already does the calculation you want on the fly and has it stored as part of its metadata.
The row-by-row addition would be doable using a combination of one autonumber field, a linked record (to another table actually polling for values) and a rollup returning data. I've done this back in the day once or twiCe and it was always an overengineered mess, even if I only had to deal with small integers like from your example.
There's Google Drive sync beta ongoing at Airtable right now. Just get that and do the calculations you need elsewhere?
The alternative is the Scripting app, but that might prove crippling in terms of how it could affect your automations quota. And recalculating fields by "hand" is... not sophisticated, to put it mildly.
But hey, don't take my word for it; Curiosity and nostalgia got the better of me so I gave this futile effort another go on your behalf, here's my best take at such an overengineered mess of a field-wide sum function that's wildly annoying to use but at least doesn't take all day to update records, even if presented with hundreds or thousands of inputs.
So, yeah... right tool for the job and all that: this ain't it, chief, but be my guest. You can clone the base from the Universe and everything will be ready for testing, just keep creating new fields or deleting the exiting few ones, then hit the "Run Script" button of the only app hooked into the base to see it recalculate the sum.
Dumping the code here as we, if anyone wants to set up a new testing environment manually:
let table = base.getTable('Table 1');
let query = await table.selectRecordsAsync()
let cellsToAdd = [];
let sum = 0;
const keepSumming = x => sum += x ;
query.records.forEach( x => cellsToAdd.push(
{
"id": x.id,
fields:{
"Column1":x.getCellValue('Column1'),
"Sum":keepSumming(x.getCellValue('Column1'))
}
}
));
//Airtable limits us to 50 table mutations per request, hence the splicing
while(cellsToAdd.length>0){
await table.updateRecordsAsync(
cellsToAdd.splice(0,50)
)
};
There appears to be a feature built-in to Airtable for this now. In the desktop app, at least, take a look down at the bottom of each column below all rows. There is a context menu for the column, in which Sum is one of several options.
I am trying to scrape a website for financials of Indian companies as a side project & put it in Google Sheets using XPATH
Link: https://ticker.finology.in/company/AFFLE
I am able to extract data from elements that have a specific id like cash, net debt, etc. however I am stuck with extracting data for labels like Sales Growth.
tried
Copying the full xpath from console, //*[#id="mainContent_updAddRatios"]/div[13]/p/span - this works, however, i am reliable on the index of the div (13) and that may change for different companies, hence i am unable to automate it.
Please assist with a scalable solution
PS: I am a Product Manager with basic coding expertise as I was a developer few years ago.
At some point you need to "hardcode" something unless you have some other means of mapping the content of the page to your spreadsheet. In your example you appear to be targeting "Sales Growth" percentage. If you are not comfortable hardcoding the index of the div (13), you could identify it by the id of the "Sales Growth" label which is mainContent_lblSalesGrowthorCasa.
For example, change your
//*[#id="mainContent_updAddRatios"]/div[13]/p/span
to:
//*[#id = "mainContent_updAddRatios"]/div[.//span/#id = "mainContent_lblSalesGrowthorCasa"]/p/span
which is selecting the div based on the div containing a span with id="mainContent_lblSalesGrowthorCasa". Ultimately, whether you "hardcode" the exact index of the div or "hardcode" the ids of the nodes, you are still embedding assumptions regarding the structure of page.
Thanks #david, that helped.
Two questions
What if the structure of the page would change? Example: If the website decided to remove the p tag then would my sheet fail? How do we avoid failure in such cases?
Also, since every id is unique, the probability of that getting changed is lesser than the index being changed. Correct me, if I am wrong?
What do we do when the elements don't have an id like Profit Growth, RoE, RoCE etc
We're using TFS for our daily team stand ups which are more task driven vs development iterations. We'd like to be able to track how many times a target date changed & in what areas that's happening the most to see if we can pinpoint bottlnecks. I'm having a heck of a time figuring out a query that will give me these results. I tried querying "History Contains Words changed target date" (based off the image you'll see in the link below) but got no results. When I just say "history contains words date", it only gives me results where someone said the word "date" in a discussion field.
Any ideas?
Screenshot of History Item
It's an expected behavior. Comments entered into the Discussion area are queryable. Change history entries, such as which fields were changed, aren't queryable.
Check the following link for more information:
https://learn.microsoft.com/en-us/vsts/boards/queries/history-and-auditing?view=vsts&tabs=browser
I'm looking for an idea how to improve visibility of user stories progress in Jira+GreenHopper.
How we work now: we put all our User Stories into Jira, break them down into sub-tasks for development, then our testers link bugs in Jira to appropriate user stories. On our project dashboard we have a filter like "show name, status, completion % where fixVersion = current_sprint order by priority desc".
Our problem: in order to understand if a user story marked as 100% done can really be demonstrated to our customer, we need to make sure if it has no critical bugs and has no more than N low-priority bugs. But now we need to manually go over each user story one by one to calculate such figures.
Question: Any ideas if it's possible to show bugs count of each priority in the list of user stories in current sprint? For simplicity, we would consider like:
High: not resolved bugs of Blocker + Critical priority;
Medium: not resolved bugs of Major + Medium priority;
Low: not resolved bugs of Minor + Trivial priority;
So, such list would look like
US name | US completion % | High-pri bugs # | Med-pri bugs # | Low-pri bugs #
Ideas of the easiest way? anything built on standard Jira gadgets/queries? or any custom plugin you might know to use for that? or even if anything should be developed? Thanks!
Create a new issue type, may be call it "Sub-Bug". This issue type should be available only when user tries to create subtask under a story.
When QA validates a story and finds the issues, ask them to create sub-task under the story and select "Sub-bug" as issue type.
Now you can easily follow that all subtasks (which includes actual subtask and su-bug) are completed before you move story to "Done" status.
You could use a (read only) custom field which stores the number of all linked issues. This custom field can be shown in your search results.
Maybe this is something for you: JIRA Misc Custom Fields
This custom field can be used easily in filters. The issue count can than be displayed in e.g. confluence pages. That confluence page you can show to your customers.
I have a particular saved filter that shows me all cases in a specific project and area that are active and assigned to humans (by excluding some users that don't correspond to real people but are instead used for unrelated project management operations.
It looks something like:
"All open cases in PROJECT that are active containing -assignedto:"Non-Human User 1" -assignedto:"Non-Human User 2"
I would like to amend this filter to show me the subset of these cases that have had no edits of any kind in the last two weeks. I have tried adding various flavors of the edited axis using relative time ranges as I've seen examples of in the FogBugz documentation, but I get unexpected results every time. In particular, -edited:"-2w.." or even the simpler -edited:"yesterday" shows me results where the Last Updated column says, maddeningly, "DD/MM/YYYY (Yesterday)."
(This is with FB 8, for what it's worth).
I was able to get this to work reasonably close to what I expected by adding a search axis term for edited:"..-2w" (where -2w means "two weeks ago" and could of course be changed to whatever window of time was relevant). What tripped me up is that I was trying to exclude things edited between two weeks ago and now using -edited and that didn't quite do what I expected.
Instead, my final query looks like it is grabbing things edited from the dawn of time until two weeks ago (further restricted by additional filters of course).