Referência da sintaxe da Linguagem de Consulta do Item de Trabalho (WIQL)
Serviços de DevOps do Azure | 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 (Linguagem de Consulta de Item de Trabalho).
A sintaxe WIQL suporta todas as funções disponíveis através do portal web Query Editor e mais algumas mais. 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 com base em atribuições baseadas em uma data anterior.
Importante
A sintaxe WIQL é usada para executar a API REST Query By 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 do 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 somente 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 aos membros dos grupos Leitores e Colaboradores para cada projeto de equipe. Para obter mais informações, consulte Permissões e grupos.
Visão geral da linguagem de consulta
A linguagem de consulta do item de trabalho tem cinco partes mostradas no trecho de sintaxe a seguir 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'
Gorjeta
Ao instalar a extensão Wiql Editor Marketplace, você pode construir suas consultas usando o Editor de Consultas e, em seguida, visualizar a sintaxe WIQL. Em seguida, você pode copiar e modificar a sintaxe WIQL e executar a consulta usando o hub Wiql Playground adicionado aos painéis.
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 contiver espaços em branco ou pontos.
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, consulte Consultas para links entre itens de trabalho mais adiante neste artigo.
WHERE
Especifica os critérios de filtro para a consulta. Para obter mais informações, consulte Condições de filtro (ONDE) mais adiante neste artigo.
ORDER BY
Especifica a ordem de classificação dos itens de trabalho retornados. Você pode especificar Ascendente (Asc) ou Descendente (Desc) para um ou mais campos. Por exemplo:
ORDER BY [State] Asc, [Changed Date] Desc
ASOF
Especifica uma consulta histórica indicando uma data para 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 orientações fornecidas em Padrão de data e hora.
ASOF '02-11-2020'
Nota
O comprimento WIQL das consultas feitas nos Painéis do Azure 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 que você insere para os campos DateTime deve corresponder ao que você selecionou através do seu perfil. Para ver ou alterar a sua seleção, consulte Definir preferências do utilizador.
Cotação (aspas simples ou duplas são suportadas) literais DateTime usados em comparações. Eles devem estar no formato .NET DateTime 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 é assumida como 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 15h no horário local. Um exemplo de utilização do 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 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 geralmente são rotulados com Personalizado. prefixado ao seu nome, e espaços removidos. Por exemplo:
Nome amigável | Nome de referência |
---|---|
Aprovador | Personalizado.Aprovador |
Tipo de Pedido | Custom.RequestType |
Estimativa de escopo | Custom.CustomEstimate |
Para projetos que usam o modelo de processo XML local, o nome de referência é conforme definido pelas definições de tipo de item de trabalho XML.
Para obter mais informações, consulte Campos e atributos de item de trabalho.
Especificar cláusulas de filtro (WHERE
)
A WHERE
cláusula especifica os critérios de filtro. A consulta retorna somente itens de trabalho que satisfazem os critérios especificados. Por exemplo, a cláusula de exemplo WHERE
a seguir retorna histórias de usuário que estão ativas e que são 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 itens de trabalho 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 do filtro é composta por três partes, cada uma das quais deve obedecer às seguintes regras:
- Campo: Você pode especificar o nome de referência ou o nome amigável. Os exemplos a seguir são sintaxe WIQL válida:
- Nome de referência:
SELECT [System.AssignedTo] ...
- Nome amigável com espaços:
SELECT [Assigned To] ...
- Os nomes sem espaços não requerem colchetes:
SELECT ID, Title ...
- Nome de referência:
- Operador: Os valores válidos são especificados na seção Operadores mais adiante 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, consulte Macros e variáveis mais adiante neste artigo.
- O nome de outro campo. Por exemplo, você pode usar
[Assigned to] = [Changed by]
para localizar itens de trabalho atribuídos à pessoa que alterou o item de trabalho mais recentemente.
Para obter uma descrição e nomes de referência de todos os campos definidos pelo sistema, consulte Í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 conjuntas.
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 abaixo resume todos os operadores suportados para diferentes tipos de campo. Para obter mais informações sobre cada tipo de campo, consulte Campos e atributos de item de trabalho.
Os =, <>, >, <, >=, and <=
operadores trabalham como esperado. Por exemplo, System.ID > 100
consultas para todos os itens de trabalho com um ID maior que 100. System.ChangedDate > '01-01-19 12:00:00'
consultas para todos os itens de trabalho alterados após o meio-dia de 1º de janeiro de 2019.
Além desses operadores básicos, existem alguns comportamentos e operadores específicos para determinados tipos de campo.
Nota
Os operadores disponíveis dependem da sua plataforma e versão. Para obter mais informações, consulte Referência rápida de consulta.
Tipo de campo
Operadores suportados
Boolean
= , <> , =[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
PlainText
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 booleano típico para avaliar duas cláusulas. Você pode usar os termos AND EVER
e OR EVER
ao especificar um WAS EVER
operador. Você pode agrupar expressões lógicas e juntá-las ainda mais, conforme necessário. Seguem-se alguns exemplos.
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 o contains, under,
e in
operadores usando not
. Você não pode negar o ever
operador. O exemplo abaixo consulta todos os itens de trabalho que não estão atribuídos na subárvore do Fabrikam Fiber\Account Management
.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'
Exemplo de consulta, já foi atribuído a
O exemplo do 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 | Utilização |
---|---|
@Me | Use essa variável para procurar automaticamente o alias do usuário atual em um campo que contenha aliases de usuário. Por exemplo, você pode encontrar itens de trabalho abertos se definir a coluna Campo como Ativado por, a coluna Operador como =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 da equipe selecionada. |
@Project | Use essa variável para procurar itens de trabalho no projeto atual. Por exemplo, você pode encontrar todos os itens de trabalho no projeto atual se definir a coluna Campo como Projeto de Equipe, a coluna Operador como =e a coluna Valor como @Project. |
@StartOfDay @StartOfWeek @StartOfMonth @StartOfYear |
Use essas macros para filtrar campos DateTime com base no início do dia, semana, mês, ano ou um deslocamento atual para um desses valores. Por exemplo, você pode encontrar todos os itens criados nos últimos 3 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. Você também pode modificar a variável @Today subtraindo dias. Por exemplo, você pode encontrar todos os itens ativados na última semana se definir a coluna Campo como Data de Ativação, a coluna Operador como> = e a coluna Valor como @Today - 7. |
[Qualquer] | Use essa variável para procurar itens de trabalho relacionados a qualquer valor definido para um campo específico. |
@me macro
A @me
macro substitui o nome da conta integrada do Windows do usuário que executa a consulta. O exemplo abaixo 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
@today macro
Você pode usar a @today
macro com qualquer campo DateTime . Esta 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
usar deslocamentos inteiros para x dias após @today
e y dias antes @today
, respectivamente. Uma consulta que usa a @today
macro pode retornar diferentes conjuntos de resultados, dependendo do fuso horário em que é executada.
Os exemplos abaixo pressupõem que hoje é 1/3/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'
@StartOfDay, @StartOfWeek, @StartOfMonth, macros @StartOfYear
Você pode usar as @StartOf...
macros com qualquer campo DateTime . Esta 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.
Nota
Requer 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 à @Today
macro, você pode especificar deslocamentos inteiros para mais ou para menos. Se o qualificador de unidade de tempo for omitido, ele será padronizado para o período natural da função. Por exemplo, @StartOfWeek("+1")
é o mesmo que @StartOfWeek("+1w")
. Se o sinal de mais/menos (+/-) for omitido, assume-se mais.
Essa sintaxe permite aninhar modificadores e deslocar sua 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á-lo para Closed Date >= @StartOfYear('+3M') - 1
, exclui itens de trabalho fechados nos primeiros três meses do ano passado. A sintaxe WIQL é como mostrado no exemplo a seguir.
WHERE
[Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1
Os exemplos a seguir assumem que hoje é 4/5/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 suporta macros personalizadas arbitrárias. Qualquer cadeia de caracteres prefixada por um @
é tratada como uma macro personalizada e é substituída. O valor de substituição para a macro personalizada é recuperado do parâmetro context 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 context contém pares chave-valor para macros. Por exemplo, se o contexto contiver um par chave-valor de (projeto, MyProject), @project será substituído por MyProject
no WIQL. Essa substituição é como o construtor de consultas de item de trabalho manipula a macro @project no Visual Studio.
Especificar consultas históricas (ASOF
)
Você pode usar uma ASOF
cláusula 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.
Nota
Não é possível criar ASOF
consultas no construtor de consultas no Visual Studio. Se você criar um arquivo de consulta (.wiq) que inclui uma ASOF
cláusula e, em seguida, carregá-lo no Visual Studio, a ASOF
cláusula é ignorada.
Suponha que um item de trabalho foi classificado em um Caminho de Iteração de e atribuído a 'Jamal Hartnett' antes de Fabrikam Fiber\Release 1
5/05/2022. No entanto, o item de trabalho foi recentemente atribuído a 'Raisa Pokrovskaya' e movido para um novo caminho de iteração da Versão 2. A consulta de exemplo a seguir retorna itens de trabalho atribuídos a Jamal Hartnett porque 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'
Nota
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 ORDER BY
cláusula para classificar os resultados de uma consulta por um ou mais campos em ordem crescente ou decrescente.
Nota
As preferências de classificação do servidor SQL na camada de dados determinam a ordem de classificação padrão. No entanto, você pode usar os asc
parâmetros 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
Consulta de links entre itens de trabalho
Para retornar links entre itens de trabalho, especifique FROM WorkItemLinks
. As condições de filtro na WHERE
cláusula podem ser aplicadas 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 Itens 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
Ligações 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 uma das seguintes opções:
MODE (MustContain)
: (Padrão) Retorna somente registros WorkItemLinkInfo onde os critérios de origem, destino e link são todos satisfeitos.MODE (MayContain)
: Retorna registros WorkItemLinkInfo para todos os itens de trabalho que satisfazem os critérios de origem e 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 satisfazem a origem, somente se nenhum item de trabalho vinculado satisfizer os critérios de link e 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 satisfazem a origem, recursivamente para 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, consulte Referência de 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 é a mostrada.
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 consulta
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 Prioridade=1. A consulta retorna o ID e o Título do conjunto de retorno como colunas. Os resultados são ordenados por ID por 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
Você especifica o padrão de data-hora de acordo com um de 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 pelo UTC, que segue este padrão (com Z anexado à data-hora).
AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'
Cláusulas de exemplo
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'
String e texto sem formatação
Literais de cadeia de aspas (aspas simples ou duplas são suportadas) em uma comparação com uma cadeia de caracteres ou campo de texto sem formatação. Os literais de cadeia de caracteres suportam todos os caracteres Unicode.
WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'
Você pode usar o operador contains para procurar uma substring em qualquer lugar no valor do campo.
WHERE [System.Description] contains 'WIQL'
Área e iteração (TreePath)
Você pode usar o UNDER
operador para os campos Área e Caminho de Iteração. O UNDER
operador 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 verdadeira 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 IN
operador para avaliar se um valor de campo é igual a qualquer um de um conjunto de valores. Este operador é suportado para os tipos de campo String, Integer, Double e DateTime. Veja o exemplo a seguir, juntamente 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 EVER
operador é usado para avaliar se um valor de campo é igual ou já igualou um determinado valor em todas as revisões anteriores de itens de trabalho. Os tipos de campo String, Integer, Double e DateTime suportam este operador. Existem sintaxes alternativas para o EVER
operador. Por exemplo, os trechos 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>'
)