@luquimbo/bi-superpowers 3.1.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/.claude-plugin/marketplace.json +5 -3
  2. package/.claude-plugin/plugin.json +28 -2
  3. package/.claude-plugin/skill-manifest.json +22 -6
  4. package/.plugin/plugin.json +1 -1
  5. package/AGENTS.md +52 -36
  6. package/CHANGELOG.md +295 -0
  7. package/README.md +75 -26
  8. package/bin/build-plugin.js +17 -10
  9. package/bin/cli.js +278 -322
  10. package/bin/commands/build-desktop.js +35 -16
  11. package/bin/commands/diff.js +31 -13
  12. package/bin/commands/install.js +93 -72
  13. package/bin/commands/lint.js +40 -26
  14. package/bin/commands/mcp-setup.js +3 -10
  15. package/bin/commands/update-check.js +389 -0
  16. package/bin/lib/agents.js +19 -0
  17. package/bin/lib/generators/claude-plugin.js +144 -6
  18. package/bin/lib/generators/shared.js +29 -33
  19. package/bin/lib/mcp-config.js +191 -16
  20. package/bin/lib/skills.js +115 -27
  21. package/bin/postinstall.js +4 -2
  22. package/bin/utils/mcp-detect.js +2 -2
  23. package/commands/bi-start.md +218 -0
  24. package/commands/pbi-connect.md +43 -65
  25. package/commands/project-kickoff.md +393 -673
  26. package/commands/report-design.md +403 -0
  27. package/desktop-extension/manifest.json +5 -12
  28. package/desktop-extension/server.js +34 -25
  29. package/package.json +6 -10
  30. package/skills/bi-start/SKILL.md +220 -0
  31. package/skills/bi-start/scripts/update-check.js +389 -0
  32. package/skills/pbi-connect/SKILL.md +45 -67
  33. package/skills/pbi-connect/scripts/update-check.js +389 -0
  34. package/skills/project-kickoff/SKILL.md +395 -675
  35. package/skills/project-kickoff/scripts/update-check.js +389 -0
  36. package/skills/report-design/SKILL.md +405 -0
  37. package/skills/report-design/references/cli-commands.md +184 -0
  38. package/skills/report-design/references/cli-setup.md +101 -0
  39. package/skills/report-design/references/close-write-open-pattern.md +80 -0
  40. package/skills/report-design/references/layouts/finance.md +65 -0
  41. package/skills/report-design/references/layouts/generic.md +46 -0
  42. package/skills/report-design/references/layouts/hr.md +48 -0
  43. package/skills/report-design/references/layouts/marketing.md +45 -0
  44. package/skills/report-design/references/layouts/operations.md +44 -0
  45. package/skills/report-design/references/layouts/sales.md +50 -0
  46. package/skills/report-design/references/native-visuals.md +341 -0
  47. package/skills/report-design/references/pbi-desktop-installation.md +87 -0
  48. package/skills/report-design/references/pbir-preview-activation.md +40 -0
  49. package/skills/report-design/references/slicer.md +89 -0
  50. package/skills/report-design/references/textbox.md +101 -0
  51. package/skills/report-design/references/themes/BISuperpowers.json +915 -0
  52. package/skills/report-design/references/troubleshooting.md +135 -0
  53. package/skills/report-design/references/visual-types.md +78 -0
  54. package/skills/report-design/scripts/apply-theme.js +243 -0
  55. package/skills/report-design/scripts/create-visual.js +878 -0
  56. package/skills/report-design/scripts/ensure-pbi-cli.sh +41 -0
  57. package/skills/report-design/scripts/update-check.js +389 -0
  58. package/skills/report-design/scripts/validate-pbir.js +322 -0
  59. package/src/content/base.md +12 -68
  60. package/src/content/mcp-requirements.json +0 -25
  61. package/src/content/routing.md +19 -74
  62. package/src/content/skills/bi-start.md +191 -0
  63. package/src/content/skills/pbi-connect.md +22 -65
  64. package/src/content/skills/project-kickoff.md +372 -673
  65. package/src/content/skills/report-design/SKILL.md +376 -0
  66. package/src/content/skills/report-design/references/cli-commands.md +184 -0
  67. package/src/content/skills/report-design/references/cli-setup.md +101 -0
  68. package/src/content/skills/report-design/references/close-write-open-pattern.md +80 -0
  69. package/src/content/skills/report-design/references/layouts/finance.md +65 -0
  70. package/src/content/skills/report-design/references/layouts/generic.md +46 -0
  71. package/src/content/skills/report-design/references/layouts/hr.md +48 -0
  72. package/src/content/skills/report-design/references/layouts/marketing.md +45 -0
  73. package/src/content/skills/report-design/references/layouts/operations.md +44 -0
  74. package/src/content/skills/report-design/references/layouts/sales.md +50 -0
  75. package/src/content/skills/report-design/references/native-visuals.md +341 -0
  76. package/src/content/skills/report-design/references/pbi-desktop-installation.md +87 -0
  77. package/src/content/skills/report-design/references/pbir-preview-activation.md +40 -0
  78. package/src/content/skills/report-design/references/slicer.md +89 -0
  79. package/src/content/skills/report-design/references/textbox.md +101 -0
  80. package/src/content/skills/report-design/references/themes/BISuperpowers.json +915 -0
  81. package/src/content/skills/report-design/references/troubleshooting.md +135 -0
  82. package/src/content/skills/report-design/references/visual-types.md +78 -0
  83. package/src/content/skills/report-design/scripts/apply-theme.js +243 -0
  84. package/src/content/skills/report-design/scripts/create-visual.js +878 -0
  85. package/src/content/skills/report-design/scripts/ensure-pbi-cli.sh +41 -0
  86. package/src/content/skills/report-design/scripts/validate-pbir.js +322 -0
  87. package/bin/commands/add.js +0 -533
  88. package/bin/commands/add.test.js +0 -77
  89. package/bin/commands/changelog.js +0 -443
  90. package/bin/commands/install.test.js +0 -289
  91. package/bin/commands/lint.test.js +0 -103
  92. package/bin/commands/pull.js +0 -287
  93. package/bin/commands/pull.test.js +0 -36
  94. package/bin/commands/push.js +0 -231
  95. package/bin/commands/push.test.js +0 -14
  96. package/bin/commands/search.js +0 -344
  97. package/bin/commands/search.test.js +0 -115
  98. package/bin/commands/setup.js +0 -545
  99. package/bin/commands/setup.test.js +0 -46
  100. package/bin/commands/sync-profile.js +0 -405
  101. package/bin/commands/sync-profile.test.js +0 -14
  102. package/bin/commands/sync-source.js +0 -418
  103. package/bin/commands/sync-source.test.js +0 -14
  104. package/bin/lib/generators/claude-plugin.test.js +0 -111
  105. package/bin/lib/mcp-config.test.js +0 -310
  106. package/bin/lib/microsoft-mcp.test.js +0 -115
  107. package/bin/utils/errors.js +0 -159
  108. package/bin/utils/git.js +0 -298
  109. package/bin/utils/logger.js +0 -142
  110. package/bin/utils/mcp-detect.test.js +0 -81
  111. package/bin/utils/pbix.js +0 -305
  112. package/bin/utils/pbix.test.js +0 -37
  113. package/bin/utils/profiles.js +0 -312
  114. package/bin/utils/projects.js +0 -169
  115. package/bin/utils/readline.js +0 -206
  116. package/bin/utils/readline.test.js +0 -47
  117. package/bin/utils/tui.test.js +0 -127
  118. package/docs/openrouter-free-models.md +0 -92
  119. package/library/examples/README.md +0 -151
  120. package/library/examples/finance-reporting/README.md +0 -351
  121. package/library/examples/finance-reporting/data-model.md +0 -267
  122. package/library/examples/finance-reporting/measures.dax +0 -557
  123. package/library/examples/hr-analytics/README.md +0 -371
  124. package/library/examples/hr-analytics/data-model.md +0 -315
  125. package/library/examples/hr-analytics/measures.dax +0 -460
  126. package/library/examples/marketing-analytics/README.md +0 -37
  127. package/library/examples/marketing-analytics/data-model.md +0 -62
  128. package/library/examples/marketing-analytics/measures.dax +0 -110
  129. package/library/examples/retail-analytics/README.md +0 -439
  130. package/library/examples/retail-analytics/data-model.md +0 -288
  131. package/library/examples/retail-analytics/measures.dax +0 -481
  132. package/library/examples/supply-chain/README.md +0 -37
  133. package/library/examples/supply-chain/data-model.md +0 -69
  134. package/library/examples/supply-chain/measures.dax +0 -77
  135. package/library/examples/udf-library/README.md +0 -228
  136. package/library/examples/udf-library/functions.dax +0 -571
  137. package/library/snippets/dax/README.md +0 -292
  138. package/library/snippets/dax/business-domains.md +0 -576
  139. package/library/snippets/dax/calculate-patterns.md +0 -276
  140. package/library/snippets/dax/calculation-groups.md +0 -489
  141. package/library/snippets/dax/error-handling.md +0 -495
  142. package/library/snippets/dax/iterators-and-aggregations.md +0 -474
  143. package/library/snippets/dax/kpis-and-metrics.md +0 -293
  144. package/library/snippets/dax/rankings-and-topn.md +0 -235
  145. package/library/snippets/dax/security-patterns.md +0 -413
  146. package/library/snippets/dax/text-and-formatting.md +0 -316
  147. package/library/snippets/dax/time-intelligence.md +0 -196
  148. package/library/snippets/dax/user-defined-functions.md +0 -477
  149. package/library/snippets/dax/virtual-tables.md +0 -546
  150. package/library/snippets/excel-formulas/README.md +0 -84
  151. package/library/snippets/excel-formulas/aggregations.md +0 -330
  152. package/library/snippets/excel-formulas/dates-and-times.md +0 -361
  153. package/library/snippets/excel-formulas/dynamic-arrays.md +0 -314
  154. package/library/snippets/excel-formulas/lookups.md +0 -169
  155. package/library/snippets/excel-formulas/text-functions.md +0 -363
  156. package/library/snippets/governance/naming-conventions.md +0 -97
  157. package/library/snippets/governance/review-checklists.md +0 -107
  158. package/library/snippets/power-query/README.md +0 -389
  159. package/library/snippets/power-query/api-integration.md +0 -707
  160. package/library/snippets/power-query/connections.md +0 -434
  161. package/library/snippets/power-query/data-cleaning.md +0 -298
  162. package/library/snippets/power-query/error-handling.md +0 -526
  163. package/library/snippets/power-query/parameters.md +0 -350
  164. package/library/snippets/power-query/performance.md +0 -506
  165. package/library/snippets/power-query/transformations.md +0 -330
  166. package/library/snippets/report-design/accessibility.md +0 -78
  167. package/library/snippets/report-design/chart-selection.md +0 -54
  168. package/library/snippets/report-design/layout-patterns.md +0 -87
  169. package/library/templates/data-models/README.md +0 -93
  170. package/library/templates/data-models/finance-model.md +0 -627
  171. package/library/templates/data-models/retail-star-schema.md +0 -473
  172. package/library/templates/excel/README.md +0 -83
  173. package/library/templates/excel/budget-tracker.md +0 -432
  174. package/library/templates/excel/data-entry-form.md +0 -533
  175. package/library/templates/power-bi/README.md +0 -72
  176. package/library/templates/power-bi/finance-report.md +0 -449
  177. package/library/templates/power-bi/kpi-scorecard.md +0 -461
  178. package/library/templates/power-bi/sales-dashboard.md +0 -281
  179. package/library/themes/excel/README.md +0 -436
  180. package/library/themes/power-bi/README.md +0 -271
  181. package/library/themes/power-bi/accessible.json +0 -307
  182. package/library/themes/power-bi/bi-superpowers-default.json +0 -858
  183. package/library/themes/power-bi/corporate-blue.json +0 -291
  184. package/library/themes/power-bi/dark-mode.json +0 -291
  185. package/library/themes/power-bi/minimal.json +0 -292
  186. package/library/themes/power-bi/print-friendly.json +0 -309
