Поделиться через


Справочные материалы по синтаксису языка запросов рабочих элементов (WIQL)

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Синтаксис WIQL можно использовать для определения запроса в виде гиперссылки или при использовании языка запросов рабочих элементов (REST API).

Синтаксис WIQL поддерживает все функции, доступные через веб-портал Редактор запросов плюс несколько других. Можно указать поля для возврата и указания логической группировки предложений запросов. Кроме того, можно использовать ASOF предложение для фильтрации на основе назначений на основе предыдущей даты.

Внимание

Синтаксис WIQL используется для выполнения REST API запроса по Wiql. В настоящее время не существует способа вызова API для возврата подробных сведений о рабочем элементе из запроса WIQL напрямую. Независимо от того, какие поля включены в инструкцию SELECT, API возвращает только идентификаторы рабочих элементов. Чтобы получить полную информацию, необходимо выполнить два шага: (1) получить идентификатор рабочих элементов из WIQL, а (2) получить рабочие элементы с помощью получения списка рабочих элементов по идентификатору и для определенных полей.

Необходимые компоненты

Запрос возвращает только те рабочие элементы, для которых есть рабочие элементы представления или просмотр рабочих элементов в этом узле. Как правило, эти разрешения предоставляются членам групп читателей и участников для каждого командного проекта. Дополнительные сведения см. в разделе "Разрешения и группы".

Обзор языка запросов

Язык запросов рабочих элементов содержит пять частей, показанных в следующем фрагменте синтаксиса и описанном в следующей таблице. Синтаксис WIQL не учитывает регистр.

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'

Совет

Установив расширение Wiql Editor Marketplace, вы можете создать запросы с помощью Редактор запросов, а затем просмотреть синтаксис WIQL. Затем вы можете скопировать и изменить синтаксис WIQL и запустить запрос с помощью Центра игровой площадки Wiql, добавленного в Boards.

Статья

Пример

SELECT

Определяет поля, возвращаемые для каждого рабочего элемента, возвращаемого запросом. Можно указать понятное имя или имя ссылки. Используйте квадратные скобки ([]), если имя содержит пустые или периоды.

FROM

Указывает, требуется ли запрос найти рабочие элементы или связи между рабочими элементами.

  • Используется FROM WorkItems для возврата рабочих элементов.
  • Используется FROM workItemLinks для возврата связей между рабочими элементами. Дополнительные сведения см. в разделе "Запросы для ссылок между рабочими элементами " далее в этой статье.

WHERE

Указывает критерии фильтра для запроса. Дополнительные сведения см. в разделе "Условия фильтрации" (WHERE) далее в этой статье.

ORDER BY

Указывает порядок сортировки возвращаемых рабочих элементов. Для одного или нескольких полей можно указать по возрастанию (Asc) или По убыванию (Desc). Например:
ORDER BY [State] Asc, [Changed Date] Desc

ASOF

Задает исторический запрос, указывая дату применения фильтра. Например, этот запрос возвращает все пользовательские истории, определенные как активные 11 февраля 2020 года. Укажите дату в соответствии с рекомендациями, указанными в шаблоне даты и времени. ASOF '02-11-2020'

Примечание.

Длина запросов WIQL, сделанных в Azure Boards, не должна превышать 32 КБ символов. Система не позволяет создавать или запускать запросы, превышающие эту длину.

Шаблон даты и времени

Шаблон даты и времени, который вы вводите для полей DateTime , должен совпадать с выбранным профилем. Чтобы просмотреть или изменить выбранный вариант, см. раздел "Настройка параметров пользователя".

Снимок экрана: параметры раскрывающегося списка Снимок экрана: параметры раскрывающегося списка

Снимок экрана: панель

Поддерживаются литералы DateTime (одиночные или двойные кавычки), используемые в сравнениях. Они должны находиться в формате .NET DateTime локального клиентского компьютера, на котором выполняется запрос. Если часовой пояс не указан, литералы DateTime находятся в часовом поясе локального компьютера.

WHERE 
   AND [System.ChangedDate] >= '01-18-2019 GMT'
   AND ([Closed Date] < '01-09-2022 GMT'
   OR [Resolved Date] >= '01-18-2019 14:30:01')  

Если время опущено в литерале DateTime и параметр dayPrecision равно false, то время, как предполагается, равно нулю (полуночи). Значение по умолчанию для параметра dayPrecision равно false.

