Referência de sintaxe de WIQL (Linguagem de Consulta de Item de Trabalho)
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Você pode usar a sintaxe WIQL para definir uma consulta como um hiperlink ou ao usar a API REST (Work Item Query Language).
A sintaxe WIQL dá suporte a todas as funções disponíveis por meio do portal da Web Editor de Consultas mais algumas. Você pode especificar os campos a serem retornados e especificar o agrupamento lógico de cláusulas de consulta. Além disso, você pode usar uma ASOF
cláusula para filtrar baseado em atribuições com base em uma data anterior.
Importante
A sintaxe WIQL é usada para executar a API REST Consulta por Wiql. Atualmente, não há como chamar a API para retornar as informações detalhadas do item de trabalho de uma consulta WIQL diretamente. Não importa quais campos você inclua na instrução SELECT, a API retorna apenas as IDs de item de trabalho. Para obter as informações completas, você precisa executar duas etapas: (1) obter a ID dos itens de trabalho de um WIQL e (2) obter os itens de trabalho por meio de Obter uma lista de itens de trabalho por ID e para campos específicos.
Pré-requisitos
Uma consulta retorna apenas os itens de trabalho para os quais você tem a permissão Exibir itens de trabalho ou Exibir itens de trabalho neste nó. Normalmente, essas permissões são concedidas a membros dos grupos Leitores e Colaboradores para cada projeto de equipe. Para saber mais, confira Permissões e grupos.
Visão geral da linguagem de consulta
A linguagem de consulta de item de trabalho tem cinco partes mostradas no snippet de sintaxe e descritas na tabela a seguir. A sintaxe WIQL não diferencia maiúsculas de minúsculas.
SELECT
[System.Id],
[System.AssignedTo],
[System.State],
[System.Title],
[System.Tags]
FROM workitems
WHERE
[System.TeamProject] = 'Design Agile'
AND [System.WorkItemType] = 'User Story'
AND [System.State] = 'Active'
ORDER BY [System.ChangedDate] DESC
ASOF '02-11-2020'
Dica
Ao instalar a extensão Wiql Editor Marketplace, você pode construir suas consultas usando o Editor de Consultas e, em seguida, exibir a sintaxe WIQL. Em seguida, você pode copiar e modificar a sintaxe WIQL e executar a consulta usando o hub Wiql Playground adicionado aos Quadros.
Cláusula
Exemplo
SELECT
Identifica os campos a serem retornados para cada item de trabalho retornado pela consulta. Você pode especificar o nome amigável ou o nome de referência. Use colchetes ([]) se o nome contêm espaços em branco ou pontos finais.
FROM
Indica se você deseja que a consulta localize itens de trabalho ou links entre itens de trabalho.
- Use
FROM WorkItems
para retornar itens de trabalho. - Use
FROM workItemLinks
para retornar links entre itens de trabalho. Para obter mais informações, confira Consultar por links entre os itens de trabalho mais adiante neste artigo.
WHERE
Especifica os critérios de filtro para a consulta. Para obter mais informações, confira Condições de filtro (WHERE) mais adiante neste artigo.
ORDER BY
Especifica a ordem de classificação dos itens de trabalho retornados. Você pode especificar Crescente (Asc) ou Decrescente (Desc) para um ou mais campos. Por exemplo:
ORDER BY [State] Asc, [Changed Date] Desc
ASOF
Especifica uma consulta histórica, indicando uma data quando o filtro deve ser aplicado. Por exemplo, essa consulta retorna todas as histórias de usuário que foram definidas como Ativas em 11 de fevereiro de 2020. Especifique a data de acordo com as diretrizes fornecidas no Padrão de data e hora.
ASOF '02-11-2020'
Observação
O comprimento WIQL de consultas feitas no Azure Boards não deve exceder 32 mil caracteres. O sistema não permitirá que você crie ou execute consultas que excedam esse comprimento.
Padrão de data e hora
O padrão de data e hora inserido para campos DateTime deve corresponder ao selecionado em seu perfil. Para exibir ou alterar sua seleção, consulte Definir preferências do usuário.
Aspas (aspas simples ou duplas têm suporte) de literais DateTime usadas em comparações. Elas devem estar no formato DateTime do .NET do computador cliente local que executa a consulta. A menos que um fuso horário seja especificado, os literais DateTime estão no fuso horário do computador local.
WHERE
AND [System.ChangedDate] >= '01-18-2019 GMT'
AND ([Closed Date] < '01-09-2022 GMT'
OR [Resolved Date] >= '01-18-2019 14:30:01')
Quando a hora é omitida em um literal DateTime e o parâmetro dayPrecision é igual a false, a hora é considerada zero (meia-noite). A configuração padrão para o parâmetro dayPrecision é false.
Ou você pode especificar o formato ISO 8601, que é válido independentemente da localidade. A ISO 8601 representa a data e a hora começando com o ano, seguido pelo mês, o dia, a hora, os minutos, segundos e milissegundos. Por exemplo, 2021-12-10 15:00:00.000, representa o dia 10 de dezembro de 2021 às 15:00 no horário local. Um exemplo de como usar o formato ISO 8601 é o seguinte.
WHERE
AND [System.ChangedDate] >= '2019-01-18T00:00:00.0000000'
AND ([Closed Date] < '2022-01-09T00:00:00.0000000'
OR [Resolved Date] >= '2019-01-18T00:00:00.0000000')
Campos Personalizados
Você pode adicionar um campo personalizado a uma cláusula de consulta. Com o WIQL, você deve especificar o nome de referência para o campo personalizado. Para projetos que usam um modelo de processo herdado, os campos personalizados normalmente são rotulados com Personalizado. anexados ao nome e espaços removidos. Por exemplo:
Nome amigável | Nome de referência |
---|---|
Aprovador | Custom.Approver |
Tipo de solicitação | Custom.RequestType |
Estimativa de Escopo | Custom.CustomEstimate |
Para projetos que usam o modelo de processo XML local, o nome de referência é definido pelas definições de tipo de item de trabalho XML.
Para obter mais informações, leia Campos e atributos de item de trabalho.
Especificar cláusulas de filtro (WHERE
)
A cláusula WHERE
especifica os critérios de filtro. A consulta retorna apenas os itens de trabalho que atendem a os critérios especificados. Por exemplo, o exemplo a seguir de cláusula WHERE
retorna as histórias de usuário ativas e atribuídas a você.
WHERE [Work Item Type] = 'User Story'
AND [State] = 'Active'
AND [Assigned to] = @Me
Você pode controlar a ordem na qual os operadores lógicos são avaliados colocando-os entre parênteses para agrupar os critérios de filtro. Por exemplo, para retornar os itens de trabalho que são atribuídos a você ou que você fechou, altere o filtro de consulta para corresponder ao exemplo a seguir.
WHERE
[System.TeamProject] = @project
AND (
[System.WorkItemType] = 'Product Backlog Item'
AND (
[System.AssignedTo] = @me
OR [Microsoft.VSTS.Common.ClosedBy] = @me
)
)
Condições de filtro
Cada condição de filtro é composta por três partes, cada uma das quais deve estar em conformidade com as seguintes regras:
- Campo: você pode especificar o nome amigável ou o nome de referência. Os seguintes exemplos são uma sintaxe WIQL válida:
- Nome de Referência:
SELECT [System.AssignedTo] ...
- Nome amigável com espaços:
SELECT [Assigned To] ...
- Nomes sem espaços não exigem colchetes:
SELECT ID, Title ...
- Nome de Referência:
- Operador: os valores válidos são especificados na seção Operadores posteriormente neste artigo.
- Valor do campo: você pode especificar um dos três valores a seguir, dependendo do campo especificado.
- Um valor literal deve corresponder ao tipo de dados do valor do campo.
- Uma *variável ou macro que indica um determinado valor. Por exemplo, @Me indica a pessoa que está executando a consulta. Para obter mais informações, confira Macros e Variáveis posteriormente neste artigo.
- O nome do outro campo. Por exemplo, você pode usar
[Assigned to] = [Changed by]
para localizar os itens de trabalho que estão atribuídos à pessoa que alterou o item de trabalho recentemente.
Para obter uma descrição e nomes de referência de todos os campos definidos pelo sistema, confira Índice de campo de item de trabalho.
Operadores
As consultas usam expressões lógicas para qualificar conjuntos de resultados. Essas expressões lógicas são formadas por uma ou mais operações agrupadas.
Algumas operações de consulta simples estão listadas abaixo.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [Microsoft.VSTS.Common.Severity] <> '1 - Critical'
A tabela a seguir resume todos os operadores com suporte para diferentes tipos de campo. Para obter mais informações sobre cada tipo de campo, confira Atributos e campos e atributos de item de trabalho.
Os operadores =, <>, >, <, >=, and <=
funcionam conforme o esperado. Por exemplo, System.ID > 100
consulta todos os itens de trabalho com uma ID maior que 100. System.ChangedDate > '01-01-19 12:00:00'
consulta todos os itens de trabalho alterados após o meio-dia de 1º de janeiro de 2019.
Além desses operadores básicos, há alguns comportamentos e operadores específicos para determinados tipos de campo.
Observação
Os operadores disponíveis para você dependem de sua plataforma e versão. Para obter mais informações, confira Consultar referência rápida.
Tipo de campo
Operadores suportados
Booliano
= , <> , =[Field] , <>[Field]
DateTime
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Duplo, GUID, Inteiro
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Identidade
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Not Contains, In, Not In, In Group, Not In Group, Was Ever
Texto sem formatação
Contains Words, Not Contains Words, Is Empty, Is Not Empty
String
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Not Contains, In, Not In, In Group, Not In Group, Was Ever
TreePath
=, <>, In, Not In, Under, Not Under
Agrupamentos lógicos
Você pode usar os termos AND
e OR
no sentido booliano típico para avaliar duas cláusulas. Você pode usar os termos AND EVER
e OR EVER
ao especificar um operador WAS EVER
. Você pode agrupar expressões lógicas e agrupá-las ainda mais, conforme necessário. Os exemplos são mostrados abaixo.
WHERE
[System.TeamProject] = @project
AND (
[System.WorkItemType] <> ''
AND [System.State] IN ('Active', 'Approved', 'Committed', 'In Progress')
AND (
[System.CreatedBy] = ''
OR [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
)
)
Você pode negar os operadores contains, under,
e in
usando not
. Não é possível negar o operador ever
. O exemplo abaixo consulta todos os itens de trabalho que não são atribuídos na subárvore de Fabrikam Fiber\Account Management
.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'
Consulta de exemplo, Nunca Foi Atribuído A
O exemplo de Editor de Consultas a seguir localiza todos os itens de trabalho que já foram atribuídos a Jamal Hartnett.
E aqui está a sintaxe WIQL correspondente.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitems
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND EVER [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
Macros ou variáveis
A tabela a seguir lista as macros ou variáveis que você pode usar em uma consulta WIQL.
Macro | Uso |
---|---|
@Me | Use essa variável para pesquisar automaticamente o alias do usuário atual em um campo que contém alias de usuários. Por exemplo, você pode localizar itens de trabalho abertos se definir a coluna Campo como Ativado Por, a coluna Operador para =e a coluna Valor como @Me. |
@CurrentIteration | Use essa variável para filtrar automaticamente os itens de trabalho atribuídos ao sprint atual para a equipe selecionada com base no contexto de equipe selecionado. |
@Project | Use essa variável para pesquisar itens de trabalho no projeto atual. Por exemplo, você pode localizar todos os itens de trabalho no projeto da atual se definir a coluna Campo como Projeto da Equipe, a coluna Operador como = e a coluna Valor como @Project. |
@StartOfDay @StartOfWeek @StartOfMonth @StartOfYear |
Use essas macros para filtrar os campos DateTime com base no início do dia atual, semana, mês, ano ou um deslocamento para um desses valores. Por exemplo, você pode localizar todos os itens criados nos últimos três meses se definir a coluna Campo como Data de Criação, a coluna Operador como >= e a coluna Valor como @StartOfMonth - 3. |
@Today | Use essa variável para pesquisar itens de trabalho relacionados à data atual ou a uma data anterior. Também é possível modificar a variável @Today subtraindo dias. Por exemplo, você pode localizar todos os itens ativados na semana passada se definir a coluna Campo como Data da Ativação, a coluna Operador como >= e a coluna Valor como @Today - 7. |
[Qualquer] | Use essa variável para pesquisar itens de trabalho relacionados a qualquer valor definido para um campo específico. |
Macro @me
A macro @me
substitui o nome da conta integrada do Windows do usuário que executa a consulta. O exemplo a seguir mostra como usar a macro e a instrução estática equivalente. A macro destina-se ao uso com campos de identidade, como Assigned To
.
WHERE
[System.AssignedTo] = @Me
Macro @today
Você pode usar a macro @today
com qualquer campo DateTime. Essa macro substitui a meia-noite da data atual no computador local que executa a consulta. Você também pode especificar @today+x
ou @today-y
usando deslocamentos inteiros para x dias após @today
e y dias antes de @today
, respectivamente. Uma consulta que usa a macro @today
pode retornar conjuntos de resultados diferentes dependendo do fuso horário no qual ela é executada.
Os exemplos a seguir pressupõem que hoje é 3/1/19.
WHERE
[System.CreatedDate] = @today
É o equivalente a:
WHERE
[System.CreatedDate] = '01-03-2019'
And
WHERE
[System.CreatedDate] > @today-2
É o equivalente a:
WHERE
[System.CreatedDate] > '01-01-2019'
macros @StartOfDay, @StartOfWeek, @StartOfMonth, @StartOfYear
Você pode usar as macros @StartOf...
com qualquer campo DateTime. Essa macro substitui a meia-noite do dia atual, início da semana, início do mês ou início do ano no computador local que executa a consulta.
Observação
Tem como requisito o Azure DevOps Server 2019 Atualização 1 ou versão posterior.
Essas macros aceitam uma cadeia de caracteres modificadora que tem um formato de (+/-)nn(y|M|w|d|h|m)
. Semelhante à macro @Today
, você pode especificar deslocamentos de mais ou menos inteiros. Se o qualificador de unidade de tempo for omitido, ele usará como padrão o período natural da função. Por exemplo, @StartOfWeek("+1")
é o mesmo que @StartOfWeek("+1w")
. Se o sinal de mais/menos (+/-) for omitido, será assumido mais.
Essa sintaxe permite aninhar modificadores e deslocar a consulta duas vezes. Por exemplo, a cláusula Closed Date >= @StartOfYear - 1
, filtra itens de trabalho que foram fechados desde o ano passado. Ao modificá-la para Closed Date >= @StartOfYear('+3M') - 1
, ela exclui itens de trabalho fechados nos três primeiros meses do ano passado. A sintaxe WIQL é a mesma mostrada no exemplo a seguir.
WHERE
[Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1
Os exemplos a seguir pressupõem que hoje é 5/4/19.
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= @StartOfMonth-3
É o equivalente a:
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= '01-01-2019'
And
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > @StartOfYear
É o equivalente a:
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > '01-01-2019'
Macros personalizadas
O WIQL também dá suporte a macros personalizadas arbitrárias. Qualquer cadeia de caracteres prefixada por um @
é tratada como macro personalizada e é substituída. O valor de substituição da macro personalizada é recuperado do parâmetro de contexto do método de consulta no modelo de objeto. O método a seguir é a API usada para macros:
public WorkItemCollection Query(string wiql, IDictionary context)
O parâmetro de contexto contém pares chave-valor para macros. Por exemplo, se o contexto contiver um par chave-valor de (projeto, MyProject), o @project será substituído por MyProject
no WIQL. Essa substituição é como o construtor de consultas de item de trabalho lida com a macro @project no Visual Studio.
Especificar consultas históricas (ASOF
)
Você pode usar uma cláusula ASOF
em uma consulta para filtrar itens de trabalho que satisfaçam as condições de filtro especificadas, conforme foram definidas em uma data e hora específicas.
Observação
Você não pode criar consultas ASOF
no construtor de consultas do Visual Studio. Se você criar um arquivo de consulta (.wiq) que inclui uma cláusula ASOF
e, em seguida, carregá-lo no Visual Studio, a cláusula ASOF
será ignorada.
Suponha que um item de trabalho tenha sido classificado em um Caminho de Iteração de Fabrikam Fiber\Release 1
e atribuído a "Jamal Hartnett" antes de 05/05/2022. No entanto, o item de trabalho foi recentemente atribuído a "Raisa Pokrovskaya" e movido para um novo caminho de iteração do Lançamento 2. A consulta de exemplo a seguir retorna itens de trabalho atribuídos a Jamal Hartnett, pois a consulta é baseada no estado dos itens de trabalho a partir de uma data e hora passadas.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitems
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND ([System.IterationPath] UNDER 'Fabrikam Fiber\Release 1'
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>')
ASOF '01-05-2022 00:00:00.0000000'
Observação
Se nenhuma hora for especificada, o WIQL usará meia-noite. Se nenhum fuso horário for especificado, o WIQL usará o fuso horário do computador cliente local.
Definir a ordem de classificação (ORDER BY
)
Você pode usar a cláusula ORDER BY
para classificar os resultados de uma consulta por um ou mais campos em ordem crescente ou decrescente.
Observação
As preferências de classificação do SQL Server na camada de dados determinam a ordem de classificação padrão. No entanto, você pode usar os parâmetros asc
ou desc
para escolher uma ordem de classificação explícita.
O exemplo a seguir classifica os itens de trabalho primeiro por Prioridade em ordem crescente (padrão) e, em seguida, por Data de Criação em ordem decrescente (DESC
).
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitems
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND [System.State] = 'Active'
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ORDER BY [Microsoft.VSTS.Common.Priority],
[System.CreatedDate] DESC
Consultar por links entre os itens de trabalho
Para retornar os links entre itens de trabalho, especifique FROM WorkItemLinks
. As condições de filtro na cláusula WHERE
pode se aplicar aos links ou a qualquer item de trabalho que seja a origem ou o destino de um link. Por exemplo, a consulta a seguir retorna os links entre Item da Lista de Pendências do Produto e seus itens filho ativos.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitemLinks
WHERE
(
[Source].[System.TeamProject] = @project
AND [Source].[System.WorkItemType] = 'Product Backlog Item'
)
AND (
[System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
)
AND (
[Target].[System.TeamProject] = @project
AND [Target].[System.WorkItemType] <> ''
AND [Target].[System.State] <> 'Closed'
)
ORDER BY [Microsoft.VSTS.Common.Priority],
[System.CreatedDate] DESC
MODE (Recursive)
A tabela a seguir resume as diferenças entre consultas de item de trabalho e consultas de links entre itens de trabalho.
Cláusula
Itens de trabalho
Links entre itens de trabalho
FROM
FROM WorkItems
FROM WorkItemLinks
WHERE
[FieldName] = Value
Specify one or more of the following:
[Source].[FieldName] = Value
[Target].[FieldName] = Value
[System.Links.LinkType] = 'LinkName'
MODE
não aplicável
Especifique um dos seguintes:
MODE (MustContain)
: (Padrão) retorna apenas os registros WorkItemLinkInfo, onde todos os critérios de origem, o destino e link são satisfeitos.MODE (MayContain)
: retorna registros WorkItemLinkInfo para todos os itens de trabalho que satisfaçam os critérios de origem e de link, mesmo que nenhum item de trabalho vinculado satisfaça os critérios de destino.MODE (DoesNotContain)
: retorna registros WorkItemLinkInfo para todos os itens de trabalho que satisfaçam a origem, somente se nenhum item de trabalho vinculado satisfizer os critérios de link e de destino.MODE (Recursive)
: use para consultas de árvore([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
). O tipo de link deve ser Topologia de árvore e direção para frente. Retorna registros WorkItemLinkInfo para todos os itens de trabalho que atendem à origem, recursivamente ao destino.ORDER BY
eASOF
não são compatíveis com consultas de árvore.
RETURNS
Você pode especificar um dos seguintes nomes de tipo de link do sistema.
Você pode especificar um dos nomes de tipo de link do sistema, listados abaixo, ou um tipo de link personalizado que você definiu com o processo XML local.
System.LinkTypes.Hierarchy-Forward
System.LinkTypes.Related
System.LinkTypes.Dependency-Predecessor
System.LinkTypes.Dependency-Successor
Microsoft.VSTS.Common.Affects-Forward
(processo CMMI)
Para obter mais informações, confira Referência do tipo de link.
Exemplo de consulta de tipo de árvore
A consulta a seguir retorna todos os tipos de item de trabalho definidos no projeto atual. A consulta, conforme mostrado no Editor de Consultas, aparece conforme mostrado na imagem a seguir.
A sintaxe WIQL equivalente é mostrada abaixo.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitemLinks
WHERE
(
[Source].[System.TeamProject] = @project
AND [Source].[System.WorkItemType] <> ''
AND [Source].[System.State] <> ''
)
AND (
[System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
)
AND (
[Target].[System.TeamProject] = @project
AND [Target].[System.WorkItemType] <> ''
)
MODE (Recursive)
Exemplo de consulta de link direto
A consulta a seguir retorna todos os tipos de item de trabalho definidos no projeto atual. A consulta, conforme mostrado no Editor de Consultas, aparece conforme mostrado na imagem a seguir.
A sintaxe WIQL equivalente é mostrada abaixo.
SELECT
[System.Id],
[System.WorkItemType],
[System.Title],
[System.AssignedTo],
[System.State]
FROM workitemLinks
WHERE
(
[Source].[System.TeamProject] = @project
AND [Source].[System.WorkItemType] <> ''
AND [Source].[System.State] <> ''
)
AND (
[System.Links.LinkType] = 'System.LinkTypes.Dependency-Reverse'
OR [System.Links.LinkType] = 'System.LinkTypes.Related-Forward'
OR [System.Links.LinkType] = 'System.LinkTypes.Dependency-Forward'
)
AND (
[Target].[System.TeamProject] = @project
AND [Target].[System.WorkItemType] <> ''
AND [Target].[System.ChangedDate] >= @today - 60
)
ORDER BY [System.Id]
MODE (MustContain)
Mais exemplos de consultas
O exemplo de consulta WIQL típico a seguir usa nomes de referência para os campos. A consulta seleciona itens de trabalho (nenhum tipo de item de trabalho especificado) com uma Priority=1. A consulta retorna a ID e o Título do conjunto de retorno como colunas. Os resultados são classificados por ID em ordem crescente.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitems
WHERE
[System.TeamProject] = @project
AND [Microsoft.VSTS.Common.Priority] <> ''
ORDER BY [System.Id]
Padrão de data/hora
Especifique o padrão de data/hora de acordo com um dos dois padrões:
- O formato Padrão de Data e Padrão de Hora vem de suas preferências de usuário, Hora e Localidade
- O padrão especificado por UTC, que segue esse padrão (com Z acrescentado à data e hora).
AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'
Exemplos de cláusulas
As instruções de exemplo a seguir mostram cláusulas de qualificação específicas.
Cláusula
Exemplo
AND
SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
OR
SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND ( [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
OR [System.AssignedTo] = ''Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>' )
NOT
SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [System.AssignedTo] NOT CONTAINS 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'
EVER
SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
UNDER
SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [System.AreaPath] UNDER 'Agile1\Area 0'
ORDER BY
SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ORDER BY [System.Id] [asc | desc]
ASOF
(Filtro de Tempo)
SELECT [System.Title]
FROM workitems
WHERE [System.IterationPath] = 'MyProject\Beta'
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ASOF '3/16/19 12:30'
Cadeia de caracteres e PlainText
Literais de cadeia de caracteres de aspas (há suporte para aspas simples ou duplas) em uma comparação com uma cadeia de caracteres ou um campo de texto sem formatação. Literais de cadeia de caracteres dão suporte a todos os caracteres Unicode.
WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'
Você pode usar o operador contains para pesquisar uma substring em qualquer lugar no valor do campo.
WHERE [System.Description] contains 'WIQL'
Área e iteração (TreePath)
Você pode usar o operador UNDER
para os campos Área e Caminho de Iteração. O operador UNDER
avalia se um valor está dentro da subárvore de um nó de classificação específico. Por exemplo, a expressão abaixo seria avaliada como true se o Caminho da Área fosse 'MyProject\Server\Administration', 'MyProject\Server\Administration\Feature 1', 'MyProject\Server\Administration\Feature 2\SubFeature 5' ou qualquer outro nó dentro da subárvore.
WHERE [System.AreaPath] UNDER 'MyProject\Server\Administration'
Modificadores e operadores especiais
Você pode usar alguns modificadores e operadores especiais em uma expressão de consulta.
Use o operador IN
para avaliar se um valor de campo é igual a qualquer um de um conjunto de valores. Esse operador tem suporte para os tipos de campo String, Integer, Double e DateTime. Consulte o exemplo a seguir junto com seu equivalente semântico.
WHERE
[System.TeamProject] = @project
AND [System.CreatedBy] IN ('Jamal Hartnett <fabrikamfiber4@hotmail.com>', 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>', 'Christie Church <fabrikamfiber1@hotmail.com>')
or
WHERE
[System.TeamProject] = @project
AND (
[System.CreatedBy] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
OR [System.CreatedBy] = 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'
OR [System.CreatedBy] = 'Christie Church <fabrikamfiber1@hotmail.com>'
)
O operador EVER
é usado para avaliar se um valor de campo é igual ou se já igualou um valor específico em todas as revisões anteriores de itens de trabalho. Os tipos de campo String, Integer, Double e DateTime tem suporte para este operador. Há sintaxes alternativas para o operador EVER
. Por exemplo, os snippets abaixo consultam se todos os itens de trabalho já foram atribuídos a Jamal, Raise ou Christie.
WHERE
[System.TeamProject] = @project
AND (
EVER [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
OR EVER [System.AssignedTo] = 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'
OR EVER [System.AssignedTo] = 'Christie Church <fabrikamfiber1@hotmail.com>'
)