• Documentation

Use advanced search with Talent Query Language (TQL)

Introduction

The advanced search is the most powerful and flexible way to search for positions across Talent. You can use the Talent Query Language to specify criteria that cannot be defined in quick or basic searches and also construct complex queries for a hyper tuned search.

Talent Query Language utilizes a SQL-like syntax to allow users to input queries to get granular information on the data within Talent through search, filter, and sort. Queries are a series of elements like fields, operators, and values, that are strung together to form a structured search across Talent positions.

Basic Syntax

To use this advanced search functionality, on any page with search function, select the show filters () button, and select the Query to reveal the editor. Enter your query and press enter or select the search () icon to run your query. If there’s a problem with the syntax/validity of your query, you’ll see an error message displayed below. For example: address is not a valid field

The basic syntax of Talent Query Language is: <field> <operator> <value(s)/function>

Example: status = "Not Filled"

This query returns all unfilled positions on the page you’re on. Note the quotes around the value since status expects a string type.

Here’s more detail on each part of the query.

Fields

In a clause, a field is followed by an operator which compares the value of the field with the value(s) provided on the right hand side of the operator.

Keyword

Allows for fuzzy searching positions by Position ID or Filled By

Syntax

keyword

Field type

Text/String

Auto-complete value support

No

Supported operators

~, !~

Examples

  • Find positions with the name Charlie

    • keyword ~ "Charlie"

  • Show me positions that don’t have a position ID with 123

    • keyword !~ "123"

Status

Denotes the status for a position. There are two possible statuses: Filled and Not filled

Syntax

status

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IN, NOT IN

Examples

  • Find positions with a status of filled

    • status = "FILLED"

  • Find positions that do not have a unfilled status

    • status != "Not filled"

Employment type

One of:

  • Employee

  • Contingent

Syntax

employmentType

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show all positions except those with a fulltime employment type

    • employmentType != "Employee"

  • Show positions that are either contingent or and employee

    • employmentType IN ("Contingent", "Employee")

Country

The country for a specific position.

Syntax

country

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

Show me all positions outside the US

  • country != 'United States of America'

Manager

Represents the manager this position reports to.

Syntax

manager

Field type

ARI

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Supported functions

=/!= UNDER(<position>)

Examples

  • Show all positions directly under manager

    Charlie Atlas

    • manager = "Charlie Atlas"

  • Show all positions under manager Charlie Atlas’s entire reporting line

    • manager = UNDER("Charlie Atlas")

Timezone

Represents the timezone the position is in.

Americas - East, Americas - West, APAC - East, APAC - West, EMEA - East, EMEA - West

Syntax

timezome

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

Show me all positions in all American timezones

  • timezone IN ('Americas - East', 'Americas - West')

Job family

The business function of the position.

Syntax

jobFamily

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show positions within the engineering job family

    • jobFamily = "Engineering"

  • Show me all positions except administration

    • jobFamily != "Administration"

  • Show me all of the engineers and administration

    • jobFamily IN ("Engineering", "Administration")

Level

Denotes a position’s respective level.

Note: Requires permissions to view

Syntax

level

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Find positions with a job level of intern (PI)

    • jobLevel = "PI"

  • Exclude positions with a P40 job level

    • jobLevel != "P40"

  • Show all positions that are either P30, P40, or P50

    • jobLevel IN ("P30", "P40", "P50")

Job title

Specifies a more granular description of the position’s job profile.

Syntax

jobTitle

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show all senior and associate software engineers

    • jobTitle IN ('Senior Software Engineer', 'Associate Software Engineer')

Tenure

Number of years the worker has filled the position. Calculated based on worker's most recent hire date.

Syntax

tenure

Field type

Int

Auto-complete value support

No

Supported operators

 =, !=, >, >=, <, <=

Examples

  • Which positions have a tenure greater than 5 years

    • tenure > 5

  • Show me all positions with tenure less than or equal to 2 years

    • tenure <= 2

  • Show me the positions that have a tenure within 4 and 6 years, both inclusive

    • tenure <= 6 AND tenure >= 4

    • exclusive: tenure < 6 AND tenure > 4

