Overview
The Power BI - Catalog Custom Fields set adds a Power BI section to the Validatar catalog at schema, table and column level: 26 fields that hold what Power BI knows about each object. A model table shows its storage mode and whether it is hidden; a measure shows its state and home table; a semantic model shows whether it enforces row-level security and who configured it; every item carries its Power BI ID and a link back to it.
The Power BI Service Data Source Template fills the fields during metadata ingestion. Nothing else writes to them.
Marketplace: Power BI - Catalog Custom Fields
Shown only on Power BI data sources
Each of the three sections has a visibility rule: it shows only on objects of data sources built from the Power BI Service data source template. A Snowflake table or a Windows Directory file never shows an empty Power BI section. The rule names the template, so import the template before this field set; imported the other way round, the rule has no template to point at.
Fields
| Level | Field | Reference key | Type |
|---|---|---|---|
| Schema | Power BI Schema Kind | pbi_schema_kind |
Dropdown: Workspaces, Semantic Models, Model, Reports, Dashboards |
| Schema | Schema Workspace ID | pbi_schema_workspace_id |
Short text |
| Schema | Workspace Capacity | pbi_schema_capacity |
Dropdown: Dedicated, Shared |
| Table | Power BI Item Type | pbi_item_type |
Dropdown: Workspace, Semantic Model, Model Table, Measures, Report, Paginated Report, Dashboard |
| Table | Power BI Item ID | pbi_item_id |
Short text |
| Table | Workspace ID | pbi_workspace_id |
Short text |
| Table | Power BI Link | pbi_web_url |
Short text |
| Table | Configured By | pbi_owner |
Short text |
| Table | Created | pbi_created |
Short text |
| Table | Storage Mode | pbi_storage_mode |
Short text |
| Table | Row-Level Security | pbi_rls_required |
Dropdown: Yes, No |
| Table | Refreshable | pbi_refreshable |
Dropdown: Yes, No |
| Table | Semantic Model | pbi_semantic_model |
Short text |
| Table | Table Hidden | pbi_table_hidden |
Dropdown: Yes, No |
| Column | Power BI Field Kind | pbi_field_kind |
Dropdown: Column, Calculated Column, Measure, Page, Tile |
| Column | Field Hidden | pbi_field_hidden |
Dropdown: Yes, No |
| Column | Key | pbi_field_is_key |
Dropdown: Yes, No |
| Column | Unique | pbi_field_is_unique |
Dropdown: Yes, No |
| Column | Data Category | pbi_field_data_category |
Short text |
| Column | Format String | pbi_field_format |
Short text |
| Column | Display Folder | pbi_field_display_folder |
Short text |
| Column | Summarize By | pbi_field_summarize_by |
Short text |
| Column | Sort By Column | pbi_field_sort_by |
Short text |
| Column | Measure State | pbi_field_state |
Short text |
| Column | Home Table | pbi_field_home_table |
Short text |
| Column | Page or Tile ID | pbi_field_item_id |
Short text |
Validatar requires a custom field's name and reference key to be unique across all catalog levels, which is why the schema-level workspace field is Schema Workspace ID and the two hidden flags are Table Hidden and Field Hidden.
What fills each field
Ingestion writes a value only where Power BI has one, so most objects fill some of their level's fields and leave the rest blank.
| Catalog object | Fields filled |
|---|---|
| Any schema | Power BI Schema Kind. Per-workspace schemas also get Schema Workspace ID and Workspace Capacity |
A workspace (table under Workspaces) |
Power BI Item Type, Power BI Item ID, Workspace ID, Power BI Link |
A semantic model (table under Semantic Models:) |
Item type, ID, workspace, link, Configured By, Created, Row-Level Security, Refreshable, and Storage Mode when model contents were ingested |
A model table (table under Model:) |
Item type, Workspace ID, Semantic Model, Storage Mode, Table Hidden |
The (Measures) table |
Item type, Workspace ID, Semantic Model |
| A report or paginated report | Item type, ID, workspace, link, and Semantic Model (the model it is bound to) |
| A dashboard | Item type, ID, workspace, link |
| A model column | Field Kind (Column or Calculated Column), Field Hidden, Key, Unique, Data Category, Format String, Display Folder, Summarize By, Sort By Column |
A measure (column of (Measures)) |
Field Kind, Field Hidden, Display Folder, Measure State, Home Table |
| A report page or dashboard tile | Field Kind, and Page or Tile ID (the page's internal name or the tile's ID) |
Table and column descriptions from the model go to Validatar's own Description field, not to this set.
Some values depend on how the template read the model:
- Workspace Capacity says Dedicated for Premium Per User workspaces too, because Power BI reports them that way. Premium Per User still cannot export, so the template's rendering checks cannot run there.
- Measure State is the engine's state, such as Valid or InvalidExpression, when the model was read with DAX. For a model with row-level security read from its definition, every measure shows Valid and Unique is blank, because the definition does not record either.
- Format String for measures is blank when the model was read with DAX; the
INFO.VIEWfunctions do not return it.
Installation
- Import the Power BI Service Data Source Template first, if you have not already.
- Open Marketplace in Validatar, find Power BI - Catalog Custom Fields and choose Get, then Import Directly. Validatar adds the three sections under Settings > Custom Fields for the catalog.
- Run metadata ingestion on your Power BI data source, or run it again if it ran before the import. Values for fields that did not exist at ingestion time were dropped and are filled on the next run.
To install from a file instead, download the XML from the marketplace listing and import it on the Settings > Custom Fields page.
Using the fields
- In template tests. Filter a template test on Power BI Item Type to run it only over model tables, or on Row-Level Security = No to leave out models a service principal cannot query.
- In the catalog. Power BI Link opens the item in Power BI, Measure State finds broken measures without running a test, and Configured By tells you whose credentials a failed refresh used.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The Power BI section is empty after ingestion | The fields were imported after the last ingestion | Run ingestion again |
| The Power BI section does not show on a Power BI data source | The field set was imported before the template, so its rule names no template | Re-import the field set, or edit each section's visibility rule under Settings > Custom Fields to name Power BI Service |
| Import reports a field name already exists | Another set already uses one of these names or keys | Rename or remove the clashing field, then import again |