WiQL-syntaxisreferentie (Work Item Query Language)
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
U kunt de WIQL-syntaxis gebruiken om een query te definiëren als hyperlink of wanneer u de QUERYtaal voor werkitems (REST API) gebruikt.
De WIQL-syntaxis ondersteunt alle functies die beschikbaar zijn via de webportal Power Query-editor plus nog een paar extra functies. U kunt de velden opgeven die moeten worden geretourneerd en logische groepering van queryclausules opgeven. Daarnaast kunt u een ASOF
component gebruiken om te filteren op basis van toewijzingen op basis van een vorige datum.
Belangrijk
De WIQL-syntaxis wordt gebruikt om de Query by Wiql REST API uit te voeren. Op dit moment is er geen manier om de API aan te roepen om de gedetailleerde werkitemgegevens rechtstreeks vanuit een WIQL-query te retourneren. Ongeacht welke velden u in de SELECT-instructie opneemt, retourneert de API alleen de werkitem-id's. Als u de volledige informatie wilt ophalen, moet u twee stappen uitvoeren: (1) haal de id van de werkitems op uit een WIQL en (2) haal de werkitems op via Een lijst met werkitems ophalen op id en voor specifieke velden.
Vereisten
Een query retourneert alleen de werkitems waarvoor u de werkitems weergeven hebt of Werkitems weergeven in deze knooppuntmachtiging . Deze machtigingen worden doorgaans verleend aan leden van de groepen Lezers en Inzenders voor elk teamproject. Zie Machtigingen en groepen voor meer informatie.
Overzicht van querytaal
De querytaal voor werkitems bevat vijf onderdelen die worden weergegeven in het volgende syntaxisfragment en beschreven in de volgende tabel. WIQL-syntaxis is niet hoofdlettergevoelig.
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'
Tip
Door de Marketplace-extensie wiql-editor te installeren, kunt u uw query's maken met behulp van de Power Query-editor en vervolgens de WIQL-syntaxis weergeven. Vervolgens kunt u de WIQL-syntaxis kopiëren en wijzigen en de query uitvoeren met behulp van de Wiql Playground-hub die is toegevoegd aan Borden.
Clausule
Voorbeeld
SELECT
Identificeert de velden die moeten worden geretourneerd voor elk werkitem dat door de query wordt geretourneerd. U kunt de beschrijvende naam of verwijzingsnaam opgeven. Gebruik vierkante haken ([]) als de naam lege waarden of punten bevat.
FROM
Hiermee wordt aangegeven of u wilt dat de query werkitems of koppelingen tussen werkitems zoekt.
- Gebruik
FROM WorkItems
dit om werkitems te retourneren. - Hiermee
FROM workItemLinks
kunt u koppelingen tussen werkitems retourneren. Zie Query's voor koppelingen tussen werkitems verderop in dit artikel voor meer informatie.
WHERE
Hiermee geeft u de filtercriteria voor de query. Zie Filtervoorwaarden (WHERE) verderop in dit artikel voor meer informatie.
ORDER BY
Hiermee geeft u de sorteervolgorde op van de geretourneerde werkitems. U kunt oplopend (Asc) of Aflopend (Desc) opgeven voor een of meer velden. Voorbeeld:
ORDER BY [State] Asc, [Changed Date] Desc
ASOF
Hiermee geeft u een historische query op door een datum aan te geven waarop het filter moet worden toegepast. Deze query retourneert bijvoorbeeld alle gebruikersverhalen die zijn gedefinieerd als Actief op 11 februari 2020. Geef de datum op volgens de richtlijnen in datum- en tijdpatroon.
ASOF '02-11-2020'
Notitie
De WIQL-lengte van query's op Azure Boards mag niet langer zijn dan 32.000 tekens. Het systeem staat u niet toe om query's te maken of uit te voeren die die lengte overschrijden.
Datum- en tijdpatroon
Het datum- en tijdpatroon dat u invoert voor datum/tijd-velden , moet overeenkomen met het patroon dat u selecteert via uw profiel. Zie Gebruikersvoorkeuren instellen om uw selectie weer te geven of te wijzigen.
Aanhalingstekens (enkele of dubbele aanhalingstekens worden ondersteund) Letterlijke datum/tijd die in vergelijkingen worden gebruikt. Ze moeten de .NET DateTime-indeling hebben van de lokale clientcomputer waarop de query wordt uitgevoerd. Tenzij een tijdzone is opgegeven, bevinden de letterlijke datum/tijd zich in de tijdzone van de lokale computer.
WHERE
AND [System.ChangedDate] >= '01-18-2019 GMT'
AND ([Closed Date] < '01-09-2022 GMT'
OR [Resolved Date] >= '01-18-2019 14:30:01')
Wanneer de tijd wordt weggelaten in een letterlijke datum/tijd en de parameter dayPrecision gelijk is aan false, wordt ervan uitgegaan dat de tijd nul (middernacht) is. De standaardinstelling voor de parameter dayPrecision is false.
U kunt ook een ISO 8601-indeling opgeven die geldig is, ongeacht de landinstelling. ISO 8601 vertegenwoordigt datum en tijd door te beginnen met het jaar, gevolgd door de maand, de dag, het uur, de minuten, seconden en milliseconden. Bijvoorbeeld: 2021-12-10 15:00:00.000, vertegenwoordigt de 10e van december 2021 om 15:00:00.00 uur in de lokale tijd. Een voorbeeld van het gebruik van iso 8601-indeling is als volgt.
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')
Aangepaste velden
U kunt een aangepast veld toevoegen aan een querycomponent. Met WIQL moet u de verwijzingsnaam voor het aangepaste veld opgeven. Voor projecten die een overgenomen procesmodel gebruiken, worden aangepaste velden meestal gelabeld met Aangepast. Deze worden voorafgegaan door hun naam en de spaties worden verwijderd. Voorbeeld:
Beschrijvende naam | Naam van verwijzing |
---|---|
Fiatteur | Custom.Approver |
Aanvraagtype | Custom.RequestType |
Schatting van bereik | Custom.CustomEstimate |
Voor projecten die gebruikmaken van het on-premises XML-procesmodel, is de verwijzingsnaam zoals gedefinieerd door de definities van het type XML-werkitem.
Zie Werkitemvelden en -kenmerken voor meer informatie.
Filtercomponenten opgeven (WHERE
)
Met WHERE
de component worden de filtercriteria opgegeven. De query retourneert alleen werkitems die voldoen aan de opgegeven criteria. Met de volgende voorbeeldcomponent WHERE
worden bijvoorbeeld gebruikersverhalen geretourneerd die actief zijn en die aan u zijn toegewezen.
WHERE [Work Item Type] = 'User Story'
AND [State] = 'Active'
AND [Assigned to] = @Me
U kunt de volgorde bepalen waarin logische operators worden geëvalueerd door ze tussen haakjes te plaatsen om de filtercriteria te groeperen. Als u bijvoorbeeld werkitems wilt retourneren die aan u zijn toegewezen of die u hebt gesloten, wijzigt u het queryfilter zodat deze overeenkomt met het volgende voorbeeld.
WHERE
[System.TeamProject] = @project
AND (
[System.WorkItemType] = 'Product Backlog Item'
AND (
[System.AssignedTo] = @me
OR [Microsoft.VSTS.Common.ClosedBy] = @me
)
)
Filtervoorwaarden
Elke filtervoorwaarde bestaat uit drie delen, die elk moeten voldoen aan de volgende regels:
- Veld: U kunt de verwijzingsnaam of beschrijvende naam opgeven. De volgende voorbeelden zijn geldige WIQL-syntaxis:
- Referentienaam:
SELECT [System.AssignedTo] ...
- Beschrijvende naam met spaties:
SELECT [Assigned To] ...
- Voor namen zonder spaties zijn geen vierkante haken vereist:
SELECT ID, Title ...
- Referentienaam:
- Operator: Geldige waarden worden opgegeven in de sectie Operators verderop in dit artikel.
- Veldwaarde: U kunt een van de volgende drie waarden opgeven, afhankelijk van het opgegeven veld.
- Een letterlijke waarde moet overeenkomen met het gegevenstype van de veldwaarde.
- Een *variabele of macro die een bepaalde waarde aangeeft. @Me geeft bijvoorbeeld de persoon aan die de query uitvoert. Zie macro's en variabelen verderop in dit artikel voor meer informatie.
- De naam van een ander veld. U kunt
[Assigned to] = [Changed by]
bijvoorbeeld werkitems zoeken die zijn toegewezen aan de persoon die het werkitem het laatst heeft gewijzigd.
Zie de index van het veld Werkitem voor een beschrijving en verwijzingsnamen van alle door het systeem gedefinieerde velden.
Operators
Query's gebruiken logische expressies om resultatensets te kwalificeren. Deze logische expressies worden gevormd door een of meer samengevoegde bewerkingen.
Hieronder vindt u enkele eenvoudige querybewerkingen.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [Microsoft.VSTS.Common.Severity] <> '1 - Critical'
De onderstaande tabel bevat een overzicht van alle ondersteunde operators voor verschillende veldtypen. Zie Werkitemvelden en -kenmerken voor meer informatie over elk veldtype.
De =, <>, >, <, >=, and <=
operators werken zoals verwacht. System.ID > 100
Query's voor alle werkitems met een id groter dan 100. System.ChangedDate > '01-01-19 12:00:00'
query's voor alle werkitems zijn gewijzigd na 1 januari 2019.
Naast deze basisoperators zijn er enkele gedragingen en operators die specifiek zijn voor bepaalde veldtypen.
Notitie
De operators die voor u beschikbaar zijn, zijn afhankelijk van uw platform en versie. Zie Snelzoekgids voor query's voor meer informatie.
Veldtype
Ondersteunde operators
Booleaanse waarde
= , <> , =[Field] , <>[Field]
Datum en tijd
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Dubbel, GUID, Geheel getal
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Identiteit
= , <> , > , < , >= , <= , =[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
Logische groeperingen
U kunt de termen AND
en OR
in de typische Booleaanse betekenis gebruiken om twee componenten te evalueren. U kunt de voorwaarden AND EVER
gebruiken en OR EVER
bij het opgeven van een WAS EVER
operator. U kunt logische expressies groeperen en deze zo nodig verder samenvoegen. Hieronder ziet u voorbeelden.
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>'
)
)
U kunt de contains, under,
en in
operators negateen met behulp van not
. U kunt de ever
operator niet ontkrachten. In het onderstaande voorbeeld worden query's uitgevoerd voor alle werkitems die niet zijn toegewezen onder de substructuur van Fabrikam Fiber\Account Management
.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'
Voorbeeldquery, is ooit toegewezen aan
In het volgende Power Query-editor voorbeeld worden alle werkitems gevonden die ooit aan Jamal Hartnett zijn toegewezen.
En hier is de bijbehorende WIQL-syntaxis.
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>'
Macro's of variabelen
De volgende tabel bevat de macro's of variabelen die u in een WIQL-query kunt gebruiken.
Macro | Gebruik |
---|---|
@Me | Gebruik deze variabele om automatisch te zoeken naar de alias van de huidige gebruiker in een veld dat gebruikersaliassen bevat. U kunt bijvoorbeeld werkitems vinden die u hebt geopend als u de kolom Veld instelt op Geactiveerd door, de kolom Operator op =en de kolom Waarde op @Me. |
@CurrentIteration | Gebruik deze variabele om automatisch te filteren op werkitems die zijn toegewezen aan de huidige sprint voor het geselecteerde team op basis van de geselecteerde teamcontext. |
@Project | Gebruik deze variabele om te zoeken naar werkitems in het huidige project. U kunt bijvoorbeeld alle werkitems in het huidige project vinden als u de kolom Veld instelt op Teamproject, de kolom Operator op =en de kolom Waarde op @Project. |
@StartOfDay @StartOfWeek @StartOfMonth @StartOfYear |
Gebruik deze macro's om datum/tijd-velden te filteren op basis van het begin van de huidige dag, week, maand, jaar of een verschuiving naar een van deze waarden. U kunt bijvoorbeeld alle items vinden die in de afgelopen 3 maanden zijn gemaakt als u de kolom Veld instelt op Gemaakt datum, de kolom Operator op >=en de kolom Waarde op @StartOfMonth - 3. |
@Today | Gebruik deze variabele om te zoeken naar werkitems die betrekking hebben op de huidige datum of een eerdere datum. U kunt de variabele @Today ook wijzigen door dagen af te trekken. U kunt bijvoorbeeld alle items vinden die in de afgelopen week zijn geactiveerd als u de kolom Veld instelt op Geactiveerde datum, de kolom Operator op> =en de kolom Waarde op @Today - 7. |
[Any] | Gebruik deze variabele om te zoeken naar werkitems die betrekking hebben op een waarde die is gedefinieerd voor een bepaald veld. |
@me macro
De @me
macro vervangt de naam van het geïntegreerde Windows-account van de gebruiker die de query uitvoert. In het onderstaande voorbeeld ziet u hoe u de macro en de equivalente statische instructie gebruikt. De macro is bedoeld voor gebruik met identiteitsvelden zoals Assigned To
.
WHERE
[System.AssignedTo] = @Me
@today macro
U kunt de @today
macro gebruiken met een datum/tijd-veld . Deze macro vervangt middernacht van de huidige datum op de lokale computer waarop de query wordt uitgevoerd. U kunt ook gehele getallen opgeven @today+x
of @today-y
gebruiken voor respectievelijk x dagen na @today
en y dagen vóór @today
. Een query die gebruikmaakt van de @today
macro kan verschillende resultatensets retourneren, afhankelijk van de tijdzone waarin deze wordt uitgevoerd.
In de onderstaande voorbeelden wordt ervan uitgegaan dat dit vandaag 1-3-19 is.
WHERE
[System.CreatedDate] = @today
Is het equivalent van:
WHERE
[System.CreatedDate] = '01-03-2019'
And
WHERE
[System.CreatedDate] > @today-2
Is het equivalent van:
WHERE
[System.CreatedDate] > '01-01-2019'
@StartOfDay, , @StartOfWeek, @StartOfYear @StartOfMonthmacro's
U kunt de @StartOf...
macro's gebruiken met een datum/tijd-veld . Deze macro vervangt middernacht van de huidige dag, het begin van de week, het begin van de maand of het begin van het jaar op de lokale computer waarop de query wordt uitgevoerd.
Notitie
Vereist azure DevOps Server 2019 Update 1 of nieuwere versie.
Deze macro's accepteren een wijzigingstekenreeks met een indeling van (+/-)nn(y|M|w|d|h|m)
. Net als bij de @Today
macro kunt u verschuivingen met plus- of mintekens voor gehele getallen opgeven. Als de tijdseenheidscheidingsteken wordt weggelaten, wordt deze standaard ingesteld op de natuurlijke periode van de functie. Is bijvoorbeeld @StartOfWeek("+1")
hetzelfde als @StartOfWeek("+1w")
. Als het plus-/minteken (+/-) wordt weggelaten, wordt er uitgegaan van plusteken.
Met deze syntaxis kunt u modifiers nesten en uw query twee keer verschoven. De component Closed Date >= @StartOfYear - 1
filtert bijvoorbeeld werkitems die sinds vorig jaar zijn gesloten. Als u het wijzigt in Closed Date >= @StartOfYear('+3M') - 1
, worden werkitems uitgesloten binnen de eerste drie maanden van het afgelopen jaar. De WIQL-syntaxis is zoals weergegeven in het volgende voorbeeld.
WHERE
[Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1
In de volgende voorbeelden wordt ervan uitgegaan dat het vandaag 4-5-19 is.
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= @StartOfMonth-3
Is het equivalent van:
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= '01-01-2019'
And
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > @StartOfYear
Is het equivalent van:
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > '01-01-2019'
Aangepaste macro's
WIQL ondersteunt ook willekeurige aangepaste macro's. Elke tekenreeks die door een tekenreeks @
wordt voorafgegaan, wordt behandeld als een aangepaste macro en wordt vervangen. De vervangingswaarde voor de aangepaste macro wordt opgehaald uit de contextparameter van de querymethode in het objectmodel. De volgende methode is de API die wordt gebruikt voor macro's:
public WorkItemCollection Query(string wiql, IDictionary context)
De contextparameter bevat sleutel-waardeparen voor macro's. Als de context bijvoorbeeld een sleutel-waardepaar (project, MyProject) bevat, wordt @project vervangen door MyProject
in de WIQL. Deze vervanging is de manier waarop de opbouwfunctie voor werkitemsquery's de @project macro in Visual Studio verwerkt.
Historische query's opgeven (ASOF
)
U kunt een ASOF
component in een query gebruiken om te filteren op werkitems die voldoen aan de opgegeven filtervoorwaarden zoals ze zijn gedefinieerd op een specifieke datum en tijd.
Notitie
U kunt geen query's maken ASOF
in de opbouwfunctie voor query's in Visual Studio. Als u een querybestand (.wiq) maakt dat een ASOF
component bevat en die vervolgens in Visual Studio laadt, wordt de ASOF
component genegeerd.
Stel dat een werkitem vóór 5/05/2022 is geclassificeerd onder een iteratiepad van Fabrikam Fiber\Release 1
en toegewezen aan Jamal Hartnett. Het werkitem is echter onlangs toegewezen aan 'Raisa Pokrtovaya' en verplaatst naar een nieuw iteratiepad van Release 2. De volgende voorbeeldquery retourneert werkitems die zijn toegewezen aan Jamal Hartnett, omdat de query is gebaseerd op de status van werkitems vanaf een eerdere datum en tijd.
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'
Notitie
Als er geen tijd is opgegeven, gebruikt WIQL middernacht. Als er geen tijdzone is opgegeven, gebruikt WIQL de tijdzone van de lokale clientcomputer.
De sorteervolgorde instellen (ORDER BY
)
U kunt de ORDER BY
component gebruiken om de resultaten van een query te sorteren op een of meer velden in oplopende of aflopende volgorde.
Notitie
De sorteervoorkeuren van de SQL-server op de gegevenslaag bepalen de standaardsorteervolgorde. U kunt echter de asc
of desc
parameters gebruiken om een expliciete sorteervolgorde te kiezen.
In het volgende voorbeeld worden werkitems eerst gesorteerd op Prioriteit in oplopende volgorde (standaard) en vervolgens op Gemaakt op datum in aflopende volgorde (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
Query uitvoeren op koppelingen tussen werkitems
Als u koppelingen tussen werkitems wilt retourneren, geeft u op FROM WorkItemLinks
. Filtervoorwaarden in de WHERE
component kunnen van toepassing zijn op de koppelingen of op elk werkitem dat de bron of het doel van een koppeling is. De volgende query retourneert bijvoorbeeld de koppelingen tussen Productachterstanditems en hun actieve onderliggende items.
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)
De volgende tabel bevat een overzicht van de verschillen tussen werkitemquery's en query's voor koppelingen tussen werkitems.
Clausule
Werkitems
Koppelingen tussen werkitems
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
niet van toepassing
Geef een van de volgende opties op:
MODE (MustContain)
: (Standaard) Retourneert alleen WorkItemLinkInfo-records waarbij aan de bron-, doel- en koppelingscriteria is voldaan.MODE (MayContain)
: retourneert WorkItemLinkInfo-records voor alle werkitems die voldoen aan de bron- en koppelingscriteria, zelfs als geen gekoppeld werkitem voldoet aan de doelcriteria.MODE (DoesNotContain)
: retourneert WorkItemLinkInfo-records voor alle werkitems die voldoen aan de bron, alleen als er geen gekoppeld werkitem voldoet aan de koppeling en doelcriteria.MODE (Recursive)
: Gebruiken voor treequery's([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
). Het koppelingstype moet structuurtopologie en voorwaartse richting zijn. Retourneert WorkItemLinkInfo-records voor alle werkitems die voldoen aan de bron, recursief voor het doel.ORDER BY
enASOF
zijn niet compatibel met structuurquery's.
RETURNS
U kunt een van de volgende systeemkoppelingstypenamen opgeven.
U kunt een van de namen van het systeemkoppelingstype opgeven, hieronder vermeld of een aangepast koppelingstype dat u hebt gedefinieerd met het on-premises XML-proces.
System.LinkTypes.Hierarchy-Forward
System.LinkTypes.Related
System.LinkTypes.Dependency-Predecessor
System.LinkTypes.Dependency-Successor
Microsoft.VSTS.Common.Affects-Forward
(CMMI-proces)
Zie Koppelingstypereferentie voor meer informatie.
Voorbeeld van query van structuurtype
De volgende query retourneert alle typen werkitems die in het huidige project zijn gedefinieerd. De query zoals weergegeven in de Power Query-editor wordt weergegeven, zoals wordt weergegeven in de volgende afbeelding.
De equivalente WIQL-syntaxis wordt hieronder weergegeven.
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)
Voorbeeld van directkoppelingsquery
De volgende query retourneert alle typen werkitems die in het huidige project zijn gedefinieerd. De query zoals weergegeven in de Power Query-editor wordt weergegeven, zoals wordt weergegeven in de volgende afbeelding.
De equivalente WIQL-syntaxis is zoals weergegeven.
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)
Meer queryvoorbeelden
In het volgende typische WIQL-queryvoorbeeld worden referentienamen voor de velden gebruikt. De query selecteert werkitems (geen werkitemtype opgegeven) met een Priority=1. De query retourneert de id en titel van de geretourneerde set als kolommen. De resultaten worden gesorteerd op id in oplopende volgorde.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitems
WHERE
[System.TeamProject] = @project
AND [Microsoft.VSTS.Common.Priority] <> ''
ORDER BY [System.Id]
Datum/tijd-patroon
U geeft het datum/tijd-patroon op volgens een van de twee patronen:
- De notatie Datumpatroon en -tijdpatroon is afkomstig van uw gebruikersvoorkeuren, Tijd en Landinstellingen
- Het patroon dat door UTC is opgegeven, volgt dit patroon (waarbij Z is toegevoegd aan de datum/tijd).
AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'
Voorbeeldclausules
In de volgende voorbeeldinstructies ziet u specifieke in aanmerking komende componenten.
Clausule
Voorbeeld
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
(Tijdfilter)
SELECT [System.Title]
FROM workitems
WHERE [System.IterationPath] = 'MyProject\Beta'
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ASOF '3/16/19 12:30'
Tekenreeks en tekst zonder opmaak
Letterlijke aanhalingstekens voor aanhalingstekens (enkele of dubbele aanhalingstekens worden ondersteund) in een vergelijking met een tekenreeks- of tekstveld zonder opmaak. Letterlijke tekenreeksen ondersteunen alle Unicode-tekens.
WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'
U kunt de operator contains gebruiken om overal in de veldwaarde naar een subtekenreeks te zoeken.
WHERE [System.Description] contains 'WIQL'
Gebied en iteratie (TreePath)
U kunt de UNDER
operator gebruiken voor de velden Gebied en Iteratiepad. De UNDER
operator evalueert of een waarde zich binnen de substructuur van een specifiek classificatieknooppunt bevindt. De onderstaande expressie zou bijvoorbeeld waar zijn als het gebiedspad 'MyProject\Server\Administration', 'MyProject\Server\Administration\Feature 1', 'MyProject\Server\Administration\Feature 2\SubFeature 5' of een ander knooppunt in de substructuur is.
WHERE [System.AreaPath] UNDER 'MyProject\Server\Administration'
Modifiers en speciale operators
U kunt enkele modifiers en speciale operators gebruiken in een query-expressie.
Gebruik de IN
operator om te evalueren of een veldwaarde gelijk is aan een van een set waarden. Deze operator wordt ondersteund voor de veldtypen Tekenreeks, Geheel getal, Dubbel en Datum/tijd. Zie het volgende voorbeeld, samen met het semantische equivalent.
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>'
)
De EVER
operator wordt gebruikt om te evalueren of een veldwaarde gelijk is aan of ooit een bepaalde waarde heeft gelijk aan alle eerdere revisies van werkitems. De veldtypen Tekenreeks, Geheel getal, Dubbel en Datum/tijd ondersteunen deze operator. Er zijn alternatieve syntaxis voor de EVER
operator. Met de onderstaande fragmenten wordt bijvoorbeeld aangegeven of alle werkitems ooit zijn toegewezen aan Jamal, Raise of 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>'
)