Role

One of:

  • Individual Contributor

  • Manager

Syntax

role

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show me all managers

    • role = "manager"

Title

A more specific name to represent the name of a position.

Syntax

title

Field type

Text/String

Auto-complete value support

No

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • I want to only see the specific title of CTO

    • title = "Chief Technology Officer"

Focus area

The focus area the position is allocated to.

Syntax

focusArea

Field type

ARI

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Supported functions

=/!= UNDER(<focusArea>)

Examples

  • Show all positions allocated to a focus area called initiative1

    • focusArea = 'intiative 1'

  • Show all positions that allocated to intiative 1 or any focus areas under initiative 1

    • focusArea != UNDER("initiative 1")

Querying related fields

The core object for Talent is positions where all the above fields exist on. However, when wanting to query on a related object’s field, you need to use prefixed field names. For example, when trying to query on the worker object, you'll need to use the field workerEmail to access the field you want.

Below are some related object fields you can query on using the Talent Query Language:

Worker name (Same as Filled By column)

Syntax

workerPreferredName

Field type

Text/String

Auto-complete value support

No

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show me positions with name Charlie

    • workerPreferredName ~ "Charlie"

Worker start date

Syntax

workerStartDate

Field type

Datetime

Auto-complete value support

No

Supported operators

=, !=, >, >=, <, <=, IS, IS NOT, IN, NOT IN

Examples

  • Show me positions with a worker start date past 2024

    • workerStartDate > "2024-01-01"

  • Fetch positions with a worker start date on august 29 3050

    • workerStartDate = "3050-08-29"

Worker email

Syntax

workerEmail

Field type

Text/String

Auto-complete value support

No

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show me positions with a specific worker email

    • workerEmail = "catlas@atlassian.com"

  • Fetch positions with a worker email that doesn’t have @atlassian.com

    • workerStartDate !~ "@atlassian.com"

Focus area name

Text-based name of the focus area a position is allocated to.

Syntax

focusAreaName

Field type

Text/String

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show me positions allocated to a specific focus area name

    • focusAreaName = "some initiative"

  • Fetch positions allocated to a focus area that begins with engineering

    • focusAreaName ~ "engineering"

Focus area type

The type of focus area a position is hierarchically allocated to.

Syntax

focusAreaType

Field type

ARI

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show me positions that are hierarchically allocated to focus areas with a specific type

    • focusAreaType = "initiative"

Focus area type name

The text-based name of the type of focus area a position is directly allocated to.

Syntax

focusAreaTypeName

Field type

Text/String

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show me positions that are directly allocated to focus areas with a specific type

    • focusAreaTypeName IN ("initiative", "company")

Custom fields

Users can filter, sort, and group custom fields using the same syntax as standard fields.

Syntax

The custom field “display name” configured in Talent admin settings.

Field type

Text/String

Auto-complete value support

Yes

Supported operators

=, !=, ~, !~, IS, IS NOT, IN, NOT IN

Examples

  • Show me positions with the values “engineering” or “sales” for the custom field myCustomRole

    • myCustomRole IN ("engineering", "sales")

Operators

In Talent Query Language, an operator is used to compare the value of the field on the left with one or more values (or function) on the right.

Equals

Returns results where a field is equivalent to some value. Could be used with booleans if supported by the given field.

Not equals

Returns results where a field is not equivalent to some value. Could be used with booleans if supported by the given field.

Syntax

!=

Examples

  • fieldName != "value"

  • fieldName != false

In

Returns results where a field contains values in a comma separated list denoted by parenthesis (). Essentially the same as inputting multiple = operators using ORs but with simpler syntax.

Syntax

IN

Examples

  • fieldName IN ("value1", "value2")

    • is the same as:fieldName = "value1" OR fieldName = "value2"

Not in

Returns results where a field does not contain values in a comma separated list.

