semantic-model
Creates and modifies Power BI semantic models using TMDL format. Use for tables, columns, relationships, and model configuration.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Creates and modifies Power BI semantic models using TMDL format. Use for tables, columns, relationships, and model configuration.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | semantic-model |
| description | Creates and modifies Power BI semantic models using TMDL format. Use for tables, columns, relationships, and model configuration. |
This skill helps create and modify Power BI semantic models using TMDL (Tabular Model Definition Language) format.
TMDL uses indentation-based syntax (tabs, not spaces) with these key constructs:
table Sales
lineageTag: a1b2c3d4-e5f6-7890-abcd-ef1234567890
column 'Sales Amount'
dataType: decimal
formatString: "$#,##0.00"
summarizeBy: sum
lineageTag: b2c3d4e5-f6a7-8901-bcde-f12345678901
column 'Order Date'
dataType: dateTime
formatString: Short Date
lineageTag: c3d4e5f6-a7b8-9012-cdef-123456789012
partition Sales = m
mode: import
source =
let
Source = Sql.Database("server", "database"),
Sales = Source{[Schema="dbo",Item="Sales"]}[Data]
in
Sales
column 'Column Name'
dataType: <type>
formatString: <format>
summarizeBy: <aggregation>
isHidden
lineageTag: <guid>
annotation SummarizationSetBy = Automatic
Data Types:
string - Text valuesint64 - Whole numbersdecimal - Fixed decimal numbersdouble - Floating point numbersdateTime - Date and time valuesboolean - True/False valuesbinary - Binary dataSummarize By:
none - No aggregation (for dimensions)sum - Sum valuescount - Count rowsmin - Minimum valuemax - Maximum valueaverage - Average value/// Description of the measure
/// Appears as tooltip in Power BI
measure 'Total Sales' =
SUM(Sales[Sales Amount])
formatString: "$#,##0.00"
displayFolder: Revenue
lineageTag: d4e5f6a7-b8c9-0123-def0-234567890123
column 'Profit Margin' =
DIVIDE(Sales[Profit], Sales[Revenue], 0)
dataType: double
formatString: "0.00%"
lineageTag: e5f6a7b8-c9d0-1234-ef01-345678901234
relationship <guid>
fromColumn: Sales.'Product Key'
toColumn: Products.'Product Key'
With additional properties:
relationship a1b2c3d4-e5f6-7890-abcd-ef1234567890
fromColumn: Sales.'Date Key'
toColumn: Date.'Date Key'
crossFilteringBehavior: bothDirections
securityFilteringBehavior: bothDirections
isActive
hierarchy 'Date Hierarchy'
lineageTag: f6a7b8c9-d0e1-2345-f012-456789012345
level Year
column: Year
lineageTag: a7b8c9d0-e1f2-3456-0123-567890123456
level Quarter
column: Quarter
lineageTag: b8c9d0e1-f2a3-4567-1234-678901234567
level Month
column: Month
lineageTag: c9d0e1f2-a3b4-5678-2345-789012345678
<ProjectName>.SemanticModel/
└── definition/
├── database.tmdl # Database name and compatibility
├── model.tmdl # Model-level settings
├── relationships.tmdl # All relationships
├── expressions.tmdl # Shared expressions/parameters
└── tables/
├── Sales.tmdl
├── Products.tmdl
├── Date.tmdl
└── ...
Each table should be in its own file named tables/<TableName>.tmdl:
table Products
lineageTag: <guid>
column 'Product Key'
dataType: int64
isKey
summarizeBy: none
lineageTag: <guid>
column 'Product Name'
dataType: string
summarizeBy: none
lineageTag: <guid>
column Category
dataType: string
summarizeBy: none
lineageTag: <guid>
partition Products = m
mode: import
source = ...
table 'Fact Sales'
lineageTag: <guid>
/// Foreign key to Date dimension
column 'Date Key'
dataType: int64
isHidden
summarizeBy: none
lineageTag: <guid>
/// Foreign key to Product dimension
column 'Product Key'
dataType: int64
isHidden
summarizeBy: none
lineageTag: <guid>
column 'Sales Amount'
dataType: decimal
formatString: "$#,##0.00"
summarizeBy: sum
lineageTag: <guid>
column Quantity
dataType: int64
summarizeBy: sum
lineageTag: <guid>
partition 'Fact Sales' = m
mode: import
source = ...
table Products
lineageTag: <guid>
column 'Product Key'
dataType: int64
isKey
isHidden
summarizeBy: none
lineageTag: <guid>
column 'Product Name'
dataType: string
summarizeBy: none
lineageTag: <guid>
column Category
dataType: string
summarizeBy: none
lineageTag: <guid>
column Subcategory
dataType: string
summarizeBy: none
lineageTag: <guid>
hierarchy 'Product Hierarchy'
lineageTag: <guid>
level Category
column: Category
lineageTag: <guid>
level Subcategory
column: Subcategory
lineageTag: <guid>
level Product
column: 'Product Name'
lineageTag: <guid>
partition Products = m
mode: import
source = ...
expression Server = "your-server.database.windows.net" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]
expression Database = "YourDatabase" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]
partition Sales = m
mode: import
source =
let
Source = Sql.Database(Server, Database),
dbo_Sales = Source{[Schema="dbo",Item="Sales"]}[Data]
in
dbo_Sales
partition Data = m
mode: import
source =
let
Source = SharePoint.Files("https://company.sharepoint.com/sites/data", [ApiVersion = 15]),
File = Source{[Name="data.xlsx"]}[Content],
Data = Excel.Workbook(File, true, true),
Sheet = Data{[Item="Sheet1",Kind="Sheet"]}[Data]
in
Sheet
Every object needs a unique lineageTag (GUID). Generate new GUIDs for each object:
lineageTag: a1b2c3d4-e5f6-7890-abcd-ef1234567890
GUIDs should be lowercase and properly formatted (8-4-4-4-12 pattern).
lineageTag for every objectisHidden for key columns in dimension tablessummarizeBy: none for dimension columnssummarizeBy: sum (or appropriate) for measure columnsisKey on primary key columns/// comments above measuresdiscourageImplicitMeasures: true)After creating tables:
dax skill to create business measuresbest-practices skill to check the modelEach lineageTag must be unique. Generate a new GUID for every object.
Applies Power BI best practices, BPA rules, and enterprise standards. Use for quality validation, naming conventions, and performance optimization.
Creates calculation groups for reusable DAX patterns like time intelligence and currency conversion. Use to replace repetitive measures with dynamic calculations.
Writes DAX measures, calculated columns, and calculations for Power BI. Use for business logic, time intelligence, and analytical calculations.
Implements CI/CD pipelines and DevOps practices for Power BI. Use for automated validation, testing, and deployment of PBIP projects.
Creates and manages Power BI Desktop Project (PBIP) structure. Use when starting new Power BI projects, setting up folder structure, or configuring project files.
Writes Power Query (M language) for data transformation, connections, and ETL. Use for data sources, transformations, parameters, and query optimization.