## 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:

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

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

```dataprime
$d['kubernetes.namespace']
```

**result**

```json
"dev"
```

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

```dataprime
$d['kubernetes']['namespace']
```

**result**

```json
"prod"
```

### 2. Field names with spaces

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

```dataprime
choose $d['Total Salary']
```

### 3. Field names with emojis or non-ASCII characters

Fields with special characters require brackets:

```dataprime
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                       |
