Referensi sintaksis Work Item Query Language (WIQL)
Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019
Anda bisa menggunakan sintaks WIQL untuk menentukan kueri sebagai hyperlink atau saat menggunakan Bahasa Kueri Item Kerja (REST API).
Sintaks WIQL mendukung semua fungsi yang tersedia melalui portal web Editor Kueri ditambah beberapa lagi. Anda dapat menentukan bidang yang akan dikembalikan dan menentukan pengelompokan logis klausa kueri. Selain itu, Anda dapat menggunakan klausul ASOF
untuk memfilter berdasarkan penugasan berdasarkan tanggal sebelumnya.
Penting
Sintaks WIQL digunakan untuk menjalankan Query By Wiql REST API. Saat ini, tidak ada cara untuk memanggil API untuk mengembalikan informasi item kerja terperinci dari kueri WIQL secara langsung. Tidak peduli bidang mana yang Anda sertakan dalam pernyataan SELECT, API hanya mengembalikan ID item kerja. Untuk mendapatkan informasi lengkap, Anda perlu melakukan dua langkah: (1) mendapatkan ID item kerja dari WIQL, dan (2) mendapatkan item kerja melalui Dapatkan daftar item kerja berdasarkan ID dan untuk bidang tertentu.
Prasyarat
Kueri hanya mengembalikan item kerja yang Anda miliki izin Tampilkan item kerja atau Tampilkan item kerja dalam simpul ini. Biasanya, izin ini diberikan kepada anggota grup Pembaca dan Kontributor untuk setiap proyek tim. Untuk informasi selengkapnya, lihat Izin dan grup.
Gambaran umum bahasa kueri
Bahasa kueri item kerja memiliki lima bagian yang diperlihatkan dalam cuplikan sintaks berikut dan dijelaskan dalam tabel berikut. Sintaks WIQL tidak peka huruf besar/kecil.
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
Dengan menginstal ekstensi Marketplace Editor Wiql, Anda dapat membuat kueri menggunakan Editor Kueri lalu melihat sintaks WIQL. Anda kemudian dapat menyalin dan memodifikasi sintaks WIQL dan menjalankan kueri menggunakan hub Wiql Playground yang ditambahkan ke Papan.
Klausul
Contoh
SELECT
Mengidentifikasi bidang yang akan dikembalikan untuk setiap item kerja yang dikembalikan oleh kueri. Anda dapat menentukan nama yang mudah diingat atau nama referensi. Gunakan kurung siku ([]) jika nama berisi kosong atau titik.
FROM
Menunjukkan apakah Anda ingin kueri menemukan item kerja atau tautan di antara item kerja.
- Gunakan
FROM WorkItems
untuk mengembalikan item kerja. - Gunakan
FROM workItemLinks
untuk mengembalikan tautan antar item kerja. Untuk informasi selengkapnya, lihat Kueri untuk tautan antar item kerja nanti di artikel ini.
WHERE
Menentukan kriteria filter untuk kueri. Untuk informasi selengkapnya, lihat Kondisi filter (WHERE) nanti di artikel ini.
ORDER BY
Menentukan urutan pengurutan item kerja yang dikembalikan. Anda dapat menentukan Naik (Asc) atau Turun (Turun) untuk satu atau beberapa bidang. Contohnya:
ORDER BY [State] Asc, [Changed Date] Desc
ASOF
Menentukan kueri historis dengan menunjukkan tanggal kapan filter akan diterapkan. Misalnya, kueri ini mengembalikan semua cerita pengguna yang didefinisikan sebagai Aktif pada 11 Februari 2020. Tentukan tanggal sesuai dengan panduan yang disediakan dalam pola Tanggal dan waktu.
ASOF '02-11-2020'
Catatan
Panjang kueri WIQL yang dibuat terhadap Azure Boards tidak boleh melebihi 32K karakter. Sistem tidak akan mengizinkan Anda membuat atau menjalankan kueri yang melebihi panjang tersebut.
Pola tanggal dan waktu
Pola tanggal dan waktu yang Anda masukkan untuk bidang DateTime harus cocok dengan yang Anda pilih melalui profil Anda. Untuk melihat atau mengubah pilihan Anda, lihat Mengatur preferensi pengguna untuk Waktu dan Lokal.
Kuotasi (tanda kutip tunggal atau ganda didukung) Literal DateTime yang digunakan sebagai perbandingan. Mereka harus dalam format DateTime .NET dari komputer klien lokal yang menjalankan kueri. Kecuali zona waktu ditentukan, literal DateTime berada di zona waktu komputer lokal.
WHERE
AND [System.ChangedDate] >= '01-18-2019 GMT'
AND ([Closed Date] < '01-09-2022 GMT'
OR [Resolved Date] >= '01-18-2019 14:30:01')
Ketika waktu dihilangkan dalam literal DateTime dan parameter dayPrecision sama dengan false, waktu diasumsikan nol (tengah malam). Pengaturan default untuk parameter dayPrecision adalah false.
Atau, Anda dapat menentukan format ISO 8601 yang valid apa pun lokalnya. ISO 8601 mewakili tanggal dan waktu dengan dimulai dengan tahun, diikuti oleh bulan, hari, jam, menit, detik, dan milidetik. Misalnya, 2021-12-10 15:00:00.000, mewakili tanggal 10 Desember 2021 pukul 15.00 di waktu setempat. Contoh penggunaan format ISO 8601 adalah sebagai berikut.
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')
Bidang isian kustom
Anda bisa menambahkan bidang kustom ke klausa kueri. Dengan WIQL, Anda harus menentukan nama referensi untuk bidang kustom. Untuk proyek yang menggunakan model proses Yang Diwariskan, bidang kustom biasanya diberi label Kustom. diawali dengan namanya, dan spasi dihapus. Contohnya:
Nama yang mudah diingat | Nama referensi |
---|---|
Pemberi Izin | Custom.Approver |
Jenis permintaan | Custom.RequestType |
Perkiraan Cakupan | Custom.CustomEstimate |
Untuk proyek yang menggunakan model proses XML lokal, nama referensinya seperti yang didefinisikan oleh definisi jenis item kerja XML.
Untuk informasi selengkapnya, lihat Bidang dan atribut item kerja.
Tentukan klausa filter (WHERE
)
Klausa WHERE
menentukan kriteria filter. Kueri hanya mengembalikan item kerja yang memenuhi kriteria yang ditentukan. Misalnya, contoh WHERE
klausa berikut mengembalikan cerita pengguna yang aktif dan yang ditetapkan untuk Anda.
WHERE [Work Item Type] = 'User Story'
AND [State] = 'Active'
AND [Assigned to] = @Me
Anda dapat mengontrol urutan di mana operator logis dievaluasi dengan menyertakannya dalam tanda kurung untuk mengelompokkan kriteria filter. Misalnya, untuk mengembalikan item kerja yang ditetapkan untuk Anda atau yang Anda tutup, ubah filter kueri agar sesuai dengan contoh berikut.
WHERE
[System.TeamProject] = @project
AND (
[System.WorkItemType] = 'Product Backlog Item'
AND (
[System.AssignedTo] = @me
OR [Microsoft.VSTS.Common.ClosedBy] = @me
)
)
Kondisi filter
Setiap kondisi filter terdiri dari tiga bagian, yang masing-masing harus sesuai dengan aturan berikut:
- Bidang: Anda dapat menentukan nama referensi atau nama yang mudah diingat. Contoh berikut adalah sintaks WIQL yang valid:
- Nama referensi:
SELECT [System.AssignedTo] ...
- Nama yang mudah diingat dengan spasi:
SELECT [Assigned To] ...
- Nama tanpa spasi tidak memerlukan tanda kurung siku:
SELECT ID, Title ...
- Nama referensi:
- Operator: Nilai yang valid ditentukan di bagian Operator nanti di artikel ini.
- Nilai bidang: Anda dapat menentukan salah satu dari tiga nilai berikut tergantung pada bidang yang ditentukan.
- Nilai harfiah harus cocok dengan jenis data nilai bidang.
- *variabel atau makro yang menunjukkan nilai tertentu. Misalnya, @Me menunjukkan orang yang menjalankan kueri. Untuk informasi selengkapnya, lihat Makro dan variabel nanti di artikel ini.
- Nama bidang lain. Misalnya, Anda dapat menggunakan
[Assigned to] = [Changed by]
untuk menemukan item kerja yang ditetapkan ke orang yang paling baru mengubah item kerja.
Untuk deskripsi dan nama referensi semua bidang yang ditentukan sistem, lihat Indeks bidang item kerja.
Operator
Kueri menggunakan ekspresi logis untuk memenuhi syarat tataan hasil. Ekspresi logis ini dibentuk oleh satu atau beberapa operasi bersamaan.
Beberapa operasi kueri sederhana tercantum di bawah ini.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [Microsoft.VSTS.Common.Severity] <> '1 - Critical'
Tabel di bawah ini meringkas semua operator yang didukung untuk berbagai jenis bidang. Untuk informasi selengkapnya tentang setiap jenis bidang, lihat Bidang dan atribut item kerja.
Operator =, <>, >, <, >=, and <=
berfungsi seperti yang diharapkan. Misalnya, System.ID > 100
kueri untuk semua item kerja dengan ID yang lebih besar dari 100. System.ChangedDate > '01-01-19 12:00:00'
kueri untuk semua item kerja diubah setelah siang 1 Januari 2019.
Di luar operator dasar ini, ada beberapa perilaku dan operator khusus untuk jenis bidang tertentu.
Catatan
Operator yang tersedia untuk Anda bergantung pada platform dan versi Anda. Untuk informasi selengkapnya, lihat Referensi cepat kueri.
Jenis bidang
Operator yang didukung
Boolean
= , <> , =[Field] , <>[Field]
DateTime
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Ganda, GUID, Bilangan Bulat
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
Identitas
= , <> , > , < , >= , <= , =[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
Pengelompokan logis
Anda dapat menggunakan istilah AND
dan OR
dalam arti khas Boolean untuk mengevaluasi dua klausul. Anda dapat menggunakan istilah AND EVER
dan OR EVER
saat menentukan WAS EVER
operator. Anda dapat mengelompokkan ekspresi logis dan selanjutnya menggabungkannya, sesuai kebutuhan. Contohnya ditunjukkan di bawah ini.
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>'
)
)
Anda dapat meniadakan contains, under,
operator dan in
dengan menggunakan not
. Anda tidak dapat meniadakan ever
operator. Contoh di bawah ini mengkueri untuk semua item kerja yang tidak ditetapkan di bawah subtree Fabrikam Fiber\Account Management
.
WHERE
[System.TeamProject] = @project
AND [System.WorkItemType] <> ''
AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'
Contoh kueri, pernah ditetapkan ke
Contoh Editor Kueri berikut menemukan semua item kerja yang pernah ditetapkan ke Jamal Hartnett.
Dan, berikut adalah sintaks WIQL yang sesuai.
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>'
Makro atau variabel
Tabel berikut mencantumkan makro atau variabel yang bisa Anda gunakan dalam kueri WIQL.
Makro | Penggunaan |
---|---|
@Me | Gunakan variabel ini untuk mencari alias pengguna saat ini secara otomatis di bidang yang berisi alias pengguna. Misalnya, Anda dapat menemukan item kerja yang Anda buka jika Anda mengatur kolom Bidang ke Diaktifkan Oleh, kolom Operator ke =, dan kolom Nilai ke @Me. |
@CurrentIteration | Gunakan variabel ini untuk memfilter item kerja yang ditetapkan secara otomatis ke sprint saat ini untuk tim yang dipilih berdasarkan konteks tim yang dipilih. |
@Project | Gunakan variabel ini untuk mencari item kerja dalam proyek saat ini. Misalnya, Anda dapat menemukan semua item kerja dalam proyek saat ini jika Anda mengatur kolom Bidang ke Proyek Tim, kolom Operator ke =, dan kolom Nilai ke @Project. |
@StartOfDay @StartOfWeek @StartOfMonth @StartOfYear |
Gunakan makro ini untuk memfilter bidang DateTime berdasarkan awal hari, minggu, bulan, tahun, atau offset saat ini ke salah satu nilai ini. Misalnya, Anda dapat menemukan semua item yang dibuat dalam 3 bulan terakhir jika Anda mengatur kolom Bidang ke Tanggal Dibuat, kolom Operator ke >=, dan kolom Nilai ke @StartOfMonth - 3. |
@Today | Gunakan variabel ini untuk mencari item kerja yang terkait dengan tanggal saat ini atau ke tanggal sebelumnya. Anda juga dapat mengubah variabel @Today dengan mengurangi hari. Misalnya, Anda dapat menemukan semua item yang diaktifkan dalam seminggu terakhir jika Anda mengatur kolom Bidang ke Tanggal Diaktifkan, kolom Operator ke >=, dan kolom Nilai ke @Today - 7. |
[Apa saja] | Gunakan variabel ini untuk mencari item kerja yang terkait dengan nilai apa pun yang ditentukan untuk bidang tertentu. |
@me makro
@me
Makro menggantikan nama akun Windows Integrated pengguna yang menjalankan kueri. Contoh di bawah ini menunjukkan cara menggunakan makro dan pernyataan statis yang setara. Makro ditujukan untuk digunakan dengan bidang identitas seperti Assigned To
.
WHERE
[System.AssignedTo] = @Me
@today makro
Anda dapat menggunakan @today
makro dengan bidang DateTime apa pun. Makro ini menggantikan tengah malam tanggal saat ini pada komputer lokal yang menjalankan kueri. Anda juga dapat menentukan @today+x
atau @today-y
menggunakan offset bilangan bulat untuk x hari setelah @today
dan y hari sebelum @today
, masing-masing. Kueri yang menggunakan @today
makro dapat mengembalikan tataan hasil yang berbeda tergantung pada zona waktu yang dijalankannya.
Contoh di bawah ini mengasumsikan bahwa hari ini adalah 1/3/19.
WHERE
[System.CreatedDate] = @today
Setara dengan:
WHERE
[System.CreatedDate] = '01-03-2019'
Dan
WHERE
[System.CreatedDate] > @today-2
Setara dengan:
WHERE
[System.CreatedDate] > '01-01-2019'
@StartOfDay, @StartOfWeek, @StartOfMonth, @StartOfYear makro
Anda dapat menggunakan @StartOf...
makro dengan bidang DateTime apa pun. Makro ini menggantikan tengah malam hari saat ini, awal minggu, awal bulan, atau awal tahun di komputer lokal yang menjalankan kueri.
Catatan
Memerlukan Azure DevOps Server 2019 Update 1 atau versi yang lebih baru.
Makro ini menerima string pengubah yang memiliki format (+/-)nn(y|M|w|d|h|m)
. Mirip @Today
dengan makro, Anda dapat menentukan offset bilangan bulat plus atau minus. Jika kualifikasi unit waktu dihilangkan, maka default ke periode alami fungsi. Misalnya, @StartOfWeek("+1")
sama dengan @StartOfWeek("+1w")
. Jika tanda plus/minus (+/-) dihilangkan, plus diasumsikan.
Sintaks ini memungkinkan Anda untuk menumpuk pengubah dan mengimbangi kueri Anda dua kali. Misalnya, klausa Closed Date >= @StartOfYear - 1
, memfilter item kerja yang telah ditutup sejak tahun lalu. Dengan memodifikasinya menjadi Closed Date >= @StartOfYear('+3M') - 1
, item kerja tidak termasuk item kerja yang ditutup dalam tiga bulan pertama tahun lalu. Sintaks WIQL seperti yang ditunjukkan dalam contoh berikut.
WHERE
[Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1
Contoh berikut mengasumsikan bahwa hari ini adalah 4/5/19.
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= @StartOfMonth-3
Setara dengan:
WHERE
[Microsoft.VSTS.Common.CreatedDate] >= '01-01-2019'
Dan
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > @StartOfYear
Setara dengan:
WHERE
[Microsoft.VSTS.Scheduling.TargetDate] > '01-01-2019'
Makro kustom
WIQL juga mendukung makro kustom arbitrer. Setiap string yang @
diawali oleh diperlakukan sebagai makro kustom dan diganti. Nilai penggantian untuk makro kustom diambil dari parameter konteks metode kueri dalam model objek. Metode berikut adalah API yang digunakan untuk makro:
public WorkItemCollection Query(string wiql, IDictionary context)
Parameter konteks berisi pasangan kunci-nilai untuk makro. Misalnya, jika konteks berisi pasangan kunci-nilai (proyek, MyProject), maka @project digantikan oleh MyProject
di WIQL. Penggantian ini adalah cara penyusun kueri item kerja menangani makro @project di Visual Studio.
Tentukan kueri historis (ASOF
)
Anda bisa menggunakan ASOF
klausa dalam kueri untuk memfilter item kerja yang memenuhi kondisi filter yang ditentukan saat ditentukan pada tanggal dan waktu tertentu.
Catatan
Anda tidak dapat membuat ASOF
kueri di penyusun kueri di Visual Studio. Jika Anda membuat file kueri (.wiq) yang menyertakan ASOF
klausa, lalu memuatnya di Visual Studio, ASOF
klausa diabaikan.
Misalkan item kerja diklasifikasikan di bawah Jalur Fabrikam Fiber\Release 1
Iterasi dan ditetapkan ke 'Jamal Hartnett' sebelum 5/05/2022. Namun, item kerja baru-baru ini ditetapkan ke 'Raisa Pokrovskaya' dan pindah ke jalur iterasi baru Rilis 2. Contoh kueri berikut mengembalikan item kerja yang ditetapkan ke Jamal Hartnett karena kueri didasarkan pada status item kerja pada tanggal dan waktu sebelumnya.
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'
Catatan
Jika tidak ada waktu yang ditentukan, WIQL menggunakan tengah malam. Jika tidak ada zona waktu yang ditentukan, WIQL menggunakan zona waktu komputer klien lokal.
Mengatur urutan pengurutan (ORDER BY
)
Anda bisa menggunakan ORDER BY
klausa untuk mengurutkan hasil kueri menurut satu atau beberapa bidang dalam urutan naik atau turun.
Catatan
Preferensi pengurutan server SQL pada tingkat data menentukan urutan pengurutan default. Namun, Anda dapat menggunakan asc
parameter atau desc
untuk memilih urutan pengurutan eksplisit.
Contoh berikut mengurutkan item kerja terlebih dahulu menurut Prioritas dalam urutan naik (default), lalu berdasarkan Tanggal Dibuat dalam urutan menurut (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
Kueri untuk tautan antar item kerja
Untuk mengembalikan tautan antar item kerja, Anda menentukan FROM WorkItemLinks
. Kondisi filter dalam WHERE
klausa mungkin berlaku untuk tautan atau ke item kerja apa pun yang merupakan sumber atau target tautan. Misalnya, kueri berikut mengembalikan tautan antara Item Backlog Produk dan item anak aktifnya.
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)
Tabel berikut ini meringkas perbedaan antara kueri item kerja dan kueri untuk tautan antar item kerja.
Klausul
Item kerja
Tautan antar item kerja
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
tidak berlaku
Tentukan salah satu hal berikut ini:
MODE (MustContain)
: (Default) Hanya mengembalikan rekaman WorkItemLinkInfo di mana kriteria sumber, target, dan tautan semuanya terpenuhi.MODE (MayContain)
: Mengembalikan rekaman WorkItemLinkInfo untuk semua item kerja yang memenuhi kriteria sumber dan tautan, meskipun tidak ada item kerja tertaut yang memenuhi kriteria target.MODE (DoesNotContain)
: Mengembalikan rekaman WorkItemLinkInfo untuk semua item kerja yang memenuhi sumbernya, hanya jika tidak ada item kerja tertaut yang memenuhi kriteria tautan dan target.MODE (Recursive)
: Gunakan untuk Kueri pohon([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
). Jenis tautan harus topologi Pohon dan arah ke depan. Mengembalikan rekaman WorkItemLinkInfo untuk semua item kerja yang memenuhi sumber, secara rekursif untuk target.ORDER BY
danASOF
tidak kompatibel dengan kueri pohon.
RETURNS
Anda dapat menentukan salah satu nama jenis tautan sistem berikut.
Anda dapat menentukan salah satu nama jenis tautan sistem, yang tercantum di bawah ini, atau jenis tautan kustom yang telah Anda tentukan dengan proses XML lokal.
System.LinkTypes.Hierarchy-Forward
System.LinkTypes.Related
System.LinkTypes.Dependency-Predecessor
System.LinkTypes.Dependency-Successor
Microsoft.VSTS.Common.Affects-Forward
(Proses CMMI)
Untuk informasi selengkapnya, lihat Referensi jenis tautan.
Contoh kueri jenis pohon
Kueri berikut mengembalikan semua tipe item kerja yang ditentukan dalam proyek saat ini. Kueri seperti yang diperlihatkan dalam Editor Kueri muncul seperti yang diperlihatkan dalam gambar berikut.
Sintaks WIQL yang setara ditunjukkan di bawah ini.
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)
Contoh kueri tautan langsung
Kueri berikut mengembalikan semua tipe item kerja yang ditentukan dalam proyek saat ini. Kueri seperti yang diperlihatkan dalam Editor Kueri muncul seperti yang diperlihatkan dalam gambar berikut.
Sintaks WIQL yang setara seperti yang ditunjukkan.
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)
Contoh kueri lainnya
Contoh kueri WIQL umum berikut menggunakan nama referensi untuk bidang. Kueri memilih item kerja (tidak ada tipe item kerja yang ditentukan) dengan Priority=1. Kueri mengembalikan ID dan Judul kumpulan pengembalian sebagai kolom. Hasilnya diurutkan menurut ID dalam urutan naik.
SELECT
[System.Id],
[System.Title],
[System.State],
[System.IterationPath]
FROM workitems
WHERE
[System.TeamProject] = @project
AND [Microsoft.VSTS.Common.Priority] <> ''
ORDER BY [System.Id]
Pola tanggal-waktu
Anda menentukan pola tanggal-waktu sesuai dengan salah satu dari dua pola:
- Format Pola Tanggal dan Pola Waktu berasal dari preferensi pengguna, Waktu, dan Lokal Anda
- Pola yang ditentukan oleh UTC, yang mengikuti pola ini (dengan Z ditambahkan ke tanggal-waktu).
AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'
Contoh klausa
Contoh pernyataan berikut menunjukkan klausul kualifikasi tertentu.
Klausul
Contoh
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
(Filter waktu)
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 dan PlainText
Literal string kutipan (tanda kutip tunggal atau ganda didukung) dalam perbandingan dengan string atau bidang teks biasa. Literal string mendukung semua karakter Unicode.
WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'
Anda dapat menggunakan operator berisi untuk mencari substring di mana saja dalam nilai bidang.
WHERE [System.Description] contains 'WIQL'
Area dan Iterasi (TreePath)
Anda dapat menggunakan UNDER
operator untuk bidang Area dan Jalur Iterasi. Operator UNDER
mengevaluasi apakah nilai berada dalam subtree dari node klasifikasi tertentu. Misalnya, ekspresi di bawah ini akan mengevaluasi ke true jika Jalur Area adalah 'MyProject\Server\Administration', 'MyProject\Server\Administration\Feature 1', 'MyProject\Server\Administration\Feature 2\SubFeature 5', atau node lain dalam subtree.
WHERE [System.AreaPath] UNDER 'MyProject\Server\Administration'
Pengubah dan operator khusus
Anda dapat menggunakan beberapa pengubah dan operator khusus dalam ekspresi kueri.
IN
Gunakan operator untuk mengevaluasi apakah nilai bidang sama dengan salah satu set nilai. Operator ini didukung untuk jenis bidang String, Bilangan Bulat, Ganda, dan DateTime. Lihat contoh berikut bersama dengan setara semantiknya.
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>'
)
Operator EVER
digunakan untuk mengevaluasi apakah nilai bidang sama atau pernah sama dengan nilai tertentu di semua revisi item kerja sebelumnya. Jenis bidang String, Bilangan Bulat, Ganda, dan DateTime mendukung operator ini. Ada sintaks alternatif untuk EVER
operator. Misalnya, cuplikan di bawah kueri apakah semua item kerja pernah ditetapkan ke Jamal, Raise, atau 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>'
)