Кроме того, можно указать формат ISO 8601, который является допустимым независимо от языкового стандарта. ISO 8601 представляет дату и время, начиная с года, за которым следует месяц, день, час, минуты, секунды и миллисекунда. Например, 2021-12-10 15:00:00.000 представляет 10 декабря 2021 года в 3 вечера в местное время. Ниже приведен пример использования формата ISO 8601.

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')  

Пользовательские поля

Настраиваемое поле можно добавить в предложение запроса. С помощью WIQL необходимо указать имя ссылки для настраиваемого поля. Для проектов, использующих модель наследуемого процесса, настраиваемые поля обычно помечены пользовательскими. Они предопределяются их имени и удаляются пробелы. Например:

Понятное имя Имя ссылки
Утверждающий Custom.Approver
Тип запроса Custom.RequestType
Оценка области Custom.CustomEstimate

Для проектов, использующих локальную модель процесса XML, имя ссылки определяется определениями типов рабочих элементов XML.

Дополнительные сведения см. в полях и атрибутах рабочих элементов.

Указание предложений фильтра (WHERE)

Предложение WHERE задает критерии фильтра. Запрос возвращает только рабочие элементы, удовлетворяющие указанным критериям. Например, в следующем примере WHERE предложения возвращаются истории пользователей, активные и назначенные вам.

WHERE [Work Item Type] = 'User Story'
   AND [State] = 'Active'
   AND [Assigned to] = @Me

Вы можете управлять порядком, в котором вычисляются логические операторы, заключив их в скобки, чтобы сгруппировать критерии фильтра. Например, чтобы вернуть рабочие элементы, назначенные вам или закрытые, измените фильтр запроса на соответствие следующему примеру.

WHERE
    [System.TeamProject] = @project
    AND (
        [System.WorkItemType] = 'Product Backlog Item'
        AND (
            [System.AssignedTo] = @me
            OR [Microsoft.VSTS.Common.ClosedBy] = @me
        )
    )

Условия фильтра

Каждое условие фильтра состоит из трех частей, каждая из которых должна соответствовать следующим правилам:

  • Поле: можно указать имя ссылки или понятное имя. Ниже приведены допустимые синтаксисы WIQL:
    • Имя ссылки: SELECT [System.AssignedTo] ...
    • Понятное имя с пробелами: SELECT [Assigned To] ...
    • Имена без пробелов не требуют квадратных квадратных скобок: SELECT ID, Title ...
  • Оператор: допустимые значения указываются в разделе "Операторы" далее в этой статье.
  • Значение поля: можно указать одно из следующих трех значений в зависимости от указанного поля.
    • Литеральное значение должно соответствовать типу данных значения поля.
    • *переменная или макрос, указывающая определенное значение. Например, @Me указывает, кто выполняет запрос. Дополнительные сведения см. в разделе "Макросы и переменные " далее в этой статье.
    • Имя другого поля. Например, можно использовать [Assigned to] = [Changed by] для поиска рабочих элементов, назначенных пользователю, который изменил рабочий элемент в последнее время.

Описание и ссылочные имена всех системных полей см. в разделе "Индекс поля рабочего элемента".

Операторы

Запросы используют логические выражения для определения результирующих наборов. Эти логические выражения формируются одним или несколькими операциями, которые связаны.

Ниже перечислены некоторые простые операции запроса.

WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
    AND [Microsoft.VSTS.Common.Severity] <> '1 - Critical'

В таблице ниже перечислены все поддерживаемые операторы для различных типов полей. Дополнительные сведения о каждом типе поля см. в полях и атрибутах рабочих элементов.

Операторы =, <>, >, <, >=, and <= работают должным образом. Например, System.ID > 100 запросы для всех рабочих элементов с идентификатором, превышающим 100. System.ChangedDate > '01-01-19 12:00:00' Запросы для всех рабочих элементов изменились после полудня 1 января 2019 г.

Помимо этих базовых операторов, существуют некоторые поведения и операторы, относящиеся к определенным типам полей.

Примечание.

Операторы, доступные для вас, зависят от платформы и версии. Дополнительные сведения см . в кратком справочнике по запросу.

Тип поля

Поддерживаемые операторы

Логический

= , <> , =[Field] , <>[Field]

Дата/время

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever

Double, GUID, Целое число

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever

Идентификация

