Power BI · Schema

Power BI Dataset

Schema for a Power BI dataset resource as returned by the Power BI REST API. A dataset represents the data model that underpins reports and dashboards, including tables, columns, measures, relationships, and data source configuration.

AnalyticsBusiness IntelligenceDashboardsData AnalysisReportingVisualization

Properties

Name Type Description
id string The unique identifier of the dataset, assigned by the Power BI service
name string The display name of the dataset
addRowsAPIEnabled boolean Whether the dataset supports the push rows API for real-time data ingestion
configuredBy string The email address of the user who configured or last modified the dataset
isRefreshable boolean Whether the dataset supports scheduled or on-demand refresh
isEffectiveIdentityRequired boolean Whether an effective identity (row-level security identity) is required when generating embed tokens
isEffectiveIdentityRolesRequired boolean Whether RLS role specification is required in effective identity for embed tokens
isOnPremGatewayRequired boolean Whether the dataset requires an on-premises data gateway to connect to its data sources
targetStorageMode string The storage mode that determines how data is stored and queried
defaultMode string The default mode for push datasets
createdDate string The UTC date and time when the dataset was first created
contentProviderType string The type of content provider that generated this dataset
createReportEmbedURL string The URL to create an embedded report connected to this dataset
qnaEmbedURL string The URL for the Q&A natural language embedded experience
webUrl string The web URL for accessing the dataset in the Power BI service
tables array The tables that make up the dataset schema
relationships array The relationships between tables in the dataset model
datasources array The data sources used by the dataset
View JSON Schema on GitHub

JSON Schema

