The extend-valid operator in Axiom Processing Language (APL) allows you to extend a set of fields with new calculated values, where these calculations are based on conditions of validity for each row. It’s particularly useful when working with datasets that contain missing or invalid data, as it enables you to calculate and assign values only when certain conditions are met. This operator helps you keep your data clean by applying calculations to valid data points, and leaving invalid or missing values untouched.

This is a shorthand operator to create a field while also doing basic checking on the validity of the field. In many cases, additional checks are required and it is recommended in those cases a combination of an extend and a where operator are used. The basic checks that Axiom preform depend on the type of the expression:

  • Dictionary: Check if the dictionary is not null and has at least one entry.
  • Array: Check if the arrat is not null and has at least one value.
  • String: Check is the string is not empty and has at least one character.
  • Other types: The same logic as tobool and a check for true.

You can use extend-valid to perform conditional transformations on large datasets, especially in scenarios where data quality varies or when dealing with complex log or telemetry data.

For users of other query languages

If you come from other query languages, this section explains how to adjust your existing queries to achieve the same results in APL.

Usage

Syntax

| extend-valid FieldName1 = Expression1, FieldName2 = Expression2, FieldName3 = ...

Parameters

  • FieldName: The name of the existing field that you want to extend.
  • Expression: The expression to evaluate and apply for valid rows.

Returns

The operator returns a table where the specified fields are extended with new values based on the given expression for valid rows. The original value remains unchanged.

Use case examples

In this use case, you normalize the HTTP request methods by converting them to uppercase for valid entries.

Query

['sample-http-logs']
| extend-valid upper_method = toupper(method)

Run in Playground

Output

_timemethodupper_method
2023-10-01 12:00:00getGET
2023-10-01 12:01:00POSTPOST
2023-10-01 12:02:00NULLNULL

In this query, the toupper function converts the method field to uppercase, but only for valid entries. If the method field is null, the result remains null.

  • extend: Use extend to add calculated fields unconditionally, without validating data.
  • project: Use project to select and rename fields, without performing conditional extensions.
  • summarize: Use summarize for aggregation, often used before extending fields with further calculations.