= , <> , > , < , >= , <= , =[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

Строка

= , <> , > , < , >= , <= , =[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

Логические группировки

Термины AND и OR в типичном логическом смысле можно использовать для оценки двух предложений. Термины AND EVER можно использовать и OR EVER при указании WAS EVER оператора. При необходимости можно группировать логические выражения и дополнительно объединять их. Примеры приведены ниже.

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>'
        )
    )

Вы можете отменить contains, under, операторы с in помощью not. Вы не можете отменить ever оператор. В приведенном ниже примере запросы для всех рабочих элементов, которые не назначены поддереву Fabrikam Fiber\Account Management.

WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'

Пример запроса, которому когда-либо назначено

Следующий Редактор запросов пример находит все рабочие элементы, которые когда-либо были назначены Джамалу Хартнетту.

Снимок экрана: Редактор запросов, запрос неструктурированного списка, когда-либо был назначен.

И вот соответствующий синтаксис WIQL.

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>'

Макросы или переменные

В следующей таблице перечислены макросы или переменные, которые можно использовать в запросе WIQL.

Макрос Использование
@Me Используйте эту переменную для автоматического поиска псевдонима текущего пользователя в поле, содержащем псевдонимы пользователей. Например, можно найти рабочие элементы, которые вы открыли, если для столбца "Поле" задано значение "Активировано", в столбце "Оператор" задано значение "Значение", а столбец ="Значение" — @Me.
@CurrentIteration Используйте эту переменную для автоматического фильтрации рабочих элементов, назначенных текущему спринту для выбранной команды на основе выбранного контекста команды.
@Project Используйте эту переменную для поиска рабочих элементов в текущем проекте. Например, можно найти все рабочие элементы в текущем проекте, если для столбца Field задано значение Team Project, столбец "Оператор" и столбец ="Значение" @Project.
@StartOfDay
@StartOfWeek
@StartOfMonth
@StartOfYear
Используйте эти макросы для фильтрации полей DateTime на основе начала текущего дня, недели, месяца, года или смещения к одному из этих значений. Например, все элементы, созданные за последние 3 месяца, можно найти, если для столбца Field задано значение "Дата создания", столбец "Оператор" имеет значение =, а столбец >"Значение" — @StartOfMonth – 3.
@Today Используйте эту переменную для поиска рабочих элементов, относящихся к текущей дате или более ранней дате. Вы также можете изменить переменную @Today , вычитая дни. Например, все элементы, активированные на прошлой неделе, можно найти, если в столбце "Поле" задано значение "Активированная дата", столбец "Оператор" имеет значение =, а столбец> "Значение" — @Today - 7.
[Любой] Используйте эту переменную для поиска рабочих элементов, относящихся к любому значению, определенному для определенного поля.

@meМакрос

Макрос @me заменяет имя встроенной учетной записи Windows пользователя, выполняющего запрос. В приведенном ниже примере показано, как использовать макрос и эквивалентную статическую инструкцию. Макрос предназначен для использования с полями удостоверений, такими как Assigned To.

WHERE  
   [System.AssignedTo] = @Me 

@todayМакрос

Макрос можно использовать с любым полем @today DateTime. Этот макрос заменяет полночь текущей даты на локальном компьютере, на котором выполняется запрос. Вы также можете указать @today+x или @today-y использовать целочисленные смещения в течение x дней после @today и y до @today, соответственно. Запрос, использующий @today макрос, может возвращать различные результирующие наборы в зависимости от часового пояса, в котором он выполняется.

В приведенных ниже примерах предполагается, что сегодня — 1.3.19.

WHERE  
   [System.CreatedDate] = @today

Эквивалентен:

WHERE  
   [System.CreatedDate] = '01-03-2019'

And

WHERE  
   [System.CreatedDate] > @today-2

Эквивалентен:

WHERE  
   [System.CreatedDate] > '01-01-2019'

@StartOfDay, , @StartOfWeek@StartOfMonth@StartOfYear макросы

Макросы можно использовать с любым полем @StartOf... DateTime. Этот макрос заменяет полночь текущего дня, начала недели, начала месяца или начала года на локальном компьютере, на котором выполняется запрос.

Примечание.

Требуется Azure DevOps Server 2019 с обновлением 1 или более поздней версии.

