İş Öğesi Sorgulama Dili (WIQL) söz dizimi başvurusu
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
WiQL söz dizimini kullanarak bir sorguyu köprü olarak tanımlayabilir veya İş Öğesi Sorgu Dili'ni (REST API) kullanabilirsiniz.
WIQL söz dizimi, web portalı Sorgu Düzenleyicisi ve birkaç tane daha aracılığıyla kullanılabilen tüm işlevleri destekler. Döndürülecek alanları belirtebilir ve sorgu yan tümcelerinin mantıksal gruplandırmalarını belirtebilirsiniz. Ayrıca, önceki tarihe ASOF
göre atamalara göre filtrelemek için bir yan tümce kullanabilirsiniz.
Önemli
WIQL söz dizimi, Wiql'e Göre Sorgu REST API'sini yürütmek için kullanılır. Şu anda, bir WIQL sorgusundan ayrıntılı iş öğesi bilgilerini doğrudan döndürmek için API'yi çağırmanın bir yolu yoktur. SELECT deyimine hangi alanları eklerseniz ekleyin, API yalnızca iş öğesi kimliklerini döndürür. Bilgilerin tamamını almak için iki adım gerçekleştirmeniz gerekir: (1) WIQL'den iş öğelerinin kimliğini alma ve (2) İş öğelerinin kimliğe göre listesini alma ve belirli alanlar aracılığıyla alma.
Önkoşullar
Sorgu yalnızca İş öğelerini görüntüle veya Bu düğümdeki iş öğelerini görüntüle iznine sahip olduğunuz iş öğelerini döndürür. Bu izinler genellikle her takım projesi için Okuyucular ve Katkıda Bulunanlar gruplarının üyelerine verilir. Daha fazla bilgi için bkz . İzinler ve gruplar.
Sorgu diline genel bakış
İş öğesi sorgu dili, aşağıdaki söz dizimi kod parçacığında gösterilen ve aşağıdaki tabloda açıklanan beş bölüme sahiptir. WIQL söz dizimi büyük/küçük harfe duyarlı değildir.
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'
İpucu
Wiql Editor Market uzantısını yükleyerek Sorgu Düzenleyicisi kullanarak sorgularınızı oluşturabilir ve wiql söz dizimini görüntüleyebilirsiniz. Ardından WIQL söz dizimini kopyalayıp değiştirebilir ve Boards'a eklenen Wiql Playground hub'ını kullanarak sorguyu çalıştırabilirsiniz.
Cümlecik
Örnek
SELECT
Sorgu tarafından döndürülen her iş öğesi için döndürülecek alanları tanımlar. Kolay adı veya başvuru adını belirtebilirsiniz. Ad boşluk veya nokta içeriyorsa köşeli ayraç ([]) kullanın.
FROM
Sorgunun iş öğelerini mi yoksa iş öğeleri arasındaki bağlantıları mı bulmasını istediğinizi gösterir.
- İş öğelerini döndürmek için kullanın
FROM WorkItems
. - İş öğeleri arasındaki bağlantıları döndürmek için kullanın
FROM workItemLinks
. Daha fazla bilgi için bu makalenin devamında iş öğeleri arasındaki bağlantılar için sorgular bölümüne bakın.
WHERE
Sorgu için filtre ölçütlerini belirtir. Daha fazla bilgi için bu makalenin devamında yer alan Filtreleme koşullarına (WHERE) bakın.
ORDER BY
Döndürülen iş öğelerinin sıralama düzenini belirtir. Bir veya daha fazla alan için Artan (Asc) veya Azalan (Desc) belirtebilirsiniz. Örneğin:
ORDER BY [State] Asc, [Changed Date] Desc
ASOF
Not
Azure Boards'ta yapılan sorguların WIQL uzunluğu 32.000 karakteri aşmamalıdır. Sistem, bu uzunluğu aşan sorgular oluşturmanıza veya çalıştırmanıza izin vermez.
Tarih ve saat düzeni
DateTime alanları için girdiğiniz tarih ve saat deseni, profiliniz aracılığıyla seçtiğiniz tarih ve saat düzeniyle eşleşmelidir. Seçiminizi görüntülemek veya değiştirmek için bkz . Kullanıcı tercihlerini ayarlama.
Tırnak işareti (tek veya çift tırnaklar desteklenir) Karşılaştırmalarda kullanılan DateTime değişmez değerleri. Sorguyu çalıştıran yerel istemci bilgisayarın .NET DateTime biçiminde olmalıdır. Bir saat dilimi belirtilmediği sürece, DateTime değişmez değerleri yerel bilgisayarın saat dilimindedir.
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 değişmez değerinde saat atlandığında ve dayPrecision parametresi false değerine eşitse, saat sıfır (gece yarısı) olarak kabul edilir. dayPrecision parametresi için varsayılan ayar false'tur.
Alternatif olarak, yerel ayar ne olursa olsun geçerli olan ISO 8601 biçimini belirtebilirsiniz. ISO 8601, yıl ile başlayıp ay, gün, saat, dakikalar, saniyeler ve milisaniyeler takip ederek tarih ve saati temsil eder. Örneğin, 2021-12-10 15:00:00.000, 10 Aralık 2021'i yerel saatle 15:00'te temsil eder. ISO 8601 biçiminin kullanımına bir örnek aşağıda verilmiştir.
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')
Özel alanlar
Sorgu yan tümcesine özel alan ekleyebilirsiniz. WIQL ile özel alan için başvuru adını belirtmeniz gerekir. Devralınan işlem modeli kullanan projeler için özel alanlar genellikle Özel olarak etiketlenir. adlarına eklenir ve boşluklar kaldırılır. Örneğin:
Kolay ad | Başvuru adı |
---|---|
Onaylayan | Custom.Approver |
İstek Türü | Custom.RequestType |
Kapsam Tahmini | Custom.CustomEstimate |
Şirket içi XML işlem modelini kullanan projeler için başvuru adı, XML iş öğesi türü tanımları tarafından tanımlandığı şekildedir.
Daha fazla bilgi için bkz . İş öğesi alanları ve öznitelikleri.
Filtre yan tümcelerini belirtme (WHERE
)
WHERE
yan tümcesi filtre ölçütlerini belirtir. Sorgu yalnızca belirtilen ölçütleri karşılayan iş öğelerini döndürür. Örneğin, aşağıdaki örnek WHERE
yan tümcesi etkin olan ve size atanan kullanıcı öykülerini döndürür.
WHERE [Work Item Type] = 'User Story'
AND [State] = 'Active'
AND [Assigned to] = @Me
Filtre ölçütlerini gruplandırmak için, mantıksal işleçleri parantez içine alarak hangi sırada değerlendirileceklerini denetleyebilirsiniz. Örneğin, size atanmış veya kapattığınız iş öğelerini döndürmek için sorgu filtresini aşağıdaki örnekle eşleşecek şekilde değiştirin.
WHERE
[System.TeamProject] = @project
AND (
[System.WorkItemType] = 'Product Backlog Item'
AND (
[System.AssignedTo] = @me
OR [Microsoft.VSTS.Common.ClosedBy] = @me
)
)
Filtre koşulları
Her filtre koşulu, her biri aşağıdaki kurallara uyması gereken üç bölümden oluşur:
- Alan: Başvuru adını veya kolay adı belirtebilirsiniz. Aşağıdaki örnekler geçerli WIQL söz dizimidir:
- Başvuru adı:
SELECT [System.AssignedTo] ...
- Boşluklu kolay ad:
SELECT [Assigned To] ...
- Boşluk içermeyen adlar köşeli ayraç gerektirmez:
SELECT ID, Title ...
- Başvuru adı:
- İşleç: Bu makalenin devamında İşleçler bölümünde geçerli değerler belirtilir.
- Alan değeri: Belirtilen alana bağlı olarak aşağıdaki üç değerden birini belirtebilirsiniz.
- Değişmez değer, alan değerinin veri türüyle eşleşmelidir.
- Belirli bir değeri gösteren *değişken veya makro. Örneğin, @Me sorguyu çalıştıran kişiyi gösterir. Daha fazla bilgi için bu makalenin devamında yer alan Makrolar ve değişkenler bölümüne bakın.
- Başka bir alanın adı. Örneğin, iş öğesini en son değiştiren kişiye atanmış iş öğelerini bulmak için kullanabilirsiniz
[Assigned to] = [Changed by]
.
Sistem tanımlı tüm alanların açıklaması ve başvuru adları için bkz . İş öğesi alan dizini.
İşleçler
Sorgular, sonuç kümelerini nitelerken mantıksal ifadeler kullanır. Bu mantıksal ifadeler bir veya daha fazla birleştirilmiş işlem tarafından oluşturulur.
Bazı basit sorgu işlemleri aşağıda listelenmiştir.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [Microsoft.VSTS.Common.Severity] <> '1 - Critical'
Aşağıdaki tabloda farklı alan türleri için desteklenen tüm işleçler özetlenmiştir. Her alan türü hakkında daha fazla bilgi için bkz . İş öğesi alanları ve öznitelikleri.
İşleçler =, <>, >, <, >=, and <=
beklendiği gibi çalışır. Örneğin, System.ID > 100
kimliği 100'den büyük olan tüm iş öğeleri için sorgular. System.ChangedDate > '01-01-19 12:00:00'
tüm iş öğeleri için sorgular 1 Ocak 2019'un öğlenden sonra değiştirildi.
Bu temel işleçlerin ötesinde, belirli alan türlerine özgü bazı davranışlar ve işleçler vardır.
Not
Kullanabileceğiniz operatörler, platformunuza ve sürümünüze bağlıdır. Daha fazla bilgi için bkz . Sorgu hızlı başvurusu.
Alan türü
Desteklenen işleçler
Boolean
= , <> , =[Field] , <>[Field]
DateTime
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Çift, GUID, Tamsayı
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Kimlik
= , <> , > , < , >= , <= , =[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
Mantıksal gruplandırmalar
İki yan tümceyi AND
değerlendirmek için ve OR
genel anlamda Boole terimlerini kullanabilirsiniz. Bir işleç belirtirken ve OR EVER
terimlerini AND EVER
WAS EVER
kullanabilirsiniz. Mantıksal ifadeleri gruplandırabilir ve gerektiğinde daha fazla birleştirebilirsiniz. Örnekler aşağıda gösterilmiştir.
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>'
)
)
kullanarak not
ve in
işleçlerini olumsuzlayabilirsinizcontains, under,
. İşleci olumsuzlayamazsınız ever
. Aşağıdaki örnek, alt ağacı Fabrikam Fiber\Account Management
altında atanmamış tüm iş öğeleri için sorgular.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'
Örnek sorgu, Hiç Atandı
Aşağıdaki Sorgu Düzenleyicisi örnek, Jamal Hartnett'e atanmış olan tüm iş öğelerini bulur.
Buna karşılık gelen WIQL söz dizimi de aşağıdadır.
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>'
Makrolar veya değişkenler
Aşağıdaki tabloda, BIR WIQL sorgusunda kullanabileceğiniz makrolar veya değişkenler listelenir.
Makro | Kullanım |
---|---|
@Me | Kullanıcı diğer adlarını içeren bir alanda geçerli kullanıcının diğer adını otomatik olarak aramak için bu değişkeni kullanın. Örneğin, Alan sütununu Etkinleştirilmiş Olarak, İşleç sütununu olarak ve Değer sütununu =@Me olarak ayarlarsanız açtığınız iş öğelerini bulabilirsiniz. |
@CurrentIteration | Seçili ekip bağlamını temel alarak seçili ekip için geçerli sprint'e atanan iş öğelerini otomatik olarak filtrelemek için bu değişkeni kullanın. |
@Project | Geçerli projedeki iş öğelerini aramak için bu değişkeni kullanın. Örneğin, Alan sütununu Takım Projesi, İşleç sütununu olarak ve Değer sütununu =@Project olarak ayarlarsanız, geçerli projedeki tüm iş öğelerini bulabilirsiniz. |
@StartOfDay @StartOfWeek @StartOfMonth @StartOfYear |
Geçerli gün, hafta, ay, yıl veya bu değerlerden birine uzaklık temelinde DateTime alanlarını filtrelemek için bu makroları kullanın. Örneğin, Alan sütununu Oluşturma Tarihi, İşleç sütununu =, Değer sütununu >ise @StartOfMonth - 3 olarak ayarlarsanız, son 3 ay içinde oluşturulan tüm öğeleri bulabilirsiniz. |
@Today | Geçerli tarihle veya önceki bir tarihle ilişkili iş öğelerini aramak için bu değişkeni kullanın. Ayrıca, günleri çıkararak @Today değişkenini değiştirebilirsiniz. Örneğin, Alan sütununu Etkinleştirilmiş Tarih, İşleç sütununu =, Değer sütununu >da @Today - 7 olarak ayarlarsanız, geçen hafta etkinleştirilmiş tüm öğeleri bulabilirsiniz. |
[Tümü] | Belirli bir alan için tanımlanan herhangi bir değerle ilişkili iş öğelerini aramak için bu değişkeni kullanın. |
@me Makro
Makro, @me
sorguyu çalıştıran kullanıcının Windows Tümleşik hesap adının yerini alır. Aşağıdaki örnekte makronun ve eşdeğer statik deyiminin nasıl kullanılacağı gösterilmektedir. Makro, gibi Assigned To
kimlik alanlarıyla kullanılmak üzere tasarlanmıştır.
WHERE
[System.AssignedTo] = @Me
@today Makro
Makroyu @today
herhangi bir DateTime alanıyla kullanabilirsiniz. Bu makro, sorguyu çalıştıran yerel bilgisayarda geçerli tarihin gece yarısının yerini alır. Ayrıca, sırasıyla x gün sonrası @today
ve y gün öncesi @today
için tamsayı uzaklıkları belirtebilir @today+x
veya @today-y
kullanabilirsiniz. Makroyu @today
kullanan bir sorgu, çalıştırıldığı saat dilimine bağlı olarak farklı sonuç kümeleri döndürebilir.
Aşağıdaki örneklerde bugünün 3/1/19 olduğu varsayılmaktadır.
WHERE
[System.CreatedDate] = @today
Eşdeğeri:
WHERE
[System.CreatedDate] = '01-03-2019'
And
WHERE
[System.CreatedDate] > @today-2
Eşdeğeri:
WHERE
[System.CreatedDate] > '01-01-2019'
@StartOfDay, @StartOfWeek, @StartOfMonth, @StartOfYear makrolar
Makroları herhangi bir DateTime alanıyla kullanabilirsiniz@StartOf...
. Bu makro, sorguyu çalıştıran yerel bilgisayarda geçerli günün, haftanın başlangıcının, ayın başlangıcının veya yılın başlangıcının yerini alır.
Not
Azure DevOps Server 2019 Güncelleştirme 1 veya sonraki bir sürümü gerektirir.
Bu makrolar biçiminde (+/-)nn(y|M|w|d|h|m)
bir değiştirici dize kabul eder. Makroya @Today
benzer şekilde, artı veya eksi tamsayı uzaklıklarını belirtebilirsiniz. Zaman birimi niteleyicisi atlanırsa, varsayılan olarak işlevin doğal süresine ayarlanır. Örneğin @StartOfWeek("+1")
ile @StartOfWeek("+1w")
aynıdır. Artı/eksi (+/-) işareti atlanırsa, artı varsayılır.
Bu söz dizimi, değiştiricileri iç içe yerleştirmenize ve sorgunuzu iki kez kaydırmanıza olanak tanır. Örneğin, yan tümcesi Closed Date >= @StartOfYear - 1
, geçen yıldan bu yana kapatılmış olan iş öğelerini filtreler. olarak değiştirilerek Closed Date >= @StartOfYear('+3M') - 1
, geçen yılın ilk üç ayı içinde kapatılan iş öğelerini dışlar. WIQL söz dizimi aşağıdaki örnekte gösterildiği gibidir.
WHERE
[Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1
Aşağıdaki örneklerde bugünün 5/4/19 olduğu varsayılır.
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= @StartOfMonth-3
Eşdeğeri:
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= '01-01-2019'
And
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > @StartOfYear
Eşdeğeri:
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > '01-01-2019'
Özel makrolar
WIQL ayrıca rastgele özel makroları da destekler. tarafından önekli herhangi bir @
dize özel makro olarak kabul edilir ve yerine geçer. Özel makronun değiştirme değeri, nesne modelindeki sorgu yönteminin bağlam parametresinden alınır. Aşağıdaki yöntem, makrolar için kullanılan API'dir:
public WorkItemCollection Query(string wiql, IDictionary context)
Bağlam parametresi makrolar için anahtar-değer çiftleri içerir. Örneğin, bağlam bir anahtar-değer çifti (project, MyProject) içeriyorsa, WIQL'de @project ile MyProject
değiştirilir. Bu değişiklik, iş öğesi sorgu oluşturucusunun Visual Studio'daki @project makroyu işleme şeklidir.
Geçmiş sorguları belirtme (ASOF
)
Belirli bir ASOF
tarih ve saatte tanımlandığı gibi belirtilen filtre koşullarını karşılayan iş öğelerini filtrelemek için sorgudaki bir yan tümceyi kullanabilirsiniz.
Not
Visual Studio'da sorgu oluşturucusunda sorgu oluşturamazsınız ASOF
. Yan tümcesi içeren ASOF
bir sorgu dosyası (.wiq) oluşturur ve bunu Visual Studio'ya yüklerseniz, ASOF
yan tümcesi yoksayılır.
Bir iş öğesinin 05.05.2022 tarihinden önce yineleme yolu Fabrikam Fiber\Release 1
altında sınıflandırıldığını ve 'Jamal Hartnett'e atandığını varsayalım. Ancak, iş öğesi kısa süre önce 'Raisa Pokrovskaya'ya atandı ve Sürüm 2'nin yeni bir yineleme yoluna taşındı. Aşağıdaki örnek sorgu Jamal Hartnett'e atanan iş öğelerini döndürür çünkü sorgu geçmiş bir tarih ve saat itibarıyla iş öğelerinin durumunu temel alır.
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'
Not
Zaman belirtilmezse, WIQL gece yarısını kullanır. Saat dilimi belirtilmezse, WIQL yerel istemci bilgisayarın saat dilimini kullanır.
Sıralama düzenini ayarlama (ORDER BY
)
Bir sorgunun ORDER BY
sonuçlarını artan veya azalan düzende bir veya daha fazla alana göre sıralamak için yan tümcesini kullanabilirsiniz.
Not
Veri katmanındaki SQL sunucusunun sıralama tercihleri, varsayılan sıralama düzenini belirler. Ancak, açık bir sıralama düzeni seçmek için veya desc
parametrelerini kullanabilirsinizasc
.
Aşağıdaki örnek, iş öğelerini önce Önceliğe göre artan düzende (varsayılan) ve ardından Oluşturma Tarihi'ne göre azalan düzende (DESC
) sıralar.
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
İş öğeleri arasındaki bağlantıları sorgulama
İş öğeleri arasındaki bağlantıları döndürmek için öğesini belirtirsiniz FROM WorkItemLinks
. Yan tümcesindeki WHERE
filtre koşulları, bağlantılara veya bağlantının kaynağı veya hedefi olan herhangi bir iş öğesine uygulanabilir. Örneğin, aşağıdaki sorgu Ürün Kapsam Öğeleri ile bunların etkin alt öğeleri arasındaki bağlantıları döndürür.
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şağıdaki tabloda, iş öğeleri arasındaki bağlantılar için iş öğesi sorguları ile sorgular arasındaki farklar özetlemektedir.
Cümlecik
İş öğeleri
İş öğeleri arasındaki bağlantılar
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
uygulanamaz
Aşağıdakilerden birini belirtin:
MODE (MustContain)
: (Varsayılan) Yalnızca kaynak, hedef ve bağlantı ölçütlerinin tamamlandığı WorkItemLinkInfo kayıtlarını döndürür.MODE (MayContain)
: Hiçbir bağlı iş öğesi hedef ölçüte uymasa bile kaynak ve bağlantı ölçütlerini karşılayan tüm iş öğeleri için WorkItemLinkInfo kayıtlarını döndürür.MODE (DoesNotContain)
: Kaynağı karşılayan tüm iş öğeleri için WorkItemLinkInfo kayıtlarını döndürür, ancak bağlantılı iş öğesi bağlantıyı ve hedef ölçütleri karşılamazsa.MODE (Recursive)
: Ağaç sorguları için kullanın.[System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
Bağlantı türü Ağaç topolojisi ve ileri yönde olmalıdır. Kaynağı karşılayan tüm iş öğeleri için WorkItemLinkInfo kayıtlarını, hedef için özyinelemeli olarak döndürür.ORDER BY
veASOF
ağaç sorguları ile uyumlu değildir.
RETURNS
Aşağıdaki sistem bağlantı türü adlarından birini belirtebilirsiniz.
Aşağıda listelenen sistem bağlantı türü adlarından birini veya Şirket içi XML işlemiyle tanımladığınız özel bağlantı türünü belirtebilirsiniz.
System.LinkTypes.Hierarchy-Forward
System.LinkTypes.Related
System.LinkTypes.Dependency-Predecessor
System.LinkTypes.Dependency-Successor
Microsoft.VSTS.Common.Affects-Forward
(CMMI işlemi)
Daha fazla bilgi için bkz . Bağlantı türü başvurusu.
Ağaç türü sorgu örneği
Aşağıdaki sorgu, geçerli projede tanımladığınız tüm iş öğesi türlerini döndürür. Sorgu Düzenleyicisi gösterildiği gibi sorgu aşağıdaki görüntüde gösterildiği gibi görünür.
Eşdeğer WIQL söz dizimi aşağıda gösterilmiştir.
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)
Doğrudan bağlantı sorgu örneği
Aşağıdaki sorgu, geçerli projede tanımladığınız tüm iş öğesi türlerini döndürür. Sorgu Düzenleyicisi gösterildiği gibi sorgu aşağıdaki görüntüde gösterildiği gibi görünür.
Eşdeğer WIQL söz dizimi gösterildiği gibidir.
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)
Diğer sorgu örnekleri
Aşağıdaki tipik WIQL sorgu örneği, alanlar için başvuru adlarını kullanır. Sorgu, Priority=1 ile iş öğelerini (iş öğesi türü belirtilmedi) seçer. Sorgu, dönüş kümesinin kimliğini ve Başlığını sütun olarak döndürür. Sonuçlar, kimliğine göre artan düzende sıralanır.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitems
WHERE
[System.TeamProject] = @project
AND [Microsoft.VSTS.Common.Priority] <> ''
ORDER BY [System.Id]
Tarih-saat düzeni
Tarih-saat desenini iki desenden birine göre belirtirsiniz:
- Tarih Deseni ve Saat Deseni biçimi, kullanıcı tercihleriniz olan Saat ve Yerel Ayar'dan gelir
- UTC tarafından belirtilen ve bu deseni izleyen desen (tarih-saate Z eklenerek).
AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'
Örnek yan tümceler
Aşağıdaki örnek deyimler belirli niteleme yan tümcelerini gösterir.
Cümlecik
Örnek
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
(Zaman filtresi)
SELECT [System.Title]
FROM workitems
WHERE [System.IterationPath] = 'MyProject\Beta'
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ASOF '3/16/19 12:30'
Dize ve Düz Metin
Bir dize veya düz metin alanıyla karşılaştırmada tırnak dizesi değişmez değerleri (tek veya çift tırnak desteklenir). Dize değişmez değerleri tüm Unicode karakterlerini destekler.
WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'
Alan değerinin herhangi bir yerinde alt dize aramak için contains işlecini kullanabilirsiniz.
WHERE [System.Description] contains 'WIQL'
Alan ve Yineleme (TreePath)
Alan ve Yineleme Yolu alanları için işlecini kullanabilirsiniz UNDER
. işleci UNDER
, bir değerin belirli bir sınıflandırma düğümünün alt ağacı içinde olup olmadığını değerlendirir. Örneğin, Alan Yolu 'MyProject\Server\Administration', 'MyProject\Server\Administration\Feature 1', 'MyProject\Server\Administration\Feature 2\SubFeature 5' veya alt ağaç içindeki başka bir düğümse aşağıdaki ifade true olarak değerlendirilir.
WHERE [System.AreaPath] UNDER 'MyProject\Server\Administration'
Değiştiriciler ve özel işleçler
Sorgu ifadesinde bazı değiştiricileri ve özel işleçleri kullanabilirsiniz.
Bir alan değerinin IN
herhangi bir değer kümesine eşit olup olmadığını değerlendirmek için işlecini kullanın. Bu işleç Dize, Tamsayı, Çift ve DateTime alan türleri için desteklenir. Anlamsal eşdeğeriyle birlikte aşağıdaki örne bakın.
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>'
)
İşleci EVER
, iş öğelerinin tüm geçmiş düzeltmeleri boyunca bir alan değerinin belirli bir değere eşit olup olmadığını veya belirli bir değere eşit olup olmadığını değerlendirmek için kullanılır. Dize, Tamsayı, Çift ve DateTime alan türleri bu işleci destekler. İşleç için EVER
alternatif söz dizimleri vardır. Örneğin, aşağıdaki kod parçacıkları tüm iş öğelerinin Jamal, Raise veya Christie'ye atanıp atanmadığını sorgular.
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>'
)