Skip to main content

Accessing fields with special characters

Problem / Use case

You want to access fields with special characters such as periods (.), dashes (-), spaces ( ), or emojis, etc...

Solution - $d

You usually don’t need to use $d to access data fields in DataPrime. It’s the default namespace, so fields like status_code are automatically interpreted as $d.status_code.

But in these cases with special characters using $d is required.

1. Field names with dots

If your field name includes a dot (.), DataPrime treats it as a nested path unless you use bracket notation. This can lead to unexpected behavior.

For example:

{
"kubernetes.namespace": "dev",
"kubernetes": {
"namespace": "prod"
}
}

To access the field with a literal dot in the name (kubernetes.namespace), use:

$d['kubernetes.namespace']

result

"dev"

To access the nested field inside the kubernetes object (kubernetes.namespace), use:

$d['kubernetes']['namespace']

result

"prod"

2. Field names with spaces

Dot notation doesn’t support spaces. Use bracket notation:

choose $d['Total Salary']

3. Field names with emojis or non-ASCII characters

Fields with special characters require brackets:

create face from case_equals {
$m.severity,
DEBUG -> '🧐',
VERBOSE -> '😶‍🌫️',
INFO -> '🙂',
WARNING -> '😬',
ERROR -> '😩',
CRITICAL -> '💀',
_ -> '🤷'
}
| countby face as $d['🙂'] into $d['# of times I made this face']

Output:

"🙂""# of times I made this face"
💀17275
😩55821
😬13084
😶‍🌫️318376
🙂2958063
🧐3727783
Last updated on