Syntax

NOT IN

Examples

  • fieldName NOT IN ("value1", "value2")

Is

Used exclusively in combination with EMPTY or NULL to return results where a given field is null, or does not contain a value.

Syntax

IS

Examples

  • fieldName IS Empty

  • fieldName is Null

Is not

Used exclusively in combination with EMPTY or NULL to return results where a given field contains a value.

Syntax

IS NOT

Examples

  • fieldName IS NOT Empty

  • fieldName IS NOT Null

Like

Search where field is a fuzzy match with the value (“is like”).

Syntax

~

Examples

fieldName ~ "val"

Not like

Search where field is not a fuzzy match with the value (“is not like”).

Syntax

!~

Examples

fieldName !~ "val"

Greater than

Returns results where a position's value is greater than the given value in its respective field.

Syntax

>

Examples

  • fieldName > 1

  • fieldName > mm/dd/yy

Less than

Returns results where a position's value is less than the given value in its respective field.

Syntax

<

Examples

  • fieldName < 1

  • fieldName < mm/dd/yy

Greater than or equal

Returns results where a position's value is greater than or equal to the given value in its respective field.

Syntax

>=

Examples

  • fieldName >= 1

  • fieldName >= mm/dd/yy

Less than or equal

Returns results where a position's value is less than or equal to the given value in its respective field.

Syntax

<=

Examples

  • fieldName <= 1

  • fieldName <= mm/dd/yy

Keywords/Combination operators

Keywords are words or phrases that are reserved for:

  • joining two or more clauses

  • altering the logic of a clause

AND

Used to combine multiple clauses, allowing you to refine your search. Can be used with parentheses to control the order in which clauses are executed.

Examples

  • Find filled positions not in Australia

    • status = "Filled" AND country != "Australia"

OR

Used to combine multiple clauses, allowing you to expand your search. Can be used with parentheses to control the order in which clauses are executed

Examples

  • Show me positions that have a contingent employment type or are allocated to specific focus areas

    • employmentType = "Contingent" OR focusArea IN ("focusArea1", "focusArea2")

Parentheses

Used to control order in which clauses are executed. Also required for IN () syntax.

Examples

  • Find jobFamily = "Engineering" OR country = "India" first and combine those results with status = "Filled"

    • (jobFamily = "Engineering" OR country = "AUS") AND status = "Filled"

  • Multiple levels of nested clauses using parenthesis is also supported

Not

Used to negate individual clauses or a complex RQL query (a query made up of more than one clause) using parentheses, allowing you to refine your search.

(also used in NOT IN, IS NOT)

Examples

  • Exclude positions where country is not empty and are not in the engineering job family

    • country IS NOT EMPTY AND jobFamily NOT IN ("Engineering")

  • Negate complex queries

    • NOT (status in ('Filled')

      or country in ('Australia')

      or (manager in ('Charlie Atlas') and employmentType = 'Contingent'))

Functions

A function in Talent Query Language appears as a word followed by parentheses, which may contain one or more values. In the clause, the function should be preceded by an operator (=/!=) which in turns is preceded by a field.

UNDER()

Should filter positions that are associated to that value and positions that are associated to values under as well.

Syntax

UNDER()

Supported fields

manager, focusArea

Supported operators

=, !=

Examples

  • Show all positions that allocated to intiative 1 or any focus areas under initiative 1

    • focusArea != UNDER("initiative 1")

Ordering

Order by

Used to specify the fields by whose values the search results will be sorted. This requirement needs to be placed at the end of the query, otherwise it will be invalid.

By default, ascending order will be used. You can override this by specifying ascending order ("asc") or descending order ("desc").

Examples

  • Order Positions by tenure descending, excluding a specific focusArea

    • focusArea != 'initiative 1'

      ORDER BY tenure DESC

  • Find open positions and order them by name (defaulted to ASC)

    • status = "Filled" ORDER BY worker

 

Still need help?

The Atlassian Community is here for you.