Use the `csc()` function to calculate the cosecant of a numeric value specified in radians. The cosecant is the reciprocal of the sine function.
## Syntax
```sql
csc(<numeric_expression>)
```
## Parameters
| Name | Type | Required | Description |
| -------------------- | -------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `numeric_expression` | integer, float | Yes | The angle in radians for which to calculate the cosecant. The value must not be zero or a multiple of π. |
## Returns
**Type**: float
**Description**: The `csc()` function returns the cosecant of the input angle, which is equivalent to `1 / sin(x)`. If the input is `null`, the function returns `null`.
## Usage notes
* **Input type**: XQL doesn't support NaN or infinite values as input and these value types also can not be returned.
* **Valid Input Range**: The `csc()` function accepts any real number except values where `sin(x) = 0` (i.e., multiples of π, including zero), where the cosecant is undefined.
* **Undefined Values**: At `x = 0` and multiples of π, the function returns `infinity`, `NaN`, or `null` since the cosecant is undefined at these points.
* **Null Handling**: If the input expression is `null`, the function returns `null`.
* **Relationship**: `csc(x) = 1 / sin(x)`.
* **Result Range**: The result is always ≤ -1 or ≥ 1 (never between -1 and 1).
* **Common Use Cases**: This function is typically used within the `alter` stage for trigonometric calculations, wave analysis, and engineering computations.
## Examples
### Example 1: Calculate cosecant of literal values
**Goal**: Calculate the cosecant for specific radian values to verify known mathematical results.
**XQL code**:
```sql
dataset = xdr_data
| limit 1
| alter result1 = csc(divide(pi(), 2)), result2 = csc(divide(pi(), 6)), result3 = csc(1)
| fields result1, result2, result3
```
**Explanation**: You use `csc()` on three different radian values. `csc(π/2)` returns `1.0` (since `sin(π/2) = 1`), `csc(π/6)` returns `2.0` (since `sin(π/6) = 0.5`), and `csc(1)` returns approximately `1.1884`.
**Output**:
| RESULT1 | RESULT2 | RESULT3 |
| ------- | ------- | ------- |
| 1.0 | 2.0 | 1.18840 |
### Example 2: Calculate cosecant from a field value
**Goal**: Calculate the cosecant of values stored in a dataset field, filtering out values near zero.
**XQL code**:
```sql
config timeframe = 1d
| dataset = sample_xql_raw
| filter numeric_value != 0
| alter csc_val = csc(numeric_value)
| fields event_id, numeric_value, csc_val
| limit 3
```
**Explanation**: This query filters out zero values (where cosecant is undefined), then computes the cosecant for each remaining value in the `numeric_value` field.
**Output**:
| EVENT\_ID | NUMERIC\_VALUE | CSC\_VAL |
| --------- | -------------- | -------- |
| 101 | 0.5 | 2.08583 |
| 102 | 1.0 | 1.18840 |
| 103 | 1.5708 | 1.0 |
### Example 3: Verify cosecant as reciprocal of sine
**Goal**: Demonstrate that `csc(x)` equals `1 / sin(x)` by computing both and comparing.
**XQL code**:
```sql
config timeframe = 1d
| dataset = sample_xql_raw
| filter numeric_value != 0
| alter csc_val = csc(numeric_value)
| alter reciprocal_sin = divide(1, sin(numeric_value))
| fields event_id, numeric_value, csc_val, reciprocal_sin
| limit 3
```
**Explanation**: This query computes both `csc(numeric_value)` and `1 / sin(numeric_value)` to verify they produce the same result, confirming the mathematical identity `csc(x) = 1 / sin(x)`.
**Output**:
| EVENT\_ID | NUMERIC\_VALUE | CSC\_VAL | RECIPROCAL\_SIN |
| --------- | -------------- | -------- | --------------- |
| 101 | 0.5 | 2.08583 | 2.08583 |
| 102 | 1.0 | 1.18840 | 1.18840 |
| 103 | 1.5708 | 1.0 | 1.0 |
## Related articles
* **Stages**: [`alter`](../stages/alter), [`filter`](../stages/filter), [`fields`](../stages/fields), [`limit`](../stages/limit)
* **Functions**: [`sin()`](sin), [`sec()`](sec), `csch()`, [`cot()`](cot)
* **Datasets**: [`xdr_data`](https://docs-cortex.paloaltonetworks.com/r/Cortex-XQL-Schema-Reference-Guide/Introduction)