pow ↗
Use the pow() function to calculate the value of a number raised to the power of another number.
Syntax
pow (<base>, <exponent>)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
base |
integer, float, string | Yes | The base number to be raised. |
exponent |
integer, float, string | Yes | The exponent to which the base is raised. |
Returns
The pow() function returns the numerical result of the base raised to the power of the exponent.
Usage notes
- The function accepts numeric literals (for example, 2, 1.5), floating-point numbers, and integers as input.
- Input values can also be provided as strings representing numbers (for example, extracted from a data field), which the function will convert for calculation.
- The function supports negative numbers for both the base and the exponent.
Examples
Example 1: Literal base and literal integer exponent (calculating 1 MB and 1 GB)
Goal: Calculate common byte sizes (Megabytes and Gigabytes) using integer literals, where 1MB is 2^20 bytes and 1GB is 2^30 bytes.
XQL code:
config timeframe = 1d | dataset = sample_xql_raw | alter mega_bytes = pow(2, 20) | alter giga_bytes = pow(2, 30) | fields event_id, mega_bytes, giga_bytes | limit 3
Explanation: This query creates two new fields, mega_bytes and giga_bytes, by raising the literal 2 to the powers of 20 and 30 respectively. The result, 1048576 for 1MB and 1073741824 for 1GB, is a constant numerical value for each record.
Output:
| EVENT_ID | MEGA_BYTES | GIGA_BYTES |
|---|---|---|
| 101 | 1048576 | 1073741824 |
| 102 | 1048576 | 1073741824 |
| 103 | 1048576 | 1073741824 |
Example 2: Field base and literal integer exponent
Goal: Use a floating-point field as the base for a power calculation to square the value.
XQL code:
config timeframe = 1d | dataset = sample_xql_raw | alter duration_squared = pow(duration_seconds, 2) | fields event_id, duration_seconds, duration_squared | limit 3
Explanation: The duration_seconds field (for example, 1.5, 0.8, 10.2) is raised to the power of 2 (squared). For instance, 1.5 becomes 2.25, and 0.8 becomes 0.64, demonstrating the function's precision with floating-point numbers.
Output:
| EVENT_ID | DURATION_SECONDS | DURATION_SQUARED |
|---|---|---|
| 101 | 1.5 | 2.25 |
| 102 | 0.8 | 0.64 |
| 103 | 10.2 | 104.04 |
Example 3: Field base from array and literal integer exponent
Goal: Use an element extracted from an array field as the base for a power calculation.
XQL code:
config timeframe = 1d | dataset = sample_xql_raw | alter first_numeric_code = arrayindex(numeric_codes, 0) | alter code_cubed = pow(first_numeric_code, 3) | fields event_id, numeric_codes, first_numeric_code, code_cubed | limit 3
Explanation: This query extracts the first element (index 0) from the numeric_codes array for each record. The query then raises this extracted integer to the power of 3 (cubed), storing the result in code_cubed.
Output:
| EVENT_ID | NUMERIC_CODES | FIRST_NUMERIC_CODE | CODE_CUBED |
|---|---|---|---|
| 101 | [13, -47, 29, 82, -15] | 13 | 2197 |
| 102 | [-21, 56, 13, -88, 42] | -21 | -9261 |
| 103 | [90, -33, 7, 51, -62, 18] | 90 | 729000 |
Example 4: Literal base and negative integer exponent from array
Goal: Raise a literal base to the power of a negative exponent extracted from an array field.
XQL code:
config timeframe = 1d | dataset = sample_xql_raw | alter second_numeric_code = arrayindex(numeric_codes, 1) | alter base_powered_by_code = pow(10, second_numeric_code) | fields event_id, numeric_codes, second_numeric_code, base_powered_by_code | limit 3
Explanation: For event_id 101, second_numeric_code is -47. The calculation becomes 10^-47, resulting in a very small floating-point number (scientific notation 1e-47). This illustrates how pow() correctly handles negative exponents, producing decimal results.
Output:
| EVENT_ID | NUMERIC_CODES | SECOND_NUMERIC_CODE | BASE_POWERED_BY_CODE |
|---|---|---|---|
| 101 | [13, -47, 29, 82, -15] | -47 | 1e-47 |
| 102 | [-21, 56, 13, -88, 42] | 56 | 1e+56 |
| 103 | [90, -33, 7, 51, -62, 18] | -33 | 1e-33 |
Example 5: Negative base and literal integer exponent
Goal: Calculate the power of a negative base number.
XQL code:
config timeframe = 1d | dataset = sample_xql_raw | alter pow_negative_base = pow(-5, 3) | fields event_id, pow_negative_base | limit 3
Explanation: This calculates -5 multiplied by itself three times (-5 -5 -5), resulting in -125. The result is consistently -125 across records as the inputs are literals.
Output:
| EVENT_ID | POW_NEGATIVE_BASE |
|---|---|
| 101 | -125 |
| 102 | -125 |
| 103 | -125 |
Example 6: Field base and zero exponent
Goal: Demonstrate the mathematical rule that any non-zero number raised to the power of zero equals one.
XQL code:
config timeframe = 1d | dataset = sample_xql_raw | alter zero_exponent_result = pow(event_id, 0) | fields event_id, zero_exponent_result | limit 3
Explanation: Regardless of the event_id value (as long as it's non-zero), pow(<number>, 0) will always return 1, following standard mathematical rules.
Output:
| EVENT_ID | ZERO_EXPONENT_RESULT |
|---|---|
| 101 | 1 |
| 102 | 1 |
| 103 | 1 |
Example 7: Extracting from JSON and applying pow
Goal: Extract a numeric value from JSON data and use it as the base for a power calculation.
XQL code:
config timeframe = 1d | dataset = sample_xql_raw | filter simple_json_data != null | alter json_code_string = simple_json_data -> code | alter json_numeric_value = to_number(json_code_string) | alter code_to_power_of_two = pow(json_numeric_value, 2) | fields event_id, simple_json_data, json_numeric_value, code_to_power_of_two | limit 3
Explanation: This query first extracts the code value (for example, "200") from the simple_json_data field as a string. The query then converts this string to a number using to_number() and applies pow() with a literal exponent, storing the result in code_to_power_of_two.
Output:
| EVENT_ID | SIMPLE_JSON_DATA | JSON_NUMERIC_VALUE | CODE_TO_POWER_OF_TWO |
|---|---|---|---|
| 101 | {"status": "ok", "code": 200} | 200 | 40000 |