power-bi-dataset-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://learn.microsoft.com/schemas/power-bi/dataset.json",
  "title": "Power BI Dataset",
  "description": "Schema for a Power BI dataset resource as returned by the Power BI REST API. A dataset represents the data model that underpins reports and dashboards, including tables, columns, measures, relationships, and data source configuration.",
  "type": "object",
  "required": ["name", "tables"],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The unique identifier of the dataset, assigned by the Power BI service"
    },
    "name": {
      "type": "string",
      "description": "The display name of the dataset",
      "minLength": 1,
      "maxLength": 256
    },
    "addRowsAPIEnabled": {
      "type": "boolean",
      "description": "Whether the dataset supports the push rows API for real-time data ingestion",
      "default": false
    },
    "configuredBy": {
      "type": "string",
      "description": "The email address of the user who configured or last modified the dataset"
    },
    "isRefreshable": {
      "type": "boolean",
      "description": "Whether the dataset supports scheduled or on-demand refresh",
      "default": false
    },
    "isEffectiveIdentityRequired": {
      "type": "boolean",
      "description": "Whether an effective identity (row-level security identity) is required when generating embed tokens",
      "default": false
    },
    "isEffectiveIdentityRolesRequired": {
      "type": "boolean",
      "description": "Whether RLS role specification is required in effective identity for embed tokens",
      "default": false
    },
    "isOnPremGatewayRequired": {
      "type": "boolean",
      "description": "Whether the dataset requires an on-premises data gateway to connect to its data sources",
      "default": false
    },
    "targetStorageMode": {
      "type": "string",
      "description": "The storage mode that determines how data is stored and queried",
      "enum": ["Import", "DirectQuery", "Dual", "PushDataset"]
    },
    "defaultMode": {
      "type": "string",
      "description": "The default mode for push datasets",
      "enum": ["Push", "Streaming", "PushStreaming"]
    },
    "createdDate": {
      "type": "string",
      "format": "date-time",
      "description": "The UTC date and time when the dataset was first created"
    },
    "contentProviderType": {
      "type": "string",
      "description": "The type of content provider that generated this dataset"
    },
    "createReportEmbedURL": {
      "type": "string",
      "format": "uri",
      "description": "The URL to create an embedded report connected to this dataset"
    },
    "qnaEmbedURL": {
      "type": "string",
      "format": "uri",
      "description": "The URL for the Q&A natural language embedded experience"
    },
    "webUrl": {
      "type": "string",
      "format": "uri",
      "description": "The web URL for accessing the dataset in the Power BI service"
    },
    "tables": {
      "type": "array",
      "description": "The tables that make up the dataset schema",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/Table"
      }
    },
    "relationships": {
      "type": "array",
      "description": "The relationships between tables in the dataset model",
      "items": {
        "$ref": "#/$defs/Relationship"
      }
    },
    "datasources": {
      "type": "array",
      "description": "The data sources used by the dataset",
      "items": {
        "$ref": "#/$defs/Datasource"
      }
    }
  },
  "$defs": {
    "Table": {
      "type": "object",
      "description": "A table in the Power BI dataset model, containing columns, measures, and optionally rows for push datasets",
      "required": ["name", "columns"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the table, used in DAX expressions and API references",
          "minLength": 1,
          "maxLength": 256
        },
        "columns": {
          "type": "array",
          "description": "The columns defined in this table",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/Column"
          }
        },
        "rows": {
          "type": "array",
          "description": "Data rows in the table (used for push datasets)",
          "items": {
            "type": "object"
          }
        },
        "measures": {
          "type": "array",
          "description": "DAX measures defined on this table",
          "items": {
            "$ref": "#/$defs/Measure"
          }
        },
        "isHidden": {
          "type": "boolean",
          "description": "Whether the table is hidden from report authors",
          "default": false
        }
      }
    },
    "Column": {
      "type": "object",
      "description": "A column in a dataset table",
      "required": ["name", "dataType"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The column name used in DAX expressions",
          "minLength": 1,
          "maxLength": 256
        },
        "dataType": {
          "type": "string",
          "description": "The data type of the column values",
          "enum": ["Int64", "Double", "Boolean", "Datetime", "String", "Decimal"]
        },
        "formatString": {
          "type": "string",
          "description": "A format string controlling how column values are displayed (e.g. '#,##0.00' for numbers)"
        },
        "sortByColumn": {
          "type": "string",
          "description": "The name of another column used to sort this column's values"
        },
        "dataCategory": {
          "type": "string",
          "description": "The data category providing semantic meaning to the column (e.g. Address, City, Country)"
        },
        "isHidden": {
          "type": "boolean",
          "description": "Whether the column is hidden from report authors",
          "default": false
        },
        "summarizeBy": {
          "type": "string",
          "description": "The default aggregation function for the column",
          "enum": ["sum", "count", "distinctCount", "min", "max", "average", "none"]
        }
      }
    },
    "Measure": {
      "type": "object",
      "description": "A DAX measure defined on a dataset table",
      "required": ["name", "expression"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The display name of the measure",
          "minLength": 1,
          "maxLength": 256
        },
        "expression": {
          "type": "string",
          "description": "The DAX expression that defines the measure calculation",
          "minLength": 1
        },
        "formatString": {
          "type": "string",
          "description": "A format string controlling how the measure value is displayed"
        },
        "description": {
          "type": "string",
          "description": "A description of what the measure calculates"
        },
        "isHidden": {
          "type": "boolean",
          "description": "Whether the measure is hidden from report authors",
          "default": false
        }
      }
    },
    "Relationship": {
      "type": "object",
      "description": "A relationship between two tables in the dataset model",
      "required": ["name", "fromTable", "fromColumn", "toTable", "toColumn"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The unique name of the relationship"
        },
        "fromTable": {
          "type": "string",
          "description": "The name of the source (many-side) table"
        },
        "fromColumn": {
          "type": "string",
          "description": "The name of the column in the source table"
        },
        "toTable": {
          "type": "string",
          "description": "The name of the target (one-side) table"
        },
        "toColumn": {
          "type": "string",
          "description": "The name of the column in the target table"
        },
        "crossFilteringBehavior": {
          "type": "string",
          "description": "The cross-filtering direction for the relationship",
          "enum": ["OneDirection", "BothDirections", "Automatic"],
          "default": "OneDirection"
        }
      }
    },
    "Datasource": {
      "type": "object",
      "description": "A data source used by the dataset",
      "properties": {
        "datasourceType": {
          "type": "string",
          "description": "The type of data source (e.g. Sql, AnalysisServices, File, Web)"
        },
        "connectionDetails": {
          "type": "object",
          "description": "Connection details for the data source",
          "properties": {
            "server": {
              "type": "string",
              "description": "The server address"
            },
            "database": {
              "type": "string",
              "description": "The database name"
            },
            "url": {
              "type": "string",
              "format": "uri",
              "description": "The connection URL for web-based data sources"
            },
            "path": {
              "type": "string",
              "description": "The file path for file-based data sources"
            }
          }
        },
        "datasourceId": {
          "type": "string",
          "format": "uuid",
          "description": "The unique identifier of the bound data source"
        },
        "gatewayId": {
          "type": "string",
          "format": "uuid",
          "description": "The gateway identifier if using an on-premises data gateway"
        }
      }
    }
  }
}