Эти макросы принимают строку модификатора с форматом (+/-)nn(y|M|w|d|h|m). @Today Как и в макросе, можно указать смещения плюса или минуса целых чисел. Если квалификатор единиц времени опущен, по умолчанию используется естественный период функции. Например, @StartOfWeek("+1") — это тоже самое, что и @StartOfWeek("+1w"). Если знак плюса или минуса (+/-) опущен, предполагается, что плюс.

Этот синтаксис позволяет вложить модификаторы и смещать запрос дважды. Например, предложение Closed Date >= @StartOfYear - 1фильтрует рабочие элементы, закрытые с прошлого года. Изменив его Closed Date >= @StartOfYear('+3M') - 1, он исключает рабочие элементы, закрытые в течение первых трех месяцев прошлого года. Синтаксис WIQL показан в следующем примере.

WHERE 
   [Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1

В следующих примерах предполагается, что сегодня — 4.5.19.

WHERE  
   [Microsoft.VSTS.Common.CreatedDate] >= @StartOfMonth-3

Эквивалентен:


WHERE 
   [Microsoft.VSTS.Common.CreatedDate] >= '01-01-2019'

And

WHERE 
   [Microsoft.VSTS.Scheduling.TargetDate] > @StartOfYear

Эквивалентен:

WHERE 
   [Microsoft.VSTS.Scheduling.TargetDate]  > '01-01-2019'

Пользовательские макросы

WIQL также поддерживает произвольные пользовательские макросы. Любой строковый префикс, префиксируемый элементом, @ обрабатывается как настраиваемый макрос и заменяется. Значение замены настраиваемого макроса извлекается из параметра контекста метода запроса в объектной модели. Следующий метод — это API, используемый для макросов:

public WorkItemCollection Query(string wiql, IDictionary context)

Параметр контекста содержит пары "ключ-значение" для макросов. Например, если контекст содержит пару "ключ-значение" (project, MyProject), то @project заменяется MyProject в WIQL. Эта замена заключается в том, как построитель запросов рабочих элементов обрабатывает макрос @project в Visual Studio.

Указание исторических запросов (ASOF)

Предложение в запросе можно использовать ASOF для фильтрации рабочих элементов, удовлетворяющих указанным условиям фильтра, так как они были определены по определенной дате и времени.

Примечание.

Вы не можете создавать ASOF запросы в построителе запросов в Visual Studio. Если вы создаете файл запроса (WIQ), содержащий ASOF предложение, а затем загружаете его в Visual Studio, ASOF предложение игнорируется.

Предположим, что рабочий элемент был классифицирован по пути Fabrikam Fiber\Release 1 итерации и назначен Джамал Хартнетт до 5/05/2022. Тем не менее, рабочий элемент недавно был назначен Раиза Покрывской и переехал в новый путь итерации выпуска 2. В следующем примере запроса возвращаются рабочие элементы, назначенные Jamal Hartnett, так как запрос основан на состоянии рабочих элементов по состоянию на последние дату и время.

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'

Примечание.

Если время не указано, WIQL использует полночь. Если часовой пояс не указан, WIQL использует часовой пояс локального клиентского компьютера.

Установка порядка сортировки (ORDER BY)

Предложение можно использовать ORDER BY для сортировки результатов запроса по одному или нескольким полям по возрастанию или убыванию.

Примечание.

Параметры сортировки сервера SQL Server на уровне данных определяют порядок сортировки по умолчанию. Однако можно использовать asc параметры или desc параметры для выбора явного порядка сортировки.

В следующем примере рабочие элементы сначала сортируются по приоритету в порядке возрастания (по умолчанию), а затем по дате создания в порядке убывания (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

Чтобы вернуть связи между рабочими элементами, укажите FROM WorkItemLinks. Условия фильтрации в WHERE предложении могут применяться к ссылкам или к любому рабочему элементу, который является источником или целевым объектом ссылки. Например, следующий запрос возвращает связи между элементами невыполненной работы продукта и их активными дочерними элементами.

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)

В следующей таблице перечислены различия между запросами рабочих элементов и запросами для связей между рабочими элементами.

Статья

Рабочие элементы

Связи между рабочими элементами

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

Неприменимо

Укажите одно из следующих элементов:

  • MODE (MustContain): (по умолчанию) Возвращает только записи WorkItemLinkInfo, в которых все условия исходного, целевого и ссылок удовлетворены.
  • MODE (MayContain): возвращает записи WorkItemLinkInfo для всех рабочих элементов, удовлетворяющих критериям источника и ссылки, даже если связанный рабочий элемент не соответствует целевым критериям.
  • MODE (DoesNotContain): возвращает записи WorkItemLinkInfo для всех рабочих элементов, удовлетворяющих источнику, только если связанный рабочий элемент не соответствует критериям ссылки и целевого объекта.
  • MODE (Recursive): используется для запросов дерева([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'). Тип ссылки должен быть топологией "Дерево" и направление пересылки. Возвращает записи WorkItemLinkInfo для всех рабочих элементов, удовлетворяющих источнику, рекурсивно для целевого объекта. ORDER BY и ASOF несовместимы с запросами дерева.

RETURNS

Можно указать одно из следующих имен типов системных ссылок.

Вы можете указать одно из имен типов системных ссылок, перечисленных ниже, или настраиваемый тип ссылки, определенный с помощью локального XML-процесса.

  • System.LinkTypes.Hierarchy-Forward
  • System.LinkTypes.Related
  • System.LinkTypes.Dependency-Predecessor
  • System.LinkTypes.Dependency-Successor
  • Microsoft.VSTS.Common.Affects-Forward (процесс CMMI)

Дополнительные сведения см. в справочнике по типу ссылок.

Пример запроса типа дерева

Следующий запрос возвращает все типы рабочих элементов, определенные в текущем проекте. Запрос, как показано в Редактор запросов, отображается, как показано на следующем рисунке.

Снимок экрана: Редактор запросов, запрос дерева, все рабочие элементы и состояния.

Ниже показан эквивалентный синтаксис WIQL.

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)


Следующий запрос возвращает все типы рабочих элементов, определенные в текущем проекте. Запрос, как показано в Редактор запросов, отображается, как показано на следующем рисунке.

Снимок экрана: Редактор запросов, запрос прямой ссылки, все рабочие элементы и состояния.

Эквивалентный синтаксис WIQL, как показано ниже.

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)

Дополнительные примеры запросов

Следующий типичный пример запроса WIQL использует имена ссылок для полей. Запрос выбирает рабочие элементы (без указанного типа рабочего элемента) с приоритетом =1. Запрос возвращает идентификатор и заголовок возвращаемого набора в виде столбцов. Результаты отсортированы по идентификатору в порядке возрастания.

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [Microsoft.VSTS.Common.Priority] <> ''
ORDER BY [System.Id]

Шаблон даты и времени

Шаблон даты и времени указывается в соответствии с одним из двух шаблонов:

AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'

Примеры предложений

В следующих примерах инструкций показаны определенные предложения, соответствующие требованиям.

Статья

Пример

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 (Фильтр времени)

SELECT [System.Title] 
FROM workitems 
WHERE [System.IterationPath] = 'MyProject\Beta' 
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>' 
ASOF '3/16/19 12:30'

Строка и обычный текст

Строковые литералы кавычки (однократные или двойные кавычки поддерживаются) в сравнении с строковым или обычным текстовым полем. Строковые литералы поддерживают все символы Юникода.

WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'

Можно использовать оператор contains для поиска подстроки в любом месте значения поля.

WHERE [System.Description] contains 'WIQL' 

Область и итерация (TreePath)

Оператор можно использовать UNDER для полей "Область" и "Путь итерации". Оператор UNDER оценивает, находится ли значение в поддереве определенного узла классификации. Например, приведенное ниже выражение будет иметь значение true, если путь к области был "MyProject\Server\Administration", "MyProject\Server\Administration\Feature 1", "MyProject\Server\Administration\Feature 2\SubFeature 5" или любой другой узел в поддереве.

WHERE [System.AreaPath] UNDER 'MyProject\Server\Administration'

Модификаторы и специальные операторы

В выражении запроса можно использовать некоторые модификаторы и специальные операторы.

IN Используйте оператор, чтобы оценить, равно ли значение поля любому из набора значений. Этот оператор поддерживается для типов полей String, Integer, Double и DateTime. См. следующий пример, а также его семантический эквивалент.

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>'
    )

Оператор EVER используется для оценки того, равно ли значение поля или когда-либо равно определенное значение во всех прошлых редакциях рабочих элементов. Типы полей String, Integer, Double и DateTime поддерживают этот оператор. Для оператора существуют альтернативные синтаксисы EVER . Например, фрагменты кода ниже запрашивают, были ли все рабочие элементы когда-либо назначены Джамалу, Поднятию или Кристи.

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>'
    )