Report on function fields

  • Release version: Xanadu
  • Updated August 1, 2024
  • 4 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of Report on function fields

    Function fields in ServiceNow allow you to display dynamic results based on database queries and computations involving other fields and constants, rather than storing static values. These fields enhance reports and data visualizations by enabling calculations and string manipulations on the fly.

    Show full answer Show less

    Only users with the functionfieldadmin role can create, edit, or deactivate function fields. This role is not assigned by default after upgrades and must be granted by an admin. Function fields are configured per table and support up to 20 active fields each.

    Key Features

    • Function Field Operations: Use glidefunction:<operation> syntax to perform calculations and string operations. Supported operations include:
      • add(), subtract(), multiply(), divide(): Perform arithmetic on number fields or constants.
      • concat(): Concatenate multiple fields or constants into a single string.
      • datediff(): Calculate the duration between two date/time fields, returning days, hours, minutes, and seconds.
      • dayofweek(): Determine the day of the week from a date field, with configurable week start day.
      • length(): Return the character length of a string field.
      • coalesce(): Return the first non-empty value among multiple fields.
      • position(): Find the position of a substring within another string, with optional start position.
      • substring(): Extract a substring given start position and length.
    • Configuring Function Fields: You can create, edit, deactivate, and delete function fields on tables using the Report Designer.
      • Up to 20 active function fields per table are supported.
      • Editing a function field is limited to definition changes; label and return type are fixed after creation.
      • Deactivation is required to create new fields if the limit is reached.
      • Deletion allows reuse of field names.
      • Function field creation can be disabled via system property if needed.

    Key Outcomes

    By leveraging function fields, ServiceNow customers can:

    • Enhance reporting capabilities with calculated and concatenated field data without modifying underlying records.
    • Group and stack reports based on dynamic computed values, improving data analysis and visualization.
    • Control access and lifecycle of function fields securely using the dedicated functionfieldadmin role.
    • Maintain clean and efficient data models by limiting active function fields and managing their lifecycle effectively.

    While regular fields store a value in the database, a function field displays the results of a database query. The function field generates the value based on computations of other fields and constants. You can use these fields in reports and data visualizations as you would other fields.

    The responsibility for creating, editing, and deactivating function fields belongs to the user with the role function_field_admin. On upgrade, no user has this role. An admin must give this role to a non-admin user. See Create a role.

    Learn about function fields here: Function field.

    Function field operations

    Function fields can perform the following operations using the glidefunction:<operation> syntax.
    Note:
    Specify constants in single or double quotes. The examples for the concat(), dayofweek(), position(), and substring() operations show the use of constants in function fields.
    Table 1. Function field operationsthe Function field operations table contains columns for the names of function field operations, a detailed description of what the operation does, and an example that includes both code and what the code returns.
    Operation Description Example
    add() Takes two number fields as input, adds them, and returns the results as a field value.

    This function also takes numerical values for either input. Place numerical values in single or double quotation marks.

    glidefunction:add(child_incidents, parent_incident)

    Returns 6 if the incident has five child incidents and one parent incident.

    Possible return types: Decimal, Floating Point Number, Large Whole Number, Whole Number

    subtract() Takes two number fields as input, subtracts the second from the first, and returns the result as a field value.

    This function also takes numerical values for either input. Place numerical values in single or double quotation marks.

    glidefunction:subtract(u_num1, u_num2)

    Returns 2 if num1 = 8 and num_2 = 6.

    Possible return types: Decimal, Floating Point Number, Large Whole Number, Whole Number

    multiply() Takes two number fields as input, performs the multiplication, and returns the results as a field value.

    This function also takes numerical values for either input. Place numerical values in single or double quotation marks.

    glidefunction:multiply(u_num1, u_num2)

    Returns 48 if num1 = 8 and num_2 = 6.

    Possible return types: Decimal, Floating Point Number, Large Whole Number, Whole Number

    divide() Takes two number fields as input, divides the first by the second, and returns the result as a field value.

    This function also takes numerical values for either input. Place numerical values in single or double quotation marks.

    glidefunction:divide(u_num2,u_num1)

    Returns 5 if num2 = 10 and num1 = 2.

    Possible return types: Decimal, Floating Point Number, Large Whole Number, Whole Number

    concat() Takes any number of comma-separated fields and constants as input, concatenates the input, and returns a single string as a field value. glidefunction:concat(incident_number, '/', short_description)

    Returns "INC0001 / My client needs a new laptop." if the value of the number field is 'INC0001' and the short_description is 'My client needs a new laptop'.

    Return type: Text

    datediff() Takes two date/time fields as input, calculates the difference between the dates in days, minutes, and seconds, and returns the results as a duration field value. glidefunction:datediff(closed_at, sys_created_on)

    Returns the duration of an incident from the creation date to the close date. Example result: 10 days, 8 hours 23 minutes 11 seconds

    Return type: Duration

    dayofweek() Takes two arguments: A date field and a constant of either '1' (week starts on Sunday) or '2' (week starts on Monday). Returns the results as an integer value that represents the day of the week.

    The dayofweek() function uses UTC dates, but adjusts comparison values based on the instance's time zone.

    glidefunction:dayofweek(resolved_at, '1').

    If resolved_at occurs on a Wednesday, returns 4 if the integer is 1 and returns 3 if the integer is 2.

    Return type: Whole number

    length() Takes a string field as input, calculates the field length in characters, and returns the results as a field value. glidefunction:length(short_description)

    Returns 37 if short_description = "This application is performing a test".

    Return type: Whole number

    coalesce() Takes any number of comma-separated fields as input and returns the first non-empty value. glidefunction:coalesce(closed_at, resolved_at, sys_updated_on)

    If the value of closed_at is empty, the function returns the value of resolved_at. If the value of resolved_at is also empty, the function returns the value of sys_updated_on.

    Return type: Text

    position() Takes two text fields or two text fields and a whole number as input. One or both of the text fields can also be strings.
    1. Returns the position of the first occurrence of the string of the first text field in the second.
    2. If a whole number is specified, this function returns the position of the second text field after the position of the whole number.

    Returns 0 if the first text field is not present in the second (after the position of the whole number if specified).

    • glidefunction:position('e',short_description)

      If the value of the short_description field is "This computer is performing an upgrade", returns 12.

    • glidefunction:position('e',short_description,'14')

      If the value of the short_description field is "This computer is performing an upgrade", returns 19.

    Return type: Whole number

    substring() Takes a text field and two whole numbers as input. Returns the first instance of a string that starts at the position of the first whole number and is the length of the second. glidefunction:substring(short_description, '7', '2')

    If the value of the short_description field is 'We're going to the store', returns 'go'.

    Return type: Text