Power BI Power BI
Level-500-Referenz zu Power BI Service, Desktop, DAX, Gateway, Sicherheit, Governance, REST API, PowerShell und externen Tabular-Werkzeugen. Level 500 reference for Power BI Service, Desktop, DAX, gateway, security, governance, REST API, PowerShell, and external tabular tools.
Ein belastbares Power-BI-Programm entsteht erst, wenn Semantikmodell, Kapazität, Berechtigungen, Gateway, Deployment-Pipeline und API-Automatisierung gemeinsam entworfen werden. A resilient Power BI program appears only when the semantic model, capacity, permissions, gateway, deployment pipeline, and API automation are designed together.
Artefakte, Arbeitsbereiche, Kapazitäten Artifacts, workspaces, capacities
Modellierung, Measures, Query Folding Modeling, measures, query folding
RLS, OLS, Incremental Refresh RLS, OLS, incremental refresh
Tenant Settings, Audit, Scanner API Tenant settings, audit, Scanner API
On-premises Datenzugriff und SSRS-Migration On-premises access and SSRS migration
Power BI Service und Kapazitätsarchitektur Power BI service and capacity architecture
Power BI Service trennt Artefaktlebenszyklus, Rechenkapazität und Vertriebsmodell. Workspaces sind Sicherheits- und Veröffentlichungscontainer, Apps sind kuratierte Distributionen, und Semantikmodelle bilden die wiederverwendbare Datenebene für Berichte, Dashboards, Excel und eingebettete Analysen. Power BI Service separates artifact lifecycle, compute capacity, and commercial model. Workspaces are security and publishing containers, apps are curated distributions, and semantic models provide the reusable data layer for reports, dashboards, Excel, and embedded analytics.
In Fabric-Szenarien muss zusätzlich zwischen Power-BI-Artefakten und OneLake-basierten Artefakten unterschieden werden. Governance-relevante Fragen betreffen daher nicht nur Freigabe und Export, sondern auch XMLA-Endpunkte, Git-Integration, Deployment-Pipelines und tenantweite Sicherheitssteuerungen. In Fabric scenarios you must additionally distinguish between Power BI artifacts and OneLake-based artifacts. Governance questions therefore involve not only sharing and export, but also XMLA endpoints, Git integration, deployment pipelines, and tenant-wide security controls.
| Artefakt Artifact | Rolle Role | Wichtige Eigenschaften Key properties | Betriebshinweis Operational note |
|---|---|---|---|
| Workspace Workspace | Zusammenarbeit und Bereitstellung Collaboration and publishing | Rollen: Admin, Member, Contributor, Viewer Roles: Admin, Member, Contributor, Viewer | Kapazität und Bereitstellungspipeline immer pro Workspace planen Always plan capacity and deployment pipeline per workspace |
| App App | Kuratiertes Konsumer-Paket Curated consumer package | Mehrere Zielgruppen, Navigation, Audience targeting Multiple audiences, navigation, audience targeting | App trennt Konsum von Bearbeitungsrechten App separates consumption from edit permissions |
| Dashboard Dashboard | Pinning und KPI-Oberfläche Pinning and KPI surface | Unterstützt Alerts und Q&A Tiles Supports alerts and Q&A tiles | Nur im Service; kein Primärmodellierungsartefakt Service-only; not a primary modeling artifact |
| Report Report | Interaktive Visualisierung Interactive visualization | Seiten, Visuals, Drillthrough, Bookmarks Pages, visuals, drillthrough, bookmarks | Live Connect, Import, DirectQuery und Composite Models verstehen Understand live connect, import, DirectQuery, and composite models |
| Semantic Model Semantic model | Zentrale Business-Logik Central business logic | Tabellen, Beziehungen, Measures, RLS, OLS Tables, relationships, measures, RLS, OLS | Star Schema und saubere Measures vor Visual-Optimierung priorisieren Prioritize star schema and clean measures before visual tuning |
| Dataflow Gen1 Dataflow Gen1 | Power Query im Service Power Query in the service | Entitätsspeicher, Refresh, Gateway Entity storage, refresh, gateway | Für klassische ETL-Muster weiterhin relevant Still relevant for classic ETL patterns |
| Dataflow Gen2 Dataflow Gen2 | Fabric ETL und Lake-Ziel Fabric ETL and lake destination | OneLake-Ziel, Pipelines, Compute OneLake destination, pipelines, compute | Mit Fabric-Kapazität und Datenproduktstrategie abstimmen Align with Fabric capacity and data product strategy |
| Datamart Datamart | Self-Service SQL-Oberfläche Self-service SQL surface | Automatisch generiertes Warehouse und Dataset Auto-generated warehouse and dataset | Für Fachbereichsprototypen gut, aber Governance klar regeln Useful for business prototypes, but define governance clearly |
| Deployment Pipeline Deployment pipeline | Dev/Test/Prod-Förderung Dev/Test/Prod promotion | Stages, Regeln, Deployment notes Stages, rules, deployment notes | Verknüpfte Datenquellen und Parameter pro Stage prüfen Validate bound data sources and parameters per stage |
| Embedded Analytics Embedded analytics | Einbettung in eigene Apps Embedding into custom apps | App owns data vs user owns data App owns data vs user owns data | Kapazität, Token-Lebensdauer und Tenant-Settings gemeinsam designen Design capacity, token lifetime, and tenant settings together |
| Lizenzmodell Licensing model | Typischer Einsatz Typical usage | Stärken Strengths | Grenzen Limits |
|---|---|---|---|
| Power BI Pro Power BI Pro | Zusammenarbeit in kleineren Teams Collaboration in smaller teams | Teilen, Apps, Workspaces, Refresh Sharing, apps, workspaces, refresh | Konsumenten ohne Premium benötigen ebenfalls Pro Consumers without Premium also need Pro |
| Premium Per User Premium Per User | Einzelne Power User mit Premium-Funktionen Individual power users with premium features | Paginated Reports, AI, Deployment Pipelines, XMLA RW Paginated reports, AI, deployment pipelines, XMLA RW | Freigabe an reine Pro-Nutzer eingeschränkt Sharing to pure Pro users is limited |
| Premium Per Capacity Premium Per Capacity | Unternehmensweite Verteilung Enterprise-wide distribution | Kapazitätssteuerung, Free-Konsumenten, Isolation Capacity control, free consumers, isolation | Kapazitätsmanagement und SKU-Sizing notwendig Capacity management and SKU sizing are required |
| Fabric Capacity Fabric capacity | Power BI plus Data Engineering und Warehouse Power BI plus data engineering and warehouse | OneLake, Lakehouse, Warehouse, Data Factory Gen2 OneLake, lakehouse, warehouse, Data Factory Gen2 | Shared capacity-Verhalten und Bursting verstehen Understand shared capacity behavior and bursting |
| Embedded A/EM/P SKU Embedded A/EM/P SKU | ISV und App-Einbettung ISV and app embedding | Dedizierte Einbettungskapazität Dedicated embedding capacity | Separates Kostenmodell und Auth-Design erforderlich Separate cost model and auth design required |
Install-Module MicrosoftPowerBIMgmt -Scope CurrentUser
Connect-PowerBIServiceAccount
$workspace = Get-PowerBIWorkspace -Name "Finance-Prod"
Get-PowerBIReport -WorkspaceId $workspace.Id |
Select-Object Name, Id, DatasetId
Get-PowerBIDataset -WorkspaceId $workspace.Id |
Select-Object Name, ConfiguredBy, IsRefreshable, AddRowsAPIEnabled
| Cmdlet Cmdlet | Wofür What for | Wichtige Parameter Important parameters | Hinweis Note |
|---|---|---|---|
| Connect-PowerBIServiceAccount Connect-PowerBIServiceAccount | Interaktive oder Service-Principal-Anmeldung Interactive or service principal sign-in | ServicePrincipal, Tenant, Credential, CertificateThumbprint ServicePrincipal, Tenant, Credential, CertificateThumbprint | Für Automatisierung möglichst App-Registrierung verwenden Prefer an app registration for automation |
| Get-PowerBIWorkspace Get-PowerBIWorkspace | Workspaces inventarisieren Inventory workspaces | All, Scope, Name All, Scope, Name | Scope Organization benötigt Adminrechte Scope Organization requires admin rights |
| Get-PowerBIReport Get-PowerBIReport | Reports je Workspace lesen Read reports per workspace | WorkspaceId, Id, Scope WorkspaceId, Id, Scope | Mit Dataset-Informationen korrelieren Correlate with dataset information |
| Get-PowerBIDataset Get-PowerBIDataset | Semantikmodelle inventarisieren Inventory semantic models | WorkspaceId, Scope WorkspaceId, Scope | Refreshability und Owner prüfen Review refreshability and owner |
| Invoke-PowerBIRestMethod Invoke-PowerBIRestMethod | Nicht abgedeckte REST-APIs nutzen Use REST APIs not covered by cmdlets | Url, Method, Body, ContentType Url, Method, Body, ContentType | Für Scanner API und Admin-Endpunkte essenziell Essential for Scanner API and admin endpoints |
Power BI Desktop, Datenmodellierung, DAX und Power Query M Power BI Desktop, data modeling, DAX, and Power Query M
Power BI Desktop ist gleichzeitig Modellierungswerkzeug, Abfrageeditor und Berichtsentwurfsumgebung. Das Level-500-Thema ist weniger die Bedienung der Oberfläche als die Trennung von Power Query für Datenerfassung, Tabular Model für Semantik und Visual Layer für Konsum. Power BI Desktop is simultaneously a modeling tool, query editor, and report design environment. At level 500 the focus is less on using the interface and more on separating Power Query for ingestion, the tabular model for semantics, and the visual layer for consumption.
Star-Schema, eindeutige Körnung, surrogate Keys, eine saubere Date-Dimension und konsistente Measures sind die Grundlage für Performance und korrekte Berechnungen. Calculated Columns materialisieren Werte zeilenweise, Measures reagieren auf Filterkontext und sollten Geschäftslogik bevorzugt abbilden. Star schema, explicit grain, surrogate keys, a clean date dimension, and consistent measures are the basis for performance and correct calculations. Calculated columns materialize values row by row, while measures react to filter context and should be the preferred home for business logic.
| Designbereich Design area | Empfehlung Recommendation | Warum Why | Typische Falle Common pitfall |
|---|---|---|---|
| Beziehungen Relationships | Einfach gerichtete Sternbeziehungen bevorzugen Prefer single-direction star relationships | Reduziert Ambiguität und verbessert DAX-Lesbarkeit Reduces ambiguity and improves DAX readability | Bidirektionale Filterung als Schnelllösung missbrauchen Using bidirectional filtering as a shortcut |
| Calculated Columns Calculated columns | Nur für Slicer-Attribute, Gruppierung oder Sortierung Use only for slicer attributes, grouping, or sorting | Wird beim Refresh berechnet und belegt Speicher Calculated at refresh time and consumes memory | Measures in berechnete Spalten duplizieren Duplicating measure logic in calculated columns |
| Measures Measures | Geschäftslogik immer zentralisieren Centralize business logic | Wiederverwendung über Reports und Excel hinweg Reusable across reports and Excel | Kennzahlen direkt im Visual definieren Defining metrics directly in visuals |
| Dimensionen Dimensions | Conformed Dimensions für mehrere Fakten Use conformed dimensions across facts | Vergleichbarkeit über Domänen hinweg Enables comparability across domains | Jede Faktentabelle mit eigener Datumstabelle Giving every fact table its own date table |
| Incremental Refresh Incremental refresh | Archive plus Rolling Window definieren Define archive plus rolling window | Verkürzt Refresh und nutzt Partitionslogik Shortens refresh and uses partition logic | RangeStart und RangeEnd nicht foldbar RangeStart and RangeEnd not foldable |
| Composite Models Composite models | Import für heiße Daten, DirectQuery für Detailtiefe Use import for hot data and DirectQuery for detail depth | Balanciert Performance und Frische Balances performance and freshness | Zu viele DirectQuery-Quellen in einem Modell Too many DirectQuery sources in one model |
| Calculation Groups Calculation groups | Zeitintelligenz und Formatauswahl zentralisieren Centralize time intelligence and format selection | Reduziert Measure-Sprawl Reduces measure sprawl | Ungeprüfte Wechselwirkung mit impliziten Measures Unchecked interaction with implicit measures |
| Object-Level Security Object-level security | Sensible Tabellen und Spalten ausblenden Hide sensitive tables and columns | Strikter als Visual-Ausblendung Stricter than visual hiding | OLS mit RLS verwechseln Confusing OLS with RLS |
| Funktion Function | Kategorie Category | Einsatz Usage | Beispiel Example |
|---|---|---|---|
| CALCULATE CALCULATE | Kontext Kontext | Ändert den Filterkontext für eine Berechnung. Modifies filter context for a calculation. | CALCULATE([Sales], 'Date'[Year] = 2026) CALCULATE([Sales], 'Date'[Year] = 2026) |
| CALCULATETABLE CALCULATETABLE | Kontext Kontext | Gibt eine gefilterte Tabelle zurück. Returns a filtered table. | CALCULATETABLE(VALUES(Product[Category]), Customer[Country] = "DE") CALCULATETABLE(VALUES(Product[Category]), Customer[Country] = "DE") |
| FILTER FILTER | Tabelle Tabelle | Filtert eine Tabelle zeilenweise. Filters a table row by row. | FILTER(Sales, Sales[MarginPct] > 0.3) FILTER(Sales, Sales[MarginPct] > 0.3) |
| ALL ALL | Kontext Kontext | Entfernt Filter von Spalten oder Tabellen. Removes filters from columns or tables. | CALCULATE([Sales], ALL('Date')) CALCULATE([Sales], ALL('Date')) |
| ALLEXCEPT ALLEXCEPT | Kontext Kontext | Entfernt alle Filter außer ausgewählten Spalten. Removes all filters except selected columns. | ALLEXCEPT(Product, Product[Brand]) ALLEXCEPT(Product, Product[Brand]) |
| ALLSELECTED ALLSELECTED | Kontext Kontext | Berücksichtigt äußere Auswahlkontexte. Keeps outer selection context. | CALCULATE([Sales], ALLSELECTED(Product)) CALCULATE([Sales], ALLSELECTED(Product)) |
| REMOVEFILTERS REMOVEFILTERS | Kontext Kontext | Lesbare Alternative zu ALL in vielen Measures. Readable alternative to ALL in many measures. | CALCULATE([Sales], REMOVEFILTERS(Customer)) CALCULATE([Sales], REMOVEFILTERS(Customer)) |
| KEEPFILTERS KEEPFILTERS | Kontext Kontext | Ergänzt statt überschreibt vorhandene Filter. Adds rather than overwrites existing filters. | CALCULATE([Sales], KEEPFILTERS(Product[Color] = "Red")) CALCULATE([Sales], KEEPFILTERS(Product[Color] = "Red")) |
| VALUES VALUES | Dimension Dimension | Liefert eindeutige Werte unter aktuellem Kontext. Returns distinct values under current context. | VALUES('Date'[Month]) VALUES('Date'[Month]) |
| DISTINCT DISTINCT | Dimension Dimension | Gibt eindeutige Werte ohne Blank-Sonderlogik zurück. Returns distinct values without special blank behavior. | DISTINCT(Customer[Country]) DISTINCT(Customer[Country]) |
| SELECTEDVALUE SELECTEDVALUE | Dimension Dimension | Liest einen Einzelwert robust aus. Reads a single selected value safely. | SELECTEDVALUE(Product[Brand], "All Brands") SELECTEDVALUE(Product[Brand], "All Brands") |
| RELATED RELATED | Beziehung Beziehung | Liest einen Wert aus einer verknüpften Dimension. Reads a value from a related dimension. | RELATED(Product[Category]) RELATED(Product[Category]) |
| RELATEDTABLE RELATEDTABLE | Beziehung Beziehung | Gibt die zugehörigen Faktzeilen zurück. Returns related fact rows. | COUNTROWS(RELATEDTABLE(Sales)) COUNTROWS(RELATEDTABLE(Sales)) |
| LOOKUPVALUE LOOKUPVALUE | Suche Suche | Sucht einen Wert per Schlüssel. Looks up a value by key. | LOOKUPVALUE(Customer[Tier], Customer[CustomerId], Sales[CustomerId]) LOOKUPVALUE(Customer[Tier], Customer[CustomerId], Sales[CustomerId]) |
| USERELATIONSHIP USERELATIONSHIP | Beziehung Beziehung | Aktiviert eine inaktive Beziehung für ein Measure. Activates an inactive relationship in a measure. | CALCULATE([Sales], USERELATIONSHIP(Sales[ShipDate], 'Date'[Date])) CALCULATE([Sales], USERELATIONSHIP(Sales[ShipDate], 'Date'[Date])) |
| CROSSFILTER CROSSFILTER | Beziehung Beziehung | Ändert die Filterrichtung innerhalb eines Measures. Changes filter direction inside a measure. | CALCULATE([Sales], CROSSFILTER(Product[ProductId], Sales[ProductId], BOTH)) CALCULATE([Sales], CROSSFILTER(Product[ProductId], Sales[ProductId], BOTH)) |
| SUM SUM | Aggregation Aggregation | Summiert eine numerische Spalte. Sums a numeric column. | SUM(Sales[Amount]) SUM(Sales[Amount]) |
| SUMX SUMX | Iterator Iterator | Iteriert eine Tabelle und summiert einen Ausdruck. Iterates a table and sums an expression. | SUMX(Sales, Sales[Quantity] * Sales[NetPrice]) SUMX(Sales, Sales[Quantity] * Sales[NetPrice]) |
| AVERAGE AVERAGE | Aggregation Aggregation | Berechnet den Durchschnitt einer Spalte. Calculates the average of a column. | AVERAGE(Sales[DiscountPct]) AVERAGE(Sales[DiscountPct]) |
| AVERAGEX AVERAGEX | Iterator Iterator | Berechnet einen Durchschnitt über einen Ausdruck. Calculates an average over an expression. | AVERAGEX(Sales, Sales[Quantity] * Sales[NetPrice]) AVERAGEX(Sales, Sales[Quantity] * Sales[NetPrice]) |
| MIN MIN | Aggregation Aggregation | Liefert den kleinsten Wert. Returns the smallest value. | MIN('Date'[Date]) MIN('Date'[Date]) |
| MAX MAX | Aggregation Aggregation | Liefert den größten Wert. Returns the largest value. | MAX('Date'[Date]) MAX('Date'[Date]) |
| COUNTROWS COUNTROWS | Aggregation Aggregation | Zählt Tabellenzeilen. Counts table rows. | COUNTROWS(Sales) COUNTROWS(Sales) |
| DISTINCTCOUNT DISTINCTCOUNT | Aggregation Aggregation | Zählt eindeutige Werte. Counts distinct values. | DISTINCTCOUNT(Customer[CustomerId]) DISTINCTCOUNT(Customer[CustomerId]) |
| DIVIDE DIVIDE | Mathematik Mathematik | Division mit Alternativwert bei Null. Division with alternate result for zero. | DIVIDE([Margin], [Sales], 0) DIVIDE([Margin], [Sales], 0) |
| IF IF | Logik Logik | Bedingte Verzweigung. Conditional branching. | IF([Sales] > 100000, "High", "Standard") IF([Sales] > 100000, "High", "Standard") |
| SWITCH SWITCH | Logik Logik | Mehrfachverzweigung und Mapping. Multi-branch logic and mapping. | SWITCH(TRUE(), [Sales] > 1000000, "A", [Sales] > 500000, "B", "C") SWITCH(TRUE(), [Sales] > 1000000, "A", [Sales] > 500000, "B", "C") |
| COALESCE COALESCE | Logik Logik | Ersten nicht-leeren Ausdruck wählen. Returns the first non-blank expression. | COALESCE([Forecast], [Actual], 0) COALESCE([Forecast], [Actual], 0) |
| ISBLANK ISBLANK | Logik Logik | Prüft auf BLANK(). Checks for BLANK(). | IF(ISBLANK([Sales]), 0, [Sales]) IF(ISBLANK([Sales]), 0, [Sales]) |
| BLANK BLANK | Logik Logik | Erzeugt explizit einen leeren Wert. Explicitly returns a blank value. | BLANK() BLANK() |
| RANKX RANKX | Ranking Ranking | Rangfolge über eine Tabelle berechnen. Calculates ranking over a table. | RANKX(ALL(Product[Brand]), [Sales]) RANKX(ALL(Product[Brand]), [Sales]) |
| TOPN TOPN | Ranking Ranking | Oberste N-Zeilen nach Sortierung zurückgeben. Returns the top N rows by sort order. | TOPN(10, SUMMARIZE(Product, Product[Brand], "Sales", [Sales]), [Sales]) TOPN(10, SUMMARIZE(Product, Product[Brand], "Sales", [Sales]), [Sales]) |
| CONCATENATEX CONCATENATEX | Text Text | Verkettet Tabellenwerte zu Text. Concatenates table values into text. | CONCATENATEX(VALUES(Product[Brand]), Product[Brand], ", ") CONCATENATEX(VALUES(Product[Brand]), Product[Brand], ", ") |
| FORMAT FORMAT | Text Text | Formatiert Werte als Text. Formats values as text. | FORMAT([Sales], "#,##0.00") FORMAT([Sales], "#,##0.00") |
| VALUE VALUE | Text Text | Konvertiert Text in Zahl. Converts text to number. | VALUE("42") VALUE("42") |
| INT INT | Mathematik Mathematik | Schneidet Dezimalstellen ab. Removes decimal places. | INT([Quantity]) INT([Quantity]) |
| ROUND ROUND | Mathematik Mathematik | Rundet auf feste Dezimalstellen. Rounds to a fixed number of decimals. | ROUND([MarginPct], 2) ROUND([MarginPct], 2) |
| DATEADD DATEADD | Zeit Zeit | Verschiebt einen Datumsbereich. Shifts a date range. | CALCULATE([Sales], DATEADD('Date'[Date], -1, YEAR)) CALCULATE([Sales], DATEADD('Date'[Date], -1, YEAR)) |
| SAMEPERIODLASTYEAR SAMEPERIODLASTYEAR | Zeit Zeit | Vorjahresvergleich für denselben Zeitraum. Prior-year comparison for the same period. | CALCULATE([Sales], SAMEPERIODLASTYEAR('Date'[Date])) CALCULATE([Sales], SAMEPERIODLASTYEAR('Date'[Date])) |
| DATESYTD DATESYTD | Zeit Zeit | Gibt Year-to-Date-Datumsmenge zurück. Returns the year-to-date date set. | CALCULATE([Sales], DATESYTD('Date'[Date])) CALCULATE([Sales], DATESYTD('Date'[Date])) |
| TOTALYTD TOTALYTD | Zeit Zeit | Berechnet Year-to-Date direkt. Calculates year-to-date directly. | TOTALYTD([Sales], 'Date'[Date]) TOTALYTD([Sales], 'Date'[Date]) |
| EOMONTH EOMONTH | Zeit Zeit | Monatsende relativ zu einem Datum. Month end relative to a date. | EOMONTH(TODAY(), 0) EOMONTH(TODAY(), 0) |
| TODAY TODAY | Zeit Zeit | Aktuelles Tagesdatum. Current date. | TODAY() TODAY() |
| NOW NOW | Zeit Zeit | Aktuelles Datum mit Uhrzeit. Current date and time. | NOW() NOW() |
| SUMMARIZE SUMMARIZE | Tabelle Tabelle | Bildet gruppierte Ergebniszeilen. Builds grouped result rows. | SUMMARIZE(Sales, Product[Brand], "Sales", [Sales]) SUMMARIZE(Sales, Product[Brand], "Sales", [Sales]) |
| SUMMARIZECOLUMNS SUMMARIZECOLUMNS | Tabelle Tabelle | Optimierte Gruppierung für Measures. Optimized grouping for measures. | SUMMARIZECOLUMNS(Product[Brand], 'Date'[Year], "Sales", [Sales]) SUMMARIZECOLUMNS(Product[Brand], 'Date'[Year], "Sales", [Sales]) |
| ADDCOLUMNS ADDCOLUMNS | Tabelle Tabelle | Erweitert eine Tabelle um berechnete Spalten. Extends a table with calculated columns. | ADDCOLUMNS(VALUES(Product[Brand]), "Sales", [Sales]) ADDCOLUMNS(VALUES(Product[Brand]), "Sales", [Sales]) |
| SELECTCOLUMNS SELECTCOLUMNS | Tabelle Tabelle | Projektionsfunktion mit benannten Spalten. Projection function with named columns. | SELECTCOLUMNS(Customer, "Country", Customer[Country]) SELECTCOLUMNS(Customer, "Country", Customer[Country]) |
| UNION UNION | Tabelle Tabelle | Verbindet Tabellen vertikal. Appends tables vertically. | UNION(TableA, TableB) UNION(TableA, TableB) |
| EXCEPT EXCEPT | Tabelle Tabelle | Zeigt Zeilen an, die nur links existieren. Returns rows that exist only on the left. | EXCEPT(TableA, TableB) EXCEPT(TableA, TableB) |
| INTERSECT INTERSECT | Tabelle Tabelle | Liefert gemeinsame Zeilen. Returns shared rows. | INTERSECT(TableA, TableB) INTERSECT(TableA, TableB) |
| TREATAS TREATAS | Virtuelle Beziehung Virtuelle Beziehung | Überträgt Filter auf andere Spalten. Applies filters to other columns. | CALCULATE([Sales], TREATAS(VALUES(Customer[Segment]), Product[Segment])) CALCULATE([Sales], TREATAS(VALUES(Customer[Segment]), Product[Segment])) |
| NATURALINNERJOIN NATURALINNERJOIN | Virtuelle Beziehung Virtuelle Beziehung | Verknüpft Tabellen anhand gemeinsamer Spaltennamen. Joins tables by shared column names. | NATURALINNERJOIN(TableA, TableB) NATURALINNERJOIN(TableA, TableB) |
| GENERATE GENERATE | Tabelle Tabelle | Cartesianisches Iterationsmuster. Cartesian iteration pattern. | GENERATE(VALUES(Customer[Country]), VALUES(Product[Category])) GENERATE(VALUES(Customer[Country]), VALUES(Product[Category])) |
| PATH PATH | Parent-Child Parent-Child | Erzeugt Hierarchiepfad als Text. Builds a hierarchy path as text. | PATH(Employee[EmployeeId], Employee[ManagerId]) PATH(Employee[EmployeeId], Employee[ManagerId]) |
| PATHITEM PATHITEM | Parent-Child Parent-Child | Liest ein Element aus PATH. Reads an item from PATH. | PATHITEM(Employee[Path], 2, INTEGER) PATHITEM(Employee[Path], 2, INTEGER) |
| HASONEVALUE HASONEVALUE | Prüfung Prüfung | Prüft auf genau einen sichtbaren Wert. Checks for exactly one visible value. | HASONEVALUE('Date'[Year]) HASONEVALUE('Date'[Year]) |
| HASONEFILTER HASONEFILTER | Prüfung Prüfung | Prüft auf einen aktiven Filter. Checks for an active filter. | HASONEFILTER(Product[Brand]) HASONEFILTER(Product[Brand]) |
| ISINSCOPE ISINSCOPE | Prüfung Prüfung | Erkennt Matrix- oder Hierarchieebene. Detects matrix or hierarchy level. | ISINSCOPE(Product[Subcategory]) ISINSCOPE(Product[Subcategory]) |
| MEDIANX MEDIANX | Iterator Iterator | Median über einen Ausdruck. Median over an expression. | MEDIANX(Customer, [Sales]) MEDIANX(Customer, [Sales]) |
| M-Muster M pattern | Wirkung Effect | Worauf achten Watch out for | Beispiel Example |
|---|---|---|---|
| Table.SelectRows Table.SelectRows | Frühe Filterung Early filtering | Query Folding im Connector verifizieren Verify query folding in the connector | Table.SelectRows(Source, each [Status] = "Open") Table.SelectRows(Source, each [Status] = "Open") |
| Table.TransformColumnTypes Table.TransformColumnTypes | Explizite Typisierung Explicit typing | Vor Modellimport immer Datentypen setzen Always set data types before model import | Table.TransformColumnTypes(Source, {{"Amount", type number}}) Table.TransformColumnTypes(Source, {{"Amount", type number}}) |
| Table.NestedJoin Table.NestedJoin | Join im ETL Join in ETL | Große Faktjoins möglichst quellsystemnah durchführen Push large fact joins to the source when possible | Table.NestedJoin(A, {"Id"}, B, {"Id"}, "B") Table.NestedJoin(A, {"Id"}, B, {"Id"}, "B") |
| Table.ExpandTableColumn Table.ExpandTableColumn | Joins expandieren Expand joins | Nur benötigte Spalten expandieren Expand only needed columns | Table.ExpandTableColumn(Joined, "B", {"Name"}) Table.ExpandTableColumn(Joined, "B", {"Name"}) |
| Table.Group Table.Group | Voraggregation Pre-aggregation | Bei Importmodellen Speicherbedarf optimieren Optimize memory for import models | Table.Group(Source, {"Country"}, {{"Sales", each List.Sum([Amount])}}) Table.Group(Source, {"Country"}, {{"Sales", each List.Sum([Amount])}}) |
| Table.Buffer Table.Buffer | Zwischenspeichern kleiner Referenzdaten Cache small reference data | Nicht blind bei großen Tabellen einsetzen Do not use blindly on large tables | Table.Buffer(DimDate) Table.Buffer(DimDate) |
| Value.NativeQuery Value.NativeQuery | Gezielte SQL-Ausführung Targeted SQL execution | Sicherheits- und Folding-Auswirkungen prüfen Review security and folding implications | Value.NativeQuery(Sql.Database(...), "select * from dbo.Sales") Value.NativeQuery(Sql.Database(...), "select * from dbo.Sales") |
| List.Generate List.Generate | Dynamische Listen bauen Build dynamic lists | Für API-Paging sehr nützlich Useful for API paging | List.Generate(() => 1, each _ <= 12, each _ + 1) List.Generate(() => 1, each _ <= 12, each _ + 1) |
| Record.FieldOrDefault Record.FieldOrDefault | Robuste Feldzugriffe Robust field access | Verhindert Fehler bei optionalen Feldern Prevents failures on optional fields | Record.FieldOrDefault([Payload], "nextLink", null) Record.FieldOrDefault([Payload], "nextLink", null) |
| Web.Contents Web.Contents | REST- und API-Zugriff REST and API access | RelativePath und Query für Caching nutzen Use RelativePath and Query for caching | Web.Contents(BaseUrl, [RelativePath = "v1.0/items"]) Web.Contents(BaseUrl, [RelativePath = "v1.0/items"]) |
Sicherheit, RLS, OLS und Datenaktualisierung Security, RLS, OLS, and data refresh
RLS filtert Zeilen pro Benutzer oder Rolle, OLS blendet Tabellen und Spalten aus, Sensitivity Labels transportieren Klassifizierung, und Endorsement hilft bei der Kuratierung vertrauenswürdiger Artefakte. Governance ist erst vollständig, wenn auch Lineage, Impact Analysis und Auditierung aktiviert sind. RLS filters rows per user or role, OLS hides tables and columns, sensitivity labels carry classification, and endorsement helps curate trusted artifacts. Governance is complete only when lineage, impact analysis, and auditing are also enabled.
| Thema Topic | Technik Technique | Wann einsetzen When to use | Hinweis Note |
|---|---|---|---|
| Row-Level Security Row-level security | DAX-Rollenfilter DAX role filters | Benutzerspezifische Datensicht User-specific data visibility | USERPRINCIPALNAME() nur mit sauberer Zuordnung nutzen Use USERPRINCIPALNAME() only with clean mappings |
| Object-Level Security Object-level security | Tabular metadata permissions Tabular metadata permissions | Sensible Dimensionen oder Spalten Sensitive dimensions or columns | Benötigt XMLA / externe Tools oder TMSL Requires XMLA / external tools or TMSL |
| Sensitivity Labels Sensitivity labels | Microsoft Purview label integration Microsoft Purview label integration | Datenklassifizierung und Schutz Data classification and protection | Export- und Sharing-Pfade mitdenken Consider export and sharing paths |
| Endorsement Endorsement | Promoted oder Certified Promoted or certified | Vertrauenswürdige Self-Service-Modelle Trusted self-service models | Certification braucht Prozess und Data Stewardship Certification needs process and data stewardship |
| Incremental Refresh Incremental refresh | Partitions plus Policy Partitions plus policy | Große Importmodelle Large import models | Performance hängt von foldbaren Datumsfiltern ab Performance depends on foldable date filters |
| Hybrid Tables Hybrid tables | Import plus DirectQuery Partition Import plus DirectQuery partition | Near-real-time auf warmen Datensätzen Near-real-time on warm datasets | Nur gezielt für Hot-Window einsetzen Use only intentionally for the hot window |
| Usage Metrics Usage metrics | Service Report Service report | Akzeptanz und Content-Nutzung messen Measure adoption and content usage | Nicht mit Audit Logs verwechseln Do not confuse with audit logs |
| Audit Log Audit log | Microsoft 365 Unified Audit Microsoft 365 unified audit | Forensik und Governance Forensics and governance | Aufbewahrung vom Purview/Audit-Plan abhängig Retention depends on the Purview audit plan |
{
"createOrReplace": {
"object": {
"database": "FinanceModel",
"role": "RLS_Sales_Europe"
},
"role": {
"name": "RLS_Sales_Europe",
"modelPermission": "read",
"tablePermissions": [
{
"name": "DimSalesTerritory",
"filterExpression": "[Region] = "Europe""
}
]
}
}
}
Admin, Tenant Settings, Audit und REST API Admin, tenant settings, audit, and REST API
| Tenant-Setting-Kategorie Tenant setting category | Beispiele Examples | Risiko Risk | Governance-Hinweis Governance note |
|---|---|---|---|
| Export und Freigabe Export and sharing | Export to Excel, Publish to web, Share with guests Export to Excel, Publish to web, Share with guests | Datenabfluss Data exfiltration | Mit Sensitivity Labels, CA und DLP abstimmen Align with sensitivity labels, CA, and DLP |
| Workspace-Einstellungen Workspace settings | Create workspaces, block classic workspace creation Create workspaces, block classic workspace creation | Wildwuchs Sprawl | Naming und Ownership via Provisioning regeln Control naming and ownership through provisioning |
| Semantic Model Settings Semantic model settings | XMLA endpoint, Analyze in Excel, featured tables XMLA endpoint, Analyze in Excel, featured tables | Nicht autorisierte Sekundärnutzung Unauthorized secondary use | Aktivierung nur für kuratierte Modelle Enable only for curated models |
| Developer Settings Developer settings | Embed content in apps, allow service principals Embed content in apps, allow service principals | App-sprawl und missbrauchte Embedding-Tokens App sprawl and abused embed tokens | Nur über genehmigte App-Registrierungen freigeben Allow only through approved app registrations |
| Integration Settings Integration settings | OneDrive, SharePoint, ArcGIS, Excel add-ins OneDrive, SharePoint, ArcGIS, Excel add-ins | Shadow IT Shadow IT | Pro Workload eine Verantwortlichkeit definieren Assign ownership per workload |
| Visual Settings Visual settings | Custom visuals, uncertified visuals Custom visuals, uncertified visuals | Supply-Chain- und Datenschutzrisiko Supply-chain and privacy risk | Nur zertifizierte Visuals in regulierten Bereichen Use only certified visuals in regulated areas |
| Audit und Usage Audit and usage | Usage metrics, audit events, admin monitoring Usage metrics, audit events, admin monitoring | Blindflug ohne Telemetrie Flying blind without telemetry | Regelmäßig Scanner API plus Audit korrelieren Correlate Scanner API with audit regularly |
| Deployment Pipelines Deployment pipelines | Pipeline creation, deployment rules Pipeline creation, deployment rules | Unkontrollierte Promotions Uncontrolled promotions | Freigabeprozess mit Git und Change Advisory koppeln Tie release process to Git and change advisory |
| Fabric Settings Fabric settings | Workloads, trial settings, item creation Workloads, trial settings, item creation | Unerwartete Kosten und Datensilos Unexpected cost and data silos | Fabric-Rollout schrittweise aktivieren Enable Fabric rollout gradually |
| Information Protection Information protection | Sensitivity labels in Power BI Sensitivity labels in Power BI | Uneinheitliche Klassifizierung Inconsistent classification | Mit Purview-Label-Taxonomie synchronisieren Synchronize with Purview label taxonomy |
| REST-Endpunkt REST endpoint | Zweck Purpose | Methode Method | Hinweis Note |
|---|---|---|---|
| /groups /groups | Workspaces lesen Read workspaces | GET GET | Für tenantweite Sicht Admin-APIs ergänzen Use admin APIs for tenant-wide visibility |
| /groups/{id}/reports /groups/{id}/reports | Reports im Workspace lesen Read reports in a workspace | GET GET | DatasetId für Lineage mitziehen Carry DatasetId for lineage |
| /groups/{id}/datasets /groups/{id}/datasets | Semantikmodelle inventarisieren Inventory semantic models | GET GET | Refresh-Status separat lesen Read refresh status separately |
| /datasets/{id}/refreshes /datasets/{id}/refreshes | Refresh-Historie Refresh history | GET/POST GET/POST | POST startet Refresh, aber Policies beachten POST starts refresh, but observe policies |
| /admin/activityevents /admin/activityevents | Audit-Ereignisse exportieren Export audit events | GET GET | Datumsfenster und Throttling beachten Observe date windows and throttling |
| /admin/workspaces/getInfo /admin/workspaces/getInfo | Scanner API anstoßen Trigger Scanner API | POST POST | Asynchron; Artefakte und Berechtigungen kombinieren Asynchronous; combine artifacts and permissions |
| /GenerateToken /GenerateToken | Embedding-Token erzeugen Generate embed token | POST POST | Least privilege und Dataset-Bindung durchsetzen Enforce least privilege and dataset binding |
| /reports/{id}/Export /reports/{id}/Export | Dateiexport für Berichte File export for reports | POST POST | Kapazitätsgrenzen und Labeling beachten Observe capacity limits and labeling |
curl -X POST "https://api.powerbi.com/v1.0/myorg/admin/workspaces/getInfo?lineage=true&datasourceDetails=true" ^
-H "Authorization: Bearer %PBI_TOKEN%" ^
-H "Content-Type: application/json" ^
-d "{""workspaces"":[""00000000-0000-0000-0000-000000000111""]}"
Gateway, Paginated Reports und externe Werkzeuge Gateway, paginated reports, and external tools
| Komponente Component | Wofür What for | Stärken Strengths | Grenzen Limits |
|---|---|---|---|
| On-premises Data Gateway On-premises data gateway | Gemeinsame Unternehmens-Gateway-Infrastruktur Shared enterprise gateway infrastructure | Clustering, zentrale Verwaltung, viele Connectoren Clustering, central administration, many connectors | Patch- und Credential-Betrieb erforderlich Requires patching and credential operations |
| Personal Gateway Personal gateway | Einzelanwender-Self-Service Single-user self-service | Schneller Einstieg Quick start | Keine geteilte Enterprise-Verwaltung No shared enterprise management |
| Gateway Cluster Gateway cluster | Hochverfügbarkeit High availability | Mehrere Nodes pro logischem Gateway Multiple nodes per logical gateway | Versionen und Data Source Mapping konsistent halten Keep versions and data source mapping consistent |
| Paginated Report Paginated report | Pixelgenaue Berichte und Druck Pixel-perfect reporting and printing | Parameter, Seitensteuerung, Subreports Parameters, page control, subreports | Dataset-Design oft anders als für Self-Service-Reports Dataset design often differs from self-service reports |
| Report Builder Report Builder | RDL-Authoring RDL authoring | SSRS-kompatible Oberfläche SSRS-compatible interface | Für moderne DevOps-Prozesse ergänzende Automation sinnvoll Supplement with automation for modern DevOps |
| DAX Studio DAX Studio | Abfrageanalyse und Server Timings Query analysis and server timings | VertiPaq Analyzer, Query Plan, Benchmarking VertiPaq Analyzer, query plan, benchmarking | Primär für Diagnose, nicht für Deployment Primarily for diagnostics, not deployment |
| Tabular Editor Tabular Editor | Metadaten-Engineering Metadata engineering | Calculation Groups, BPA, Scripting Calculation groups, BPA, scripting | Governance für Änderungen am semantischen Modell definieren Define governance for semantic model changes |
$body = @{
format = "PDF"
powerBIReportConfiguration = @{
pages = @(
@{ pageName = "ReportSection1" }
)
}
} | ConvertTo-Json -Depth 5
Invoke-PowerBIRestMethod `
-Url "groups/$($workspace.Id)/reports/$reportId/ExportTo" `
-Method Post `
-Body $body `
-ContentType "application/json"