@luquimbo/bi-superpowers 1.0.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 (193) hide show
  1. package/.claude-plugin/plugin.json +8 -0
  2. package/.mcp.json +25 -0
  3. package/AGENTS.md +244 -0
  4. package/CHANGELOG.md +265 -0
  5. package/LICENSE +21 -0
  6. package/README.md +211 -0
  7. package/bin/build-plugin.js +30 -0
  8. package/bin/cli.js +1064 -0
  9. package/bin/commands/add.js +533 -0
  10. package/bin/commands/add.test.js +77 -0
  11. package/bin/commands/build-desktop.js +166 -0
  12. package/bin/commands/changelog.js +443 -0
  13. package/bin/commands/diff.js +325 -0
  14. package/bin/commands/lint.js +419 -0
  15. package/bin/commands/lint.test.js +103 -0
  16. package/bin/commands/mcp-setup.js +246 -0
  17. package/bin/commands/pull.js +287 -0
  18. package/bin/commands/pull.test.js +36 -0
  19. package/bin/commands/push.js +231 -0
  20. package/bin/commands/push.test.js +14 -0
  21. package/bin/commands/search.js +344 -0
  22. package/bin/commands/search.test.js +115 -0
  23. package/bin/commands/setup.js +545 -0
  24. package/bin/commands/setup.test.js +46 -0
  25. package/bin/commands/sync-profile.js +405 -0
  26. package/bin/commands/sync-profile.test.js +14 -0
  27. package/bin/commands/sync-source.js +418 -0
  28. package/bin/commands/sync-source.test.js +14 -0
  29. package/bin/commands/watch.js +206 -0
  30. package/bin/lib/generators/claude-plugin.js +266 -0
  31. package/bin/lib/generators/claude-plugin.test.js +110 -0
  32. package/bin/lib/generators/index.js +116 -0
  33. package/bin/lib/generators/shared.js +282 -0
  34. package/bin/lib/licensing/index.js +35 -0
  35. package/bin/lib/licensing/storage.js +364 -0
  36. package/bin/lib/licensing/storage.test.js +55 -0
  37. package/bin/lib/licensing/validator.js +213 -0
  38. package/bin/lib/licensing/validator.test.js +137 -0
  39. package/bin/lib/microsoft-mcp.js +176 -0
  40. package/bin/lib/microsoft-mcp.test.js +106 -0
  41. package/bin/lib/skills.js +84 -0
  42. package/bin/mcp/powerbi-modeling-launcher.js +38 -0
  43. package/bin/postinstall.js +44 -0
  44. package/bin/utils/errors.js +159 -0
  45. package/bin/utils/git.js +298 -0
  46. package/bin/utils/logger.js +142 -0
  47. package/bin/utils/mcp-detect.js +274 -0
  48. package/bin/utils/mcp-detect.test.js +105 -0
  49. package/bin/utils/pbix.js +305 -0
  50. package/bin/utils/pbix.test.js +37 -0
  51. package/bin/utils/profiles.js +312 -0
  52. package/bin/utils/projects.js +168 -0
  53. package/bin/utils/readline.js +206 -0
  54. package/bin/utils/readline.test.js +47 -0
  55. package/bin/utils/tui.js +314 -0
  56. package/bin/utils/tui.test.js +127 -0
  57. package/commands/contributions.md +265 -0
  58. package/commands/data-model-design.md +468 -0
  59. package/commands/dax-doctor.md +248 -0
  60. package/commands/fabric-scripts.md +452 -0
  61. package/commands/migration-assistant.md +290 -0
  62. package/commands/model-documenter.md +242 -0
  63. package/commands/pbi-connect.md +239 -0
  64. package/commands/project-kickoff.md +905 -0
  65. package/commands/report-layout.md +296 -0
  66. package/commands/rls-design.md +533 -0
  67. package/commands/theme-tweaker.md +624 -0
  68. package/config.example.json +23 -0
  69. package/config.json +23 -0
  70. package/desktop-extension/manifest.json +37 -0
  71. package/desktop-extension/package.json +10 -0
  72. package/desktop-extension/server.js +95 -0
  73. package/docs/openrouter-free-models.md +92 -0
  74. package/library/examples/README.md +151 -0
  75. package/library/examples/finance-reporting/README.md +351 -0
  76. package/library/examples/finance-reporting/data-model.md +267 -0
  77. package/library/examples/finance-reporting/measures.dax +557 -0
  78. package/library/examples/hr-analytics/README.md +371 -0
  79. package/library/examples/hr-analytics/data-model.md +315 -0
  80. package/library/examples/hr-analytics/measures.dax +460 -0
  81. package/library/examples/marketing-analytics/README.md +37 -0
  82. package/library/examples/marketing-analytics/data-model.md +62 -0
  83. package/library/examples/marketing-analytics/measures.dax +110 -0
  84. package/library/examples/retail-analytics/README.md +439 -0
  85. package/library/examples/retail-analytics/data-model.md +288 -0
  86. package/library/examples/retail-analytics/measures.dax +481 -0
  87. package/library/examples/supply-chain/README.md +37 -0
  88. package/library/examples/supply-chain/data-model.md +69 -0
  89. package/library/examples/supply-chain/measures.dax +77 -0
  90. package/library/examples/udf-library/README.md +228 -0
  91. package/library/examples/udf-library/functions.dax +571 -0
  92. package/library/snippets/dax/README.md +292 -0
  93. package/library/snippets/dax/business-domains.md +576 -0
  94. package/library/snippets/dax/calculate-patterns.md +276 -0
  95. package/library/snippets/dax/calculation-groups.md +489 -0
  96. package/library/snippets/dax/error-handling.md +495 -0
  97. package/library/snippets/dax/iterators-and-aggregations.md +474 -0
  98. package/library/snippets/dax/kpis-and-metrics.md +293 -0
  99. package/library/snippets/dax/rankings-and-topn.md +235 -0
  100. package/library/snippets/dax/security-patterns.md +413 -0
  101. package/library/snippets/dax/text-and-formatting.md +316 -0
  102. package/library/snippets/dax/time-intelligence.md +196 -0
  103. package/library/snippets/dax/user-defined-functions.md +477 -0
  104. package/library/snippets/dax/virtual-tables.md +546 -0
  105. package/library/snippets/excel-formulas/README.md +84 -0
  106. package/library/snippets/excel-formulas/aggregations.md +330 -0
  107. package/library/snippets/excel-formulas/dates-and-times.md +361 -0
  108. package/library/snippets/excel-formulas/dynamic-arrays.md +314 -0
  109. package/library/snippets/excel-formulas/lookups.md +169 -0
  110. package/library/snippets/excel-formulas/text-functions.md +363 -0
  111. package/library/snippets/governance/naming-conventions.md +97 -0
  112. package/library/snippets/governance/review-checklists.md +107 -0
  113. package/library/snippets/power-query/README.md +389 -0
  114. package/library/snippets/power-query/api-integration.md +707 -0
  115. package/library/snippets/power-query/connections.md +434 -0
  116. package/library/snippets/power-query/data-cleaning.md +298 -0
  117. package/library/snippets/power-query/error-handling.md +526 -0
  118. package/library/snippets/power-query/parameters.md +350 -0
  119. package/library/snippets/power-query/performance.md +506 -0
  120. package/library/snippets/power-query/transformations.md +330 -0
  121. package/library/snippets/report-design/accessibility.md +78 -0
  122. package/library/snippets/report-design/chart-selection.md +54 -0
  123. package/library/snippets/report-design/layout-patterns.md +87 -0
  124. package/library/templates/data-models/README.md +93 -0
  125. package/library/templates/data-models/finance-model.md +627 -0
  126. package/library/templates/data-models/retail-star-schema.md +473 -0
  127. package/library/templates/excel/README.md +83 -0
  128. package/library/templates/excel/budget-tracker.md +432 -0
  129. package/library/templates/excel/data-entry-form.md +533 -0
  130. package/library/templates/power-bi/README.md +72 -0
  131. package/library/templates/power-bi/finance-report.md +449 -0
  132. package/library/templates/power-bi/kpi-scorecard.md +461 -0
  133. package/library/templates/power-bi/sales-dashboard.md +281 -0
  134. package/library/themes/excel/README.md +436 -0
  135. package/library/themes/power-bi/README.md +271 -0
  136. package/library/themes/power-bi/accessible.json +307 -0
  137. package/library/themes/power-bi/bi-superpowers-default.json +858 -0
  138. package/library/themes/power-bi/corporate-blue.json +291 -0
  139. package/library/themes/power-bi/dark-mode.json +291 -0
  140. package/library/themes/power-bi/minimal.json +292 -0
  141. package/library/themes/power-bi/print-friendly.json +309 -0
  142. package/package.json +93 -0
  143. package/skills/contributions/SKILL.md +267 -0
  144. package/skills/data-model-design/SKILL.md +470 -0
  145. package/skills/data-modeling/SKILL.md +254 -0
  146. package/skills/data-quality/SKILL.md +664 -0
  147. package/skills/dax/SKILL.md +708 -0
  148. package/skills/dax-doctor/SKILL.md +250 -0
  149. package/skills/dax-udf/SKILL.md +489 -0
  150. package/skills/deployment/SKILL.md +320 -0
  151. package/skills/excel-formulas/SKILL.md +463 -0
  152. package/skills/fabric-scripts/SKILL.md +454 -0
  153. package/skills/fast-standard/SKILL.md +509 -0
  154. package/skills/governance/SKILL.md +205 -0
  155. package/skills/migration-assistant/SKILL.md +292 -0
  156. package/skills/model-documenter/SKILL.md +244 -0
  157. package/skills/pbi-connect/SKILL.md +241 -0
  158. package/skills/power-query/SKILL.md +406 -0
  159. package/skills/project-kickoff/SKILL.md +907 -0
  160. package/skills/query-performance/SKILL.md +480 -0
  161. package/skills/report-design/SKILL.md +207 -0
  162. package/skills/report-layout/SKILL.md +298 -0
  163. package/skills/rls-design/SKILL.md +535 -0
  164. package/skills/semantic-model/SKILL.md +237 -0
  165. package/skills/testing-validation/SKILL.md +643 -0
  166. package/skills/theme-tweaker/SKILL.md +626 -0
  167. package/src/content/base.md +237 -0
  168. package/src/content/mcp-requirements.json +69 -0
  169. package/src/content/routing.md +203 -0
  170. package/src/content/skills/contributions.md +259 -0
  171. package/src/content/skills/data-model-design.md +462 -0
  172. package/src/content/skills/data-modeling.md +246 -0
  173. package/src/content/skills/data-quality.md +656 -0
  174. package/src/content/skills/dax-doctor.md +242 -0
  175. package/src/content/skills/dax-udf.md +481 -0
  176. package/src/content/skills/dax.md +700 -0
  177. package/src/content/skills/deployment.md +312 -0
  178. package/src/content/skills/excel-formulas.md +455 -0
  179. package/src/content/skills/fabric-scripts.md +446 -0
  180. package/src/content/skills/fast-standard.md +501 -0
  181. package/src/content/skills/governance.md +197 -0
  182. package/src/content/skills/migration-assistant.md +284 -0
  183. package/src/content/skills/model-documenter.md +236 -0
  184. package/src/content/skills/pbi-connect.md +233 -0
  185. package/src/content/skills/power-query.md +398 -0
  186. package/src/content/skills/project-kickoff.md +899 -0
  187. package/src/content/skills/query-performance.md +472 -0
  188. package/src/content/skills/report-design.md +199 -0
  189. package/src/content/skills/report-layout.md +290 -0
  190. package/src/content/skills/rls-design.md +527 -0
  191. package/src/content/skills/semantic-model.md +229 -0
  192. package/src/content/skills/testing-validation.md +635 -0
  193. package/src/content/skills/theme-tweaker.md +618 -0
