report-visuals
Creates Power BI reports and visuals in PBIR format. Use for pages, charts, tables, slicers, and visual configuration.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Creates Power BI reports and visuals in PBIR format. Use for pages, charts, tables, slicers, and visual configuration.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
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.
| name | report-visuals |
| description | Creates Power BI reports and visuals in PBIR format. Use for pages, charts, tables, slicers, and visual configuration. |
This skill helps create Power BI reports and visuals in PBIR (Power BI Report) format.
<ProjectName>.Report/
├── definition.pbir # Report pointer file
├── report.json # Report configuration
├── StaticResources/ # Images and resources
│ └── RegisteredResources/
└── definition/
├── pages/
│ ├── ReportSection1/
│ │ └── page.json
│ └── ReportSection2/
│ └── page.json
├── bookmarks/
└── ...
{
"$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definition/report/1.0.0/schema.json",
"themeCollection": {
"baseTheme": {
"name": "CY24SU06",
"reportVersionAtImport": "5.55",
"type": "SharedResources"
}
},
"config": {
"version": 5,
"defaultDrillFilterOtherVisuals": true
},
"objects": {}
}
{
"$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definition/page/1.0.0/schema.json",
"name": "ReportSection1a2b3c4d",
"displayName": "Sales Overview",
"displayOption": "FitToPage",
"height": 720,
"width": 1280,
"visuals": [],
"filters": [],
"ordinal": 0
}
| Property | Description | Values |
|---|---|---|
name | Unique identifier | ReportSection + GUID |
displayName | User-visible name | Any string |
displayOption | Sizing mode | FitToPage, FitToWidth, ActualSize |
height | Page height in pixels | 720 (standard), 1080 (tall) |
width | Page width in pixels | 1280 (standard), 1920 (wide) |
ordinal | Page order | 0, 1, 2, ... |
| Size | Width | Height | Use Case |
|---|---|---|---|
| 16:9 | 1280 | 720 | Standard dashboard |
| 4:3 | 1280 | 960 | Traditional reports |
| Letter | 816 | 1056 | Print reports |
| Custom | Any | Any | Special layouts |
Every visual has this structure:
{
"name": "visual_unique_id",
"position": {
"x": 0,
"y": 0,
"width": 400,
"height": 300,
"z": 0,
"tabOrder": 0
},
"visual": {
"visualType": "columnChart",
"query": { ... },
"objects": { ... },
"visualContainerObjects": { ... }
}
}
| Property | Description |
|---|---|
x | Left position in pixels |
y | Top position in pixels |
width | Visual width in pixels |
height | Visual height in pixels |
z | Layer order (higher = on top) |
tabOrder | Keyboard navigation order |
{
"name": "columnChart1",
"position": {
"x": 20,
"y": 20,
"width": 600,
"height": 400,
"z": 0,
"tabOrder": 0
},
"visual": {
"visualType": "columnChart",
"query": {
"queryState": {
"Category": {
"projections": [
{
"field": {
"Column": {
"Expression": {
"SourceRef": { "Entity": "Products" }
},
"Property": "Category"
}
},
"queryRef": "Products.Category",
"active": true
}
]
},
"Y": {
"projections": [
{
"field": {
"Measure": {
"Expression": {
"SourceRef": { "Entity": "Sales" }
},
"Property": "Total Sales"
}
},
"queryRef": "Sales.Total Sales",
"active": true
}
]
}
}
},
"objects": {
"categoryAxis": [{
"properties": {
"show": { "expr": { "Literal": { "Value": "true" } } }
}
}],
"valueAxis": [{
"properties": {
"show": { "expr": { "Literal": { "Value": "true" } } }
}
}]
}
}
}
{
"name": "barChart1",
"position": { "x": 20, "y": 20, "width": 500, "height": 350, "z": 0, "tabOrder": 0 },
"visual": {
"visualType": "barChart",
"query": {
"queryState": {
"Category": {
"projections": [{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Products" } },
"Property": "Product Name"
}
},
"queryRef": "Products.Product Name",
"active": true
}]
},
"Y": {
"projections": [{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "Sales" } },
"Property": "Total Sales"
}
},
"queryRef": "Sales.Total Sales",
"active": true
}]
}
}
}
}
}
{
"name": "lineChart1",
"position": { "x": 20, "y": 20, "width": 600, "height": 400, "z": 0, "tabOrder": 0 },
"visual": {
"visualType": "lineChart",
"query": {
"queryState": {
"Category": {
"projections": [{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Date" } },
"Property": "Month"
}
},
"queryRef": "Date.Month",
"active": true
}]
},
"Y": {
"projections": [{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "Sales" } },
"Property": "Total Sales"
}
},
"queryRef": "Sales.Total Sales",
"active": true
}]
}
}
}
}
}
{
"name": "card1",
"position": { "x": 20, "y": 20, "width": 200, "height": 100, "z": 0, "tabOrder": 0 },
"visual": {
"visualType": "card",
"query": {
"queryState": {
"Values": {
"projections": [{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "Sales" } },
"Property": "Total Sales"
}
},
"queryRef": "Sales.Total Sales",
"active": true
}]
}
}
},
"objects": {
"labels": [{
"properties": {
"fontSize": { "expr": { "Literal": { "Value": "28D" } } }
}
}]
}
}
}
{
"name": "table1",
"position": { "x": 20, "y": 20, "width": 500, "height": 400, "z": 0, "tabOrder": 0 },
"visual": {
"visualType": "tableEx",
"query": {
"queryState": {
"Values": {
"projections": [
{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Products" } },
"Property": "Product Name"
}
},
"queryRef": "Products.Product Name",
"active": true
},
{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "Sales" } },
"Property": "Total Sales"
}
},
"queryRef": "Sales.Total Sales",
"active": true
},
{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "Sales" } },
"Property": "Total Quantity"
}
},
"queryRef": "Sales.Total Quantity",
"active": true
}
]
}
}
}
}
}
{
"name": "matrix1",
"position": { "x": 20, "y": 20, "width": 600, "height": 400, "z": 0, "tabOrder": 0 },
"visual": {
"visualType": "pivotTable",
"query": {
"queryState": {
"Rows": {
"projections": [{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Products" } },
"Property": "Category"
}
},
"queryRef": "Products.Category",
"active": true
}]
},
"Columns": {
"projections": [{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Date" } },
"Property": "Year"
}
},
"queryRef": "Date.Year",
"active": true
}]
},
"Values": {
"projections": [{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "Sales" } },
"Property": "Total Sales"
}
},
"queryRef": "Sales.Total Sales",
"active": true
}]
}
}
}
}
}
{
"name": "slicer1",
"position": { "x": 20, "y": 20, "width": 200, "height": 300, "z": 0, "tabOrder": 0 },
"visual": {
"visualType": "slicer",
"query": {
"queryState": {
"Values": {
"projections": [{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Products" } },
"Property": "Category"
}
},
"queryRef": "Products.Category",
"active": true
}]
}
}
},
"objects": {
"general": [{
"properties": {
"orientation": { "expr": { "Literal": { "Value": "'Vertical'" } } }
}
}],
"selection": [{
"properties": {
"selectAllCheckboxEnabled": { "expr": { "Literal": { "Value": "true" } } },
"singleSelect": { "expr": { "Literal": { "Value": "false" } } }
}
}]
}
}
}
{
"name": "dateSlicer1",
"position": { "x": 20, "y": 20, "width": 300, "height": 80, "z": 0, "tabOrder": 0 },
"visual": {
"visualType": "slicer",
"query": {
"queryState": {
"Values": {
"projections": [{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Date" } },
"Property": "Date"
}
},
"queryRef": "Date.Date",
"active": true
}]
}
}
},
"objects": {
"general": [{
"properties": {
"orientation": { "expr": { "Literal": { "Value": "'Horizontal'" } } }
}
}],
"data": [{
"properties": {
"mode": { "expr": { "Literal": { "Value": "'Between'" } } }
}
}]
}
}
}
The query object binds visuals to data. Key concepts:
{
"field": {
"Column": {
"Expression": { "SourceRef": { "Entity": "TableName" } },
"Property": "ColumnName"
}
}
}
{
"field": {
"Measure": {
"Expression": { "SourceRef": { "Entity": "TableName" } },
"Property": "MeasureName"
}
}
}
| Bucket | Used By | Purpose |
|---|---|---|
Category | Charts | X-axis grouping |
Y | Charts | Y-axis values |
Series | Charts | Legend grouping |
Values | Cards, Tables | Data fields |
Rows | Matrix | Row headers |
Columns | Matrix | Column headers |
Tooltips | All | Hover information |
{
"name": "Filter123",
"expression": {
"Column": {
"Expression": { "SourceRef": { "Entity": "Products" } },
"Property": "Category"
}
},
"type": "Categorical",
"filter": {
"Version": 2,
"From": [{"Name": "p", "Entity": "Products", "Type": 0}],
"Where": [{
"Condition": {
"In": {
"Expressions": [{"Column": {"Expression": {"SourceRef": {"Source": "p"}}, "Property": "Category"}}],
"Values": [[{"Literal": {"Value": "'Electronics'"}}]]
}
}
}]
}
}
Add to the page's filters array using the same structure.
{
"objects": {
"values": [{
"properties": {
"backColor": {
"solid": { "color": { "expr": { "Literal": { "Value": "'#E8E8E8'" } } } }
}
}
}]
}
}
{
"properties": {
"fontColor": {
"expr": {
"Conditional": {
"Cases": [
{
"Condition": { "Comparison": { "Left": { "Measure": "..." }, "Right": { "Literal": { "Value": "0" } } } },
"Value": { "Literal": { "Value": "'#FF0000'" } }
}
],
"Else": { "Literal": { "Value": "'#00FF00'" } }
}
}
}
}
}
name values for all visualsz ordering for overlapping visualsAfter creating visuals:
best-practices skill for quality checksqueryRef matches the field path$schema reference is correctname follows expected format