Skip to main content
Discover the Workspace catalog before assuming that a Provider, stream, artifact, Parable, or Plot exists. SQL clients can use standard Flight SQL metadata; Workspace API clients can request the richer semantic catalog. To find which tables and columns hold some data without listing everything, search with search_available_data. Artifact metadata includes the namespace in schemaName; use it with catalog and logicalName to form the address. Discovery lists each publication namespace’s active revision; a request that selects another revision lists that revision’s tables instead.

Search by what the data holds

search_available_data ranks the tables, columns, and struct fields of the Workspace Pool and the Provider Pool against a plain-language query, by keyword and, where semantic ranking is configured, by meaning, and returns names ready to paste into a query. It searches only the pools your role reaches:
It runs in interactive queries only; a Plot cannot call it.

Browse the Data Catalog

In the Workspace app, open Catalog. The list on the left groups every table you can query: Providers by connector, then Artifacts by namespace. Search matches table names, SQL names, and column names. Select a table to see its description, its SQL name with a Copy button, its row count, size, the time its data runs through, its latest quality result, and its columns. The page keeps the selected table in the address (?table=), so a link opens it. A column with a semantic scalar shows the scalar’s name, such as Email for Contact.Email, and its description on hover; other columns show their kind of value, such as Text, Number, or Date and time. information_schema.columns returns the exact SQL types. The row-state columns Parable adds to every Provider table, dt and the _parable_* columns described in Read row state, are hidden until you turn on Show system columns. They are always queryable. Each table’s row count, size, freshness, and latest quality result fill in after the table list appears. Child tables, which hold the items of a Provider record’s lists, show their own row count; quality results belong to a Tap’s main table.

Query information_schema

Any SQL client can list tables and columns with information_schema:
Both list only the pools your role reaches. A Plot can read information_schema too, as information_schema.columns or under a pool, such as providers.information_schema.columns. The pool segment does not narrow the rows: every form lists the same pools, so filter on table_catalog. A Plot cannot use parables.information_schema. A Plot cannot output an unsigned integer column, such as ordinal_position or numeric_precision in information_schema.columns: the Plot validator accepts it, and Prepare refuses it. Cast the column to BIGINT, as in CAST(ordinal_position AS BIGINT), or filter and sort on it without selecting it.

Use Flight SQL metadata

SQL tools such as DBeaver call the standard Flight SQL metadata operations to fill their database navigator. A Flight SQL client can call them directly:

Use the semantic catalog

The semantic catalog exposes the same logical tables through the Workspace API, with Parable-specific ownership and annotations. Use the SDK for your language:
Use Flight SQL metadata when a generic SQL or BI client needs structural discovery. Use the semantic catalog when an application needs Provider annotations, table kinds, source versions, or semantic scalar names. Each field carries system: true when it is a row-state column Parable adds rather than one of the Provider’s own fields. catalogV2.tableStats returns each Provider table’s row count, size, latest quality result, and freshness, keyed by the same catalog, schema, and table names. Child tables carry their own row counts; quality results belong to a Tap’s main table. A value no measurement has produced yet is null. The counts come from the maintenance run after each load, so a table loaded since then can hold more rows than it reports until the next run.

Check whether a table has rows

A declared table may be empty. Once discovery confirms its name, check it with a bounded query:
An empty result is different from a missing table: empty tables still have a discoverable schema.