@@ -0,0 +1,461 @@
1
+ # KPI Scorecard Template
2
+
3
+ ## Overview
4
+
5
+ A strategic KPI monitoring dashboard for tracking organizational performance against targets. Designed for balanced scorecard methodology with support for multiple perspectives and drill-down capabilities.
6
+
7
+ ---
8
+
9
+ ## Target Audience
10
+
11
+ - C-Suite Executives
12
+ - Department Heads
13
+ - Strategy & Operations Teams
14
+ - Board of Directors
15
+
16
+ ---
17
+
18
+ ## Data Requirements
19
+
20
+ ### Required Tables
21
+
22
+ | Table | Description | Key Columns |
23
+ |-------|-------------|-------------|
24
+ | **FactKPI** | KPI values by period | KPIID, Date, ActualValue, TargetValue, PriorValue |
25
+ | **DimKPI** | KPI definitions | KPIID, KPIName, Description, Unit, Format, Polarity, Perspective |
26
+ | **DimDate** | Date dimension | Date, Year, Quarter, Month, Period |
27
+ | **DimPerspective** | Balanced Scorecard perspectives | PerspectiveID, Name, SortOrder |
28
+ | **DimOwner** | KPI owners | OwnerID, Name, Department, Email |
29
+
30
+ ### Optional Tables
31
+
32
+ | Table | Description | Use Case |
33
+ |-------|-------------|----------|
34
+ | **FactKPICommentary** | Period-end comments | Narrative explanations |
35
+ | **DimInitiative** | Strategic initiatives | Linking KPIs to projects |
36
+ | **FactMilestone** | Initiative milestones | Progress tracking |
37
+
38
+ ---
39
+
40
+ ## KPI Framework
41
+
42
+ ### Balanced Scorecard Perspectives
43
+
44
+ | Perspective | Focus | Example KPIs |
45
+ |-------------|-------|--------------|
46
+ | **Financial** | Shareholder value | Revenue Growth, EBITDA Margin, ROI |
47
+ | **Customer** | Customer satisfaction | NPS, Customer Retention, CSAT |
48
+ | **Internal Process** | Operational excellence | Cycle Time, Quality Rate, Utilization |
49
+ | **Learning & Growth** | Organizational capacity | Employee Engagement, Training Hours, Innovation Index |
50
+
51
+ ### KPI Definition Structure
52
+
53
+ ```
54
+ DimKPI columns:
55
+ - KPIID: Unique identifier
56
+ - KPIName: Display name
57
+ - Description: Full description for tooltips
58
+ - Unit: "Currency", "Percent", "Number", "Days", "Score"
59
+ - Format: DAX format string
60
+ - Polarity: "Higher is Better" or "Lower is Better"
61
+ - Perspective: Link to DimPerspective
62
+ - Frequency: "Monthly", "Quarterly", "Annual"
63
+ - DataSource: Origin system
64
+ - Formula: Calculation methodology
65
+ - Owner: Responsible person
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Recommended Measures
71
+
72
+ ### Core KPI Metrics
73
+
74
+ ```dax
75
+ // Actual Value
76
+ Actual =
77
+ SUM(FactKPI[ActualValue])
78
+
79
+ // Target Value
80
+ Target =
81
+ SUM(FactKPI[TargetValue])
82
+
83
+ // Prior Period Value
84
+ Prior =
85
+ SUM(FactKPI[PriorValue])
86
+
87
+ // Achievement %
88
+ Achievement % =
89
+ VAR _Actual = [Actual]
90
+ VAR _Target = [Target]
91
+ VAR _Polarity = SELECTEDVALUE(DimKPI[Polarity])
92
+ RETURN
93
+ IF(
94
+ _Polarity = "Lower is Better",
95
+ DIVIDE(_Target, _Actual), // Inverse for "lower is better"
96
+ DIVIDE(_Actual, _Target)
97
+ )
98
+
99
+ // Variance to Target
100
+ Variance =
101
+ [Actual] - [Target]
102
+
103
+ // Variance %
104
+ Variance % =
105
+ DIVIDE([Variance], ABS([Target]))
106
+ ```
107
+
108
+ ### Status Indicators
109
+
110
+ ```dax
111
+ // KPI Status (Traffic Light)
112
+ KPI Status =
113
+ VAR _Achievement = [Achievement %]
114
+ VAR _Polarity = SELECTEDVALUE(DimKPI[Polarity])
115
+ RETURN
116
+ SWITCH(
117
+ TRUE(),
118
+ _Achievement >= 1, "Green", // On or above target
119
+ _Achievement >= 0.9, "Yellow", // Within 10% of target
120
+ _Achievement < 0.9, "Red" // More than 10% below
121
+ )
122
+
123
+ // Status Icon
124
+ Status Icon =
125
+ SWITCH(
126
+ [KPI Status],
127
+ "Green", UNICHAR(9679), // Filled circle
128
+ "Yellow", UNICHAR(9681), // Half circle
129
+ "Red", UNICHAR(9675) // Empty circle
130
+ )
131
+
132
+ // Trend Arrow
133
+ Trend Arrow =
134
+ VAR _Current = [Actual]
135
+ VAR _Prior = [Prior]
136
+ VAR _Change = _Current - _Prior
137
+ RETURN
138
+ SWITCH(
139
+ TRUE(),
140
+ _Change > 0, UNICHAR(9650), // Up arrow
141
+ _Change < 0, UNICHAR(9660), // Down arrow
142
+ UNICHAR(9644) // Horizontal line
143
+ )
144
+ ```
145
+
146
+ ### Period Intelligence
147
+
148
+ ```dax
149
+ // Current Period Actual
150
+ Current Period =
151
+ CALCULATE(
152
+ [Actual],
153
+ LASTDATE(DimDate[Date])
154
+ )
155
+
156
+ // YTD Actual
157
+ YTD =
158
+ CALCULATE(
159
+ [Actual],
160
+ DATESYTD(DimDate[Date])
161
+ )
162
+
163
+ // Full Year Target
164
+ FY Target =
165
+ CALCULATE(
166
+ [Target],
167
+ DATESYTD(DimDate[Date])
168
+ )
169
+
170
+ // Projected Year-End (Linear)
171
+ Projected FY =
172
+ VAR _YTD = [YTD]
173
+ VAR _DaysElapsed = DATEDIFF(
174
+ MIN(DATESYTD(DimDate[Date])),
175
+ MAX(DATESYTD(DimDate[Date])),
176
+ DAY
177
+ ) + 1
178
+ VAR _DaysInYear = 365
179
+ RETURN
180
+ DIVIDE(_YTD * _DaysInYear, _DaysElapsed)
181
+ ```
182
+
183
+ ### Scoring
184
+
185
+ ```dax
186
+ // Weighted Score (for overall scorecard)
187
+ Weighted Score =
188
+ SUMX(
189
+ DimKPI,
190
+ [Achievement %] * DimKPI[Weight]
191
+ )
192
+
193
+ // Perspective Score
194
+ Perspective Score =
195
+ CALCULATE(
196
+ AVERAGEX(DimKPI, [Achievement %]),
197
+ ALLEXCEPT(DimKPI, DimKPI[Perspective])
198
+ )
199
+
200
+ // Overall Scorecard Score
201
+ Overall Score =
202
+ AVERAGEX(
203
+ VALUES(DimPerspective[Name]),
204
+ [Perspective Score]
205
+ )
206
+ ```
207
+
208
+ ---
209
+
210
+ ## Page Structure
211
+
212
+ ### Page 1: Executive Scorecard
213
+
214
+ **Purpose:** Single-page strategic overview
215
+
216
+ | Visual | Position | Content |
217
+ |--------|----------|---------|
218
+ | Card | Top-center | Overall Score with gauge visual |
219
+ | Multi-row Card | Top row | 4 Perspective scores (Financial, Customer, Process, L&G) |
220
+ | Matrix | Main area | KPI summary by perspective: |
221
+ | | | Columns: KPI Name, Actual, Target, Achievement %, Status, Trend |
222
+ | | | Rows grouped by Perspective |
223
+ | | | Conditional formatting on Status column |
224
+
225
+ **Layout concept:**
226
+ ```
227
+ +--------------------------------------------------+
228
+ | OVERALL SCORE: 87% |
229
+ +----------+----------+----------+----------+------+
230
+ | Finance | Customer | Process | Learning | ... |
231
+ | 92% | 85% | 88% | 82% | |
232
+ +----------+----------+----------+----------+------+
233
+ | |
234
+ | PERSPECTIVE: Financial |
235
+ | +--------------------------------------------+ |
236
+ | | Revenue Growth | $2.1M | $2.0M |105%|G | |
237
+ | | EBITDA Margin | 18% | 20% | 90%|Y | |
238
+ | | ROI | 15% | 12% |125%|G | |
239
+ | +--------------------------------------------+ |
240
+ | |
241
+ | PERSPECTIVE: Customer |
242
+ | +--------------------------------------------+ |
243
+ | | NPS | 45 | 50 | 90%|Y | |
244
+ | | Retention Rate | 88% | 85% |104%|G | |
245
+ | +--------------------------------------------+ |
246
+ | ... |
247
+ +--------------------------------------------------+
248
+ ```
249
+
250
+ ### Page 2: Financial Perspective
251
+
252
+ **Purpose:** Detailed financial KPI analysis
253
+
254
+ | Visual | Position | Content |
255
+ |--------|----------|---------|
256
+ | Cards | Top row | Key financial KPIs with YTD values |
257
+ | Line Chart | Middle-left | Monthly trend with target line |
258
+ | Waterfall | Middle-right | YTD performance bridge |
259
+ | Table | Bottom | Detailed monthly breakdown |
260
+
261
+ ### Page 3: Customer Perspective
262
+
263
+ **Purpose:** Customer-centric KPIs
264
+
265
+ | Visual | Position | Content |
266
+ |--------|----------|---------|
267
+ | Gauge | Top row | NPS, CSAT, Retention Rate |
268
+ | Line Chart | Middle | Trend over time with benchmarks |
269
+ | Bar Chart | Bottom-left | KPI by segment/region |
270
+ | Commentary | Bottom-right | Latest period narrative |
271
+
272
+ ### Page 4: Process Perspective
273
+
274
+ **Purpose:** Operational efficiency metrics
275
+
276
+ | Visual | Position | Content |
277
+ |--------|----------|---------|
278
+ | KPI cards | Top | Cycle time, Quality, Throughput |
279
+ | Control Chart | Middle | Process stability indicators |
280
+ | Pareto | Bottom-left | Top issues/defects |
281
+ | Table | Bottom-right | Process metrics by department |
282
+
283
+ ### Page 5: Learning & Growth
284
+
285
+ **Purpose:** People and capability metrics
286
+
287
+ | Visual | Position | Content |
288
+ |--------|----------|---------|
289
+ | Cards | Top | Engagement Score, Training Hours, Turnover |
290
+ | Clustered Bar | Middle | Metrics by department |
291
+ | Line Chart | Bottom-left | Trend analysis |
292
+ | Matrix | Bottom-right | Initiative progress |
293
+
294
+ ### Page 6: KPI Detail (Drillthrough)
295
+
296
+ **Purpose:** Deep dive on individual KPI
297
+
298
+ | Visual | Position | Content |
299
+ |--------|----------|---------|
300
+ | Header | Top | KPI Name, Description, Owner |
301
+ | KPI Visual | Top-right | Large KPI card with target |
302
+ | Line Chart | Middle | Full history with target band |
303
+ | Table | Bottom-left | Monthly data table |
304
+ | Text | Bottom-right | Commentary and action items |
305
+
306
+ ---
307
+
308
+ ## Visual Specifications
309
+
310
+ ### Scorecard Color Palette
311
+
312
+ | Status | Color | Hex | Usage |
313
+ |--------|-------|-----|-------|
314
+ | Green (On Track) | Green | #2E7D32 | >= 100% of target |
315
+ | Yellow (At Risk) | Amber | #F9A825 | 90-99% of target |
316
+ | Red (Off Track) | Red | #C62828 | < 90% of target |
317
+ | Neutral | Gray | #757575 | No target or N/A |
318
+
319
+ ### Conditional Formatting Rules
320
+
321
+ **Status column (background):**
322
+ ```
323
+ Green: #E8F5E9
324
+ Yellow: #FFF8E1
325
+ Red: #FFEBEE
326
+ ```
327
+
328
+ **Achievement % (data bars):**
329
+ ```
330
+ Minimum: 0%
331
+ Maximum: 150%
332
+ Positive bar: #4CAF50
333
+ Negative bar: #EF5350
334
+ ```
335
+
336
+ ### KPI Card Design
337
+
338
+ ```
339
+ +------------------------+
340
+ | [Icon] Revenue Growth |
341
+ | |
342
+ | $2.1M [G] |
343
+ | Target: $2.0M |
344
+ | +5.2% vs PY |
345
+ +------------------------+
346
+ ```
347
+
348
+ ---
349
+
350
+ ## Interactive Features
351
+
352
+ ### Drillthrough Configuration
353
+
354
+ From any KPI in the matrix, enable drillthrough to:
355
+ - KPI Detail page (full history and analysis)
356
+ - Initiative page (related strategic projects)
357
+
358
+ ### Tooltip Enhancement
359
+
360
+ Custom tooltip page showing:
361
+ - KPI definition and formula
362
+ - Monthly spark trend
363
+ - Owner contact information
364
+ - Last updated timestamp
365
+
366
+ ### Bookmarks
367
+
368
+ - "Current Month" - Latest period only
369
+ - "YTD View" - Year-to-date aggregation
370
+ - "Perspective Focus" - One perspective at a time
371
+ - "Print View" - Simplified layout for export
372
+
373
+ ---
374
+
375
+ ## Alerting Integration
376
+
377
+ ### Power Automate Triggers
378
+
379
+ Configure alerts when:
380
+ - KPI moves from Green to Yellow or Red
381
+ - Achievement drops below 85%
382
+ - Target is achieved for the first time
383
+ - Commentary is added or updated
384
+
385
+ ### Email Distribution
386
+
387
+ ```
388
+ Subject: [KPI Alert] {KPIName} Status Changed to {Status}
389
+
390
+ Body:
391
+ KPI: {KPIName}
392
+ Current Value: {Actual}
393
+ Target: {Target}
394
+ Achievement: {Achievement%}
395
+ Owner: {Owner}
396
+
397
+ View Dashboard: [Link]
398
+ ```
399
+
400
+ ---
401
+
402
+ ## Data Refresh Considerations
403
+
404
+ ### Refresh Frequency
405
+
406
+ | KPI Type | Refresh | Notes |
407
+ |----------|---------|-------|
408
+ | Financial | Monthly | After month-end close |
409
+ | Operational | Daily/Weekly | Automated from source systems |
410
+ | Survey-based | Quarterly | After survey completion |
411
+ | Annual | Annually | Strategic planning cycle |
412
+
413
+ ### Incremental Refresh
414
+
415
+ ```
416
+ Configure incremental refresh for FactKPI:
417
+ - Archive data older than 3 years
418
+ - Incremental: Last 12 months
419
+ - Always refresh: Current month
420
+ ```
421
+
422
+ ---
423
+
424
+ ## Implementation Checklist
425
+
426
+ - [ ] Define KPI catalog with owners
427
+ - [ ] Establish target-setting methodology
428
+ - [ ] Configure DimKPI with all metadata
429
+ - [ ] Build calculation logic respecting polarity
430
+ - [ ] Design status thresholds (90%/100%)
431
+ - [ ] Create conditional formatting rules
432
+ - [ ] Configure drillthrough pages
433
+ - [ ] Set up Power Automate alerts
434
+ - [ ] Document data sources and refresh schedule
435
+ - [ ] Train KPI owners on commentary workflow
436
+ - [ ] Establish governance for target updates
437
+
438
+ ---
439
+
440
+ ## Governance
441
+
442
+ ### Change Control
443
+
444
+ - Target changes require approval from Strategy team
445
+ - KPI additions/removals go through quarterly review
446
+ - Formula changes documented with effective date
447
+
448
+ ### Data Quality
449
+
450
+ Include data quality indicators:
451
+ - Freshness: Days since last update
452
+ - Completeness: % of expected data points present
453
+ - Accuracy: Variance from source system validation
454
+
455
+ ---
456
+
457
+ ## Related Resources
458
+
459
+ - [DAX Patterns](../../snippets/dax/)
460
+ - [Conditional Formatting Best Practices](../../skills/data-modeling/SKILL.md)
461
+ - [Corporate Blue Theme](../../styles/power-bi/corporate-blue.json)