We prepare to use JIRA to customise a project.
The situation is that we have so many statuses(steps) in the project, like a, b, c, d, e, f, g, h..., we want to group some of the statuses together under a common name, for example, name A includes a,b,c and name B includes d,e,f....something like that.
Anyone knows whether there is such existing function in JIRA or plugins which can satisfy the requirement.
Thanks.
JIRA doesn't do hierarchical workflows. The simplest way is to give all your status names prefixes, e.g. A:a, A:b, A:c, B:d etc
Related
I am working on narrowing down the selection from three tables. The hierarchy looks like the link below.
PublisherAccountID includes a list of PublisherName, and within Publisher name, it contains a list of Imprint.
PublisherAccountID > PublisherName > Publisher Imprint
I am creating narrowing options for each hierarchy on Tableau.
For example, if I have two PublisherAccountID, A and B, A contains 1,2,3 while B contains 4,5,6. If I select A, then the option for PublisherName will now show 456.
Sorry I don't know how to not embed pciture link. The heiracy is below
enter image description here
Have you grouped the fields? You can always create a group. You can name the group from the 2nd level i.e. B, and group the relevant items (4,5,6). You can then use the new Group field as a filter.
So I have two csv files, one is the all member information, one is a poll event result,
which is like:
Member information:
[Member Name],[Member Tier]
Apple, Bronze
Banana, Silver
Cat, Gold
Poll event result:
[Member Name],[OptionA],[OptionB],[OptionC]
Apple,0,0,1
Banana,1,0,0
Cat,0,1,0
I want to do is weight the vote value with member's tier, for example, Cat is gold member so in this poll OptionB will win.
But the poll csv file is lack of member's tier parameter, so, I'm thinking to do a function like:
Create list "tier Bronze","tier Silver","tier Gold"
in member information file, loop for everyone, if tier match, add to that list
and then go to poll file, loop for everyone, if name match the name in tier list, mark them.
I'm not sure is this the right way, and how to do it, any help will be appreciated :^)
What you need is a vlookup function.
Take 2 lists with member name (as ID) in first left column and tier in 2nd and then use vlookup.
Put vlookup on the right part of your poll table and write:
=vlookup(ID location;range with poll results;2;false)
Then copy down vlookup formula
Or you can do it in more elegant way using Arrayformula:
=ArrayFormula(
ifna(
vlookup(E3:E;$B$3:$C;2;false)
)
)
I am creating a single database to store nodes with content in several languages.
I have a model like:
(Book {title, summary, text})<-[WRITES {date}]-(Author {name, lang})
I would like to be able to perform full text search on Book's titles and text in several language.
I have tried to simply create several index with different analyzer in a very stupid way:
CALL db.index.fulltext.createNodeIndex("searchEN",["Book"],["title", "summary", "text"], {analyzer: "english")
CALL db.index.fulltext.createNodeIndex("searchFR",["Book"],["title", "summary", "text"], {analyzer: "french")
But when I try to create the index for french I get this error:
neobolt.exceptions.ClientError: There already exists an index NODE:label[0](property[1], property[9], property[11]).
A solution I would like would to limit a search in English to books that are written by an English speaking author without having to create a new node type like EnglishBook. I want to avoid it because other node types of the schema can share connections with books of different language.
For instance I still want to be able to do:
MATCH (p: Publisher)-[r: PUBLISHES]->(b: Book)
RETURN p, r, b
I trying to set up a scheme for web-clicks, where each node is a (:Click), which links to the click that precedes it by a [:PREV]-edge and the (:Session) that owns it by a [:GEN]-edge. In the end this should happen procedural, a new transaction/insert when a new click is made. While I have no problem generating the involved objects, I cannot figure out how to dynamically select last (:Click) and link it to the current created one.
Generate a session with 2 clicks:
CREATE (s:Session {name:'S0'})
CREATE (c1:Click {name:'C1', click:1}), (c1)<-[:GEN]-(s)
CREATE (c2:Click {name:'C2', click:2}), (c2)<-[:GEN]-(s), (c1)<-[:PREV]-(c2);
generate one other click in separated transaction:
MERGE (s:Session {name:'S0'})
CREATE (c3:Click {name:'C3', click:3}),
(c3)<-[:GEN]-(s) //(c2)<-[:PREV]-(c3);
for the commented out link, I cannot use the c2-variable as it is scope-local to the previous transaction.
Now I thought to try something like this to dynamically find the last generated node on the same session and link it
MERGE (s:Session {name:'S0'})
CREATE (c3:Click {name:'C3', click:3}), (c3)<-[:GEN]-(s)
MATCH (s)-[:GEN]->(c_prevs:Click)
WITH c_prevs
ORDER BY c_prevs.click DESC LIMIT 1
CREATE (head(c_prevs))<-[:PREV]-(c3)
Unfortunately this won't work for me with any Cypher-construct I came up with so far.
If I understand you can get the last :Click node on the same session this way:
match (:Session {name:'S0'})-[:GEN]->(c:Click)
where not (:Click)-[:PREV]->(c)
return c
That is: Get the node from the same session that does not have an incoming [PREV] relationship. Will return c2
╒═══════════════════════╕
│"c" │
╞═══════════════════════╡
│{"name":"C2","click":2}│
└───────────────────────┘
For your specific case a query like the following should work:
merge (s:Session {name:'S0'})
with s
match (s)-[:GEN]->(last:Click)
where not (:Click)-[:PREV]->(last)
create (c3:Click {name:'C3', click:3}),
(c3)<-[:GEN]-(s),
(last)<-[:PREV]-(c3)
I found the answer to my question to be the following
MATCH (s:Session {name:'S0'})
CREATE (c3:Click {name:'C3', click:3})
WITH s, c3
MATCH (s)-[:GEN]->(c_prev:Click)
WITH c_prev, c3, s
ORDER BY c_prev.click DESC LIMIT 1
WITH c_prev, c3, s
CREATE (c_prev)<-[:PREV]-(c3), (c3)<-[:GEN]-(s)
which is chaining through the nodes as variables s, c3 and last_c with the WITH keyword. Unfortunately this involves a lot of repetition, as every WITH in principle is a part-separator in the query, so I learned.
This also allows to carry over already MERGED/CREATED nodes, which might help to ensure their existence.
EDIT:
This problem seems to be even more complicated if clicks should be generated prozedural, thus using one cypher-statement to insert and link any click.
my solution looks like the following
MERGE (s:Session {name: $session_name})
WITH s
CREATE (c:Click {name: $click_name, click: $click_count})
WITH s, c
OPTIONAL MATCH (s)-[:GEN]->(c_prev:Click)
WITH c_prev, c, s
ORDER BY c_prev.click DESC LIMIT 1
WITH c_prev, c, s
FOREACH (o IN CASE WHEN c_prev IS NOT NULL THEN ['1'] ELSE [] END |
CREATE (c_prev)<-[:PREV]-(c)
)
WITH s, c
CREATE (c)<-[:GEN]-(s)
with executing this statement for {$session_name, $click_name, $click_count} =[{'AAA', 'C1', 1}, {'AAA', 'C2', 2}, {'AAA', 'C3', 3}].
Notice that I had to work around the returning empty node-list by explicitly catching this condition and then not executing the subsequent connection statement with the FOREACH-loop on an empty list. This does not only look very ugly, I sincerely think there should be a better way to expressively specify this desired behavior through Cypher in the near future.
=query(G2:I80,"select G,H,I where H=max(H) group by I",-1)
Columnn G is names
Column H is vote count and
Column I is Their respective teams.
I want to view the top voted names of each team and sometimes the some top voted names are tied so I wanna view both names using the query above but it dont seem to work.
I am not entirely sure what you want (a formula that does not work is not a good guide) but perhaps:
=sort(filter(query(G2:I80,"select G, H, I ",-1),H2:H80=Max(H:H)),3,TRUE)