# `QuackDB.Profile.Operator`
[🔗](https://github.com/elixir-vibe/quackdb/blob/main/lib/quack_db/profile.ex#L1)

A DuckDB plan or profiling operator node.

Plans from `QuackDB.Profile.explain/4` carry `name` and `extra_info`.
Profiles from `QuackDB.Profile.analyze/4` also carry the operator `type`,
its `timing` in seconds, and row counts.

# `t`

```elixir
@type t() :: %QuackDB.Profile.Operator{
  children: [t()],
  extra_info: %{required(String.t()) =&gt; term()},
  intermediate_rows: non_neg_integer() | nil,
  intermediate_size_bytes: non_neg_integer() | nil,
  name: String.t() | nil,
  row_groups_scanned: non_neg_integer() | nil,
  rows_scanned: non_neg_integer() | nil,
  timing: number() | nil,
  total_row_groups_to_scan: non_neg_integer() | nil,
  type: String.t() | nil
}
```

# `decode`

Decodes a JSON string into this struct.

# `decode!`

Decodes a JSON string into this struct, raising on failure.

# `dump`

Dumps this struct into JSON-shaped data, respecting JSON field names.

# `from_map`

Builds this struct from a decoded JSON map.

# `from_map!`

Builds this struct from a decoded JSON map, raising on failure.

# `schema`

Returns a JSON Schema-compatible schema map.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