@@ -1,449 +0,0 @@
1
- # Finance Report Template
2
-
3
- ## Overview
4
-
5
- A financial reporting dashboard for P&L analysis, budget variance tracking, and financial KPIs. Designed for CFOs, controllers, and finance teams requiring accurate, auditable financial insights.
6
-
7
- ---
8
-
9
- ## Target Audience
10
-
11
- - Chief Financial Officers
12
- - Controllers
13
- - Financial Analysts
14
- - Budget Managers
15
- - Board of Directors
16
-
17
- ---
18
-
19
- ## Data Requirements
20
-
21
- ### Required Tables
22
-
23
- | Table | Description | Key Columns |
24
- |-------|-------------|-------------|
25
- | **FactGL** | General Ledger transactions | TransactionID, Date, AccountID, Amount, DebitCredit, JournalEntry |
26
- | **DimAccount** | Chart of Accounts | AccountID, AccountName, AccountType, AccountGroup, ParentAccount, IsBS, IsPL |
27
- | **DimDate** | Date dimension | Date, Year, FiscalYear, FiscalQuarter, FiscalMonth, Period, IsActual |
28
- | **DimCostCenter** | Cost centers | CostCenterID, Name, Department, Division, Manager |
29
- | **DimScenario** | Budget/Actual/Forecast | ScenarioID, ScenarioName (Actual, Budget, Forecast, Prior Year) |
30
-
31
- ### Optional Tables
32
-
33
- | Table | Description | Use Case |
34
- |-------|-------------|----------|
35
- | **FactBudget** | Budget line items | Budget vs Actual analysis |
36
- | **DimProject** | Project tracking | Project-based P&L |
37
- | **FactCashFlow** | Cash flow data | Cash flow statement |
38
- | **DimEntity** | Legal entities | Multi-company consolidation |
39
-
40
- ---
41
-
42
- ## Account Hierarchy
43
-
44
- ### Recommended Chart of Accounts Structure
45
-
46
- ```
47
- 1000-1999: Assets
48
- 1000-1099: Cash & Equivalents
49
- 1100-1199: Accounts Receivable
50
- 1200-1299: Inventory
51
- 1300-1399: Prepaid Expenses
52
- 1500-1799: Fixed Assets
53
- 1800-1999: Other Assets
54
-
55
- 2000-2999: Liabilities
56
- 2000-2099: Accounts Payable
57
- 2100-2199: Accrued Expenses
58
- 2200-2299: Short-term Debt
59
- 2500-2799: Long-term Debt
60
- 2800-2999: Other Liabilities
61
-
62
- 3000-3999: Equity
63
- 3000-3099: Common Stock
64
- 3100-3199: Retained Earnings
65
- 3200-3299: Current Year Earnings
66
-
67
- 4000-4999: Revenue
68
- 4000-4099: Product Revenue
69
- 4100-4199: Service Revenue
70
- 4200-4299: Other Revenue
71
-
72
- 5000-5999: Cost of Goods Sold
73
- 5000-5099: Direct Materials
74
- 5100-5199: Direct Labor
75
- 5200-5299: Manufacturing Overhead
76
-
77
- 6000-6999: Operating Expenses
78
- 6000-6099: Salaries & Wages
79
- 6100-6199: Benefits
80
- 6200-6299: Rent & Facilities
81
- 6300-6399: Marketing
82
- 6400-6499: Travel & Entertainment
83
- 6500-6599: Professional Services
84
- 6600-6699: Depreciation
85
- 6700-6799: Other Operating
86
-
87
- 7000-7999: Other Income/Expense
88
- 7000-7099: Interest Income
89
- 7100-7199: Interest Expense
90
- 7200-7299: FX Gains/Losses
91
- 7800-7999: Taxes
92
- ```
93
-
94
- ---
95
-
96
- ## Recommended Measures
97
-
98
- ### Core Financial Metrics
99
-
100
- ```dax
101
- // Total Amount (respects debit/credit)
102
- Total Amount =
103
- SUMX(
104
- FactGL,
105
- IF(FactGL[DebitCredit] = "Debit", FactGL[Amount], -FactGL[Amount])
106
- )
107
-
108
- // Revenue (credit positive for revenue accounts)
109
- Revenue =
110
- CALCULATE(
111
- -SUM(FactGL[Amount]),
112
- DimAccount[AccountType] = "Revenue"
113
- )
114
-
115
- // COGS
116
- COGS =
117
- CALCULATE(
118
- SUM(FactGL[Amount]),
119
- DimAccount[AccountType] = "COGS"
120
- )
121
-
122
- // Gross Profit
123
- Gross Profit =
124
- [Revenue] - [COGS]
125
-
126
- // Gross Margin %
127
- Gross Margin % =
128
- DIVIDE([Gross Profit], [Revenue])
129
-
130
- // Operating Expenses
131
- Operating Expenses =
132
- CALCULATE(
133
- SUM(FactGL[Amount]),
134
- DimAccount[AccountType] = "Operating Expense"
135
- )
136
-
137
- // EBITDA
138
- EBITDA =
139
- [Gross Profit] - [Operating Expenses] + [Depreciation]
140
-
141
- // Depreciation
142
- Depreciation =
143
- CALCULATE(
144
- SUM(FactGL[Amount]),
145
- DimAccount[AccountGroup] = "Depreciation"
146
- )
147
-
148
- // Net Income
149
- Net Income =
150
- [Revenue] - [COGS] - [Operating Expenses] - [Interest Expense] - [Tax Expense]
151
- ```
152
-
153
- ### Budget Variance
154
-
155
- ```dax
156
- // Budget Amount
157
- Budget Amount =
158
- CALCULATE(
159
- [Total Amount],
160
- DimScenario[ScenarioName] = "Budget"
161
- )
162
-
163
- // Actual Amount
164
- Actual Amount =
165
- CALCULATE(
166
- [Total Amount],
167
- DimScenario[ScenarioName] = "Actual"
168
- )
169
-
170
- // Variance to Budget
171
- Variance $ =
172
- [Actual Amount] - [Budget Amount]
173
-
174
- // Variance % (favorable for revenue, unfavorable for expense)
175
- Variance % =
176
- VAR _Actual = [Actual Amount]
177
- VAR _Budget = [Budget Amount]
178
- VAR _Variance = _Actual - _Budget
179
- RETURN
180
- IF(
181
- SELECTEDVALUE(DimAccount[AccountType]) IN {"Revenue"},
182
- DIVIDE(_Variance, ABS(_Budget)), // Positive is good
183
- DIVIDE(-_Variance, ABS(_Budget)) // Negative is good for expenses
184
- )
185
- ```
186
-
187
- ### Period Comparisons
188
-
189
- ```dax
190
- // Prior Year
191
- Prior Year =
192
- CALCULATE(
193
- [Total Amount],
194
- SAMEPERIODLASTYEAR(DimDate[Date]),
195
- DimScenario[ScenarioName] = "Actual"
196
- )
197
-
198
- // YoY Change
199
- YoY Change =
200
- [Actual Amount] - [Prior Year]
201
-
202
- // YoY Change %
203
- YoY % =
204
- DIVIDE([YoY Change], ABS([Prior Year]))
205
-
206
- // MTD Actual
207
- MTD =
208
- TOTALMTD([Total Amount], DimDate[Date])
209
-
210
- // QTD Actual
211
- QTD =
212
- TOTALQTD([Total Amount], DimDate[Date])
213
-
214
- // YTD Actual
215
- YTD =
216
- TOTALYTD([Total Amount], DimDate[Date])
217
- ```
218
-
219
- ### Financial Ratios
220
-
221
- ```dax
222
- // Current Ratio
223
- Current Ratio =
224
- DIVIDE(
225
- CALCULATE([Total Amount], DimAccount[AccountGroup] = "Current Assets"),
226
- CALCULATE(-[Total Amount], DimAccount[AccountGroup] = "Current Liabilities")
227
- )
228
-
229
- // Debt to Equity
230
- Debt to Equity =
231
- DIVIDE(
232
- CALCULATE(-[Total Amount], DimAccount[AccountType] = "Liability"),
233
- CALCULATE(-[Total Amount], DimAccount[AccountType] = "Equity")
234
- )
235
-
236
- // Operating Margin
237
- Operating Margin =
238
- DIVIDE([EBITDA], [Revenue])
239
- ```
240
-
241
- ---
242
-
243
- ## Page Structure
244
-
245
- ### Page 1: Executive Summary
246
-
247
- **Purpose:** Month-end snapshot for leadership
248
-
249
- | Visual | Position | Content |
250
- |--------|----------|---------|
251
- | Card | Top row | Revenue, Net Income, EBITDA, Operating Margin |
252
- | KPI | Second row | Each metric vs Budget with variance indicator |
253
- | Waterfall | Middle-left | P&L waterfall: Revenue to Net Income |
254
- | Line Chart | Middle-right | Monthly trend: Revenue, EBITDA, Net Income |
255
- | Matrix | Bottom | Department summary: Budget, Actual, Variance |
256
-
257
- ### Page 2: Profit & Loss Statement
258
-
259
- **Purpose:** Detailed P&L with drill-down capability
260
-
261
- | Visual | Position | Content |
262
- |--------|----------|---------|
263
- | Matrix | Full page | P&L structure with: |
264
- | | | - Rows: Account hierarchy (expandable) |
265
- | | | - Columns: Current Month, YTD, Budget, Variance, Prior Year |
266
- | | | - Conditional formatting on variances |
267
-
268
- **P&L Structure:**
269
- ```
270
- Revenue
271
- - Product Revenue
272
- - Service Revenue
273
- = Total Revenue
274
- Cost of Goods Sold
275
- - Direct Materials
276
- - Direct Labor
277
- - Manufacturing Overhead
278
- = Total COGS
279
- = Gross Profit
280
- Operating Expenses
281
- - Salaries & Wages
282
- - Benefits
283
- - Rent & Facilities
284
- - Marketing
285
- - Travel & Entertainment
286
- - Professional Services
287
- - Depreciation
288
- - Other Operating
289
- = Total Operating Expenses
290
- = Operating Income (EBIT)
291
- Other Income/Expense
292
- - Interest Income
293
- - Interest Expense
294
- - FX Gains/Losses
295
- = Total Other
296
- = Income Before Tax
297
- - Tax Expense
298
- = Net Income
299
- ```
300
-
301
- ### Page 3: Budget Analysis
302
-
303
- **Purpose:** Detailed variance analysis
304
-
305
- | Visual | Position | Content |
306
- |--------|----------|---------|
307
- | Decomposition Tree | Top-left | Variance drivers by category |
308
- | Clustered Bar | Top-right | Top 10 favorable/unfavorable variances |
309
- | Line Chart | Middle | Budget vs Actual trend by month |
310
- | Matrix | Bottom | Cost center detail with variance % |
311
-
312
- ### Page 4: Balance Sheet
313
-
314
- **Purpose:** Balance sheet snapshot
315
-
316
- | Visual | Position | Content |
317
- |--------|----------|---------|
318
- | Matrix | Left (50%) | Assets hierarchy with current/prior balances |
319
- | Matrix | Right (50%) | Liabilities & Equity hierarchy |
320
- | Card row | Bottom | Key ratios: Current Ratio, Debt/Equity, Working Capital |
321
-
322
- ### Page 5: Cash Flow
323
-
324
- **Purpose:** Cash flow analysis (if data available)
325
-
326
- | Visual | Position | Content |
327
- |--------|----------|---------|
328
- | Waterfall | Top | Cash flow waterfall: Operating, Investing, Financing |
329
- | Line Chart | Middle | Cash balance trend |
330
- | Table | Bottom | Detailed cash movements |
331
-
332
- ---
333
-
334
- ## Visual Specifications
335
-
336
- ### Financial Color Palette
337
-
338
- | Purpose | Color | Usage |
339
- |---------|-------|-------|
340
- | Actual | #1B1B1B | Current period actuals |
341
- | Budget | #6B6B6B | Budget/Plan figures |
342
- | Prior Year | #A0A0A0 | Historical comparison |
343
- | Favorable | #2E7D32 | Positive variance (context-dependent) |
344
- | Unfavorable | #C62828 | Negative variance |
345
- | Highlight | #1565C0 | Selected items |
346
-
347
- ### Conditional Formatting
348
-
349
- **Variance columns:**
350
- ```
351
- IF variance favorable (revenue up, expense down):
352
- Background: #E8F5E9 (light green)
353
- Font color: #2E7D32
354
-
355
- IF variance unfavorable:
356
- Background: #FFEBEE (light red)
357
- Font color: #C62828
358
- ```
359
-
360
- **Materiality threshold:**
361
- ```
362
- Only highlight variances > $10,000 or > 5%
363
- Small variances: neutral formatting
364
- ```
365
-
366
- ### Number Formatting
367
-
368
- | Metric Type | Format | Example |
369
- |-------------|--------|---------|
370
- | Currency | $#,##0 | $1,234,567 |
371
- | Currency (thousands) | $#,##0,"K" | $1,235K |
372
- | Currency (millions) | $#,##0.0,,"M" | $1.2M |
373
- | Percentage | 0.0% | 12.5% |
374
- | Variance % | +0.0%;-0.0% | +5.2% or -3.1% |
375
-
376
- ---
377
-
378
- ## Security Considerations
379
-
380
- ### Row-Level Security
381
-
382
- ```dax
383
- // Cost Center RLS
384
- [CostCenterAccess] =
385
- VAR UserEmail = USERPRINCIPALNAME()
386
- VAR UserCostCenters =
387
- CALCULATETABLE(
388
- VALUES(SecurityTable[CostCenterID]),
389
- SecurityTable[UserEmail] = UserEmail
390
- )
391
- RETURN
392
- DimCostCenter[CostCenterID] IN UserCostCenters
393
- ```
394
-
395
- ### Sensitive Data Handling
396
-
397
- - Salary details: Restrict to HR and Finance leadership
398
- - Board materials: Separate workspace with limited access
399
- - Forecast data: Limit to planning team until published
400
-
401
- ---
402
-
403
- ## Audit Trail
404
-
405
- ### Data Lineage Documentation
406
-
407
- Include hidden page or documentation showing:
408
- - Data source connections
409
- - Last refresh timestamp
410
- - ETL job status
411
- - Data quality metrics
412
-
413
- ```dax
414
- // Last Refresh Timestamp
415
- Last Refresh =
416
- NOW()
417
-
418
- // Record Count
419
- Total GL Records =
420
- COUNTROWS(FactGL)
421
-
422
- // Date Range
423
- Data From = MIN(FactGL[Date])
424
- Data To = MAX(FactGL[Date])
425
- ```
426
-
427
- ---
428
-
429
- ## Implementation Checklist
430
-
431
- - [ ] Validate Chart of Accounts mapping
432
- - [ ] Confirm fiscal calendar alignment
433
- - [ ] Build account hierarchy in DimAccount
434
- - [ ] Create scenario dimension (Actual, Budget, Forecast)
435
- - [ ] Implement sign convention (debit/credit handling)
436
- - [ ] Build P&L matrix with proper account ordering
437
- - [ ] Apply materiality thresholds for variance highlighting
438
- - [ ] Configure RLS for cost center security
439
- - [ ] Add data quality indicators
440
- - [ ] Test month-end close scenarios
441
- - [ ] Document variance explanations workflow
442
-
443
- ---
444
-
445
- ## Related Resources
446
-
447
- - [Account Hierarchy Patterns](../../snippets/data-modeling/)
448
- - [Financial DAX Patterns](../../snippets/dax/)
449
- - [Corporate Blue Theme](../../styles/power-bi/corporate-blue.json)