Implement and manage semantic models
Model for performance and reuse
Semantic models in Fabric are tabular models with a storage mode. Import copies data and is fastest but requires refresh. DirectQuery pushes queries to the source and can be slow. Direct Lake reads Delta/Parquet files in OneLake directly, giving import-like speed without refresh, but it can fall back to DirectQuery when framing, guardrails, or unsupported query patterns are hit. Composite models mix modes. Design a star schema with clean relationships, correct cardinality, and single-direction filters unless a specific need justifies otherwise.
Know the difference between calculated columns (row context, stored, refresh required) and measures (evaluated in filter context at query time). DAX essentials include CALCULATE, FILTER, DIVIDE, time intelligence, and SUMMARIZECOLUMNS. Calculation groups and field parameters reduce measure proliferation. Secure models with RLS roles and DAX filters, and optionally OLS with perspectives. Use incremental refresh, aggregations, and the Best Practice Analyzer. XMLA endpoints enable TMSL/TOM tooling and external tools.
Traps: assuming Direct Lake always avoids fallback; adding many-to-many or bi-directional relationships casually; using calculated columns for dynamic slicer logic; thinking RLS applies to workspace viewers without model roles; and forgetting that Direct Lake requires Delta-formatted tables in OneLake that the model can access.
Rule of thumb: prefer measures over calculated columns, enforce a star schema, and test Direct Lake fallback before promising performance.