Skip to 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