@luquimbo/bi-superpowers 3.1.0 → 3.2.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 (110) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +1 -1
  4. package/.plugin/plugin.json +1 -1
  5. package/README.md +2 -2
  6. package/bin/build-plugin.js +6 -6
  7. package/bin/cli.js +169 -310
  8. package/bin/commands/install.js +87 -70
  9. package/bin/commands/install.test.js +2 -2
  10. package/bin/lib/agents.js +21 -2
  11. package/bin/lib/mcp-config.js +27 -5
  12. package/bin/lib/mcp-config.test.js +1 -1
  13. package/desktop-extension/manifest.json +4 -11
  14. package/desktop-extension/server.js +34 -25
  15. package/package.json +3 -9
  16. package/skills/pbi-connect/SKILL.md +1 -1
  17. package/skills/project-kickoff/SKILL.md +1 -1
  18. package/bin/commands/add.js +0 -533
  19. package/bin/commands/add.test.js +0 -77
  20. package/bin/commands/changelog.js +0 -443
  21. package/bin/commands/pull.js +0 -287
  22. package/bin/commands/pull.test.js +0 -36
  23. package/bin/commands/push.js +0 -231
  24. package/bin/commands/push.test.js +0 -14
  25. package/bin/commands/search.js +0 -344
  26. package/bin/commands/search.test.js +0 -115
  27. package/bin/commands/setup.js +0 -545
  28. package/bin/commands/setup.test.js +0 -46
  29. package/bin/commands/sync-profile.js +0 -405
  30. package/bin/commands/sync-profile.test.js +0 -14
  31. package/bin/commands/sync-source.js +0 -418
  32. package/bin/commands/sync-source.test.js +0 -14
  33. package/bin/utils/errors.js +0 -159
  34. package/bin/utils/git.js +0 -298
  35. package/bin/utils/logger.js +0 -142
  36. package/bin/utils/pbix.js +0 -305
  37. package/bin/utils/pbix.test.js +0 -37
  38. package/bin/utils/profiles.js +0 -312
  39. package/bin/utils/projects.js +0 -169
  40. package/bin/utils/readline.js +0 -206
  41. package/bin/utils/readline.test.js +0 -47
  42. package/docs/openrouter-free-models.md +0 -92
  43. package/library/examples/README.md +0 -151
  44. package/library/examples/finance-reporting/README.md +0 -351
  45. package/library/examples/finance-reporting/data-model.md +0 -267
  46. package/library/examples/finance-reporting/measures.dax +0 -557
  47. package/library/examples/hr-analytics/README.md +0 -371
  48. package/library/examples/hr-analytics/data-model.md +0 -315
  49. package/library/examples/hr-analytics/measures.dax +0 -460
  50. package/library/examples/marketing-analytics/README.md +0 -37
  51. package/library/examples/marketing-analytics/data-model.md +0 -62
  52. package/library/examples/marketing-analytics/measures.dax +0 -110
  53. package/library/examples/retail-analytics/README.md +0 -439
  54. package/library/examples/retail-analytics/data-model.md +0 -288
  55. package/library/examples/retail-analytics/measures.dax +0 -481
  56. package/library/examples/supply-chain/README.md +0 -37
  57. package/library/examples/supply-chain/data-model.md +0 -69
  58. package/library/examples/supply-chain/measures.dax +0 -77
  59. package/library/examples/udf-library/README.md +0 -228
  60. package/library/examples/udf-library/functions.dax +0 -571
  61. package/library/snippets/dax/README.md +0 -292
  62. package/library/snippets/dax/business-domains.md +0 -576
  63. package/library/snippets/dax/calculate-patterns.md +0 -276
  64. package/library/snippets/dax/calculation-groups.md +0 -489
  65. package/library/snippets/dax/error-handling.md +0 -495
  66. package/library/snippets/dax/iterators-and-aggregations.md +0 -474
  67. package/library/snippets/dax/kpis-and-metrics.md +0 -293
  68. package/library/snippets/dax/rankings-and-topn.md +0 -235
  69. package/library/snippets/dax/security-patterns.md +0 -413
  70. package/library/snippets/dax/text-and-formatting.md +0 -316
  71. package/library/snippets/dax/time-intelligence.md +0 -196
  72. package/library/snippets/dax/user-defined-functions.md +0 -477
  73. package/library/snippets/dax/virtual-tables.md +0 -546
  74. package/library/snippets/excel-formulas/README.md +0 -84
  75. package/library/snippets/excel-formulas/aggregations.md +0 -330
  76. package/library/snippets/excel-formulas/dates-and-times.md +0 -361
  77. package/library/snippets/excel-formulas/dynamic-arrays.md +0 -314
  78. package/library/snippets/excel-formulas/lookups.md +0 -169
  79. package/library/snippets/excel-formulas/text-functions.md +0 -363
  80. package/library/snippets/governance/naming-conventions.md +0 -97
  81. package/library/snippets/governance/review-checklists.md +0 -107
  82. package/library/snippets/power-query/README.md +0 -389
  83. package/library/snippets/power-query/api-integration.md +0 -707
  84. package/library/snippets/power-query/connections.md +0 -434
  85. package/library/snippets/power-query/data-cleaning.md +0 -298
  86. package/library/snippets/power-query/error-handling.md +0 -526
  87. package/library/snippets/power-query/parameters.md +0 -350
  88. package/library/snippets/power-query/performance.md +0 -506
  89. package/library/snippets/power-query/transformations.md +0 -330
  90. package/library/snippets/report-design/accessibility.md +0 -78
  91. package/library/snippets/report-design/chart-selection.md +0 -54
  92. package/library/snippets/report-design/layout-patterns.md +0 -87
  93. package/library/templates/data-models/README.md +0 -93
  94. package/library/templates/data-models/finance-model.md +0 -627
  95. package/library/templates/data-models/retail-star-schema.md +0 -473
  96. package/library/templates/excel/README.md +0 -83
  97. package/library/templates/excel/budget-tracker.md +0 -432
  98. package/library/templates/excel/data-entry-form.md +0 -533
  99. package/library/templates/power-bi/README.md +0 -72
  100. package/library/templates/power-bi/finance-report.md +0 -449
  101. package/library/templates/power-bi/kpi-scorecard.md +0 -461
  102. package/library/templates/power-bi/sales-dashboard.md +0 -281
  103. package/library/themes/excel/README.md +0 -436
  104. package/library/themes/power-bi/README.md +0 -271
  105. package/library/themes/power-bi/accessible.json +0 -307
  106. package/library/themes/power-bi/bi-superpowers-default.json +0 -858
  107. package/library/themes/power-bi/corporate-blue.json +0 -291
  108. package/library/themes/power-bi/dark-mode.json +0 -291
  109. package/library/themes/power-bi/minimal.json +0 -292
  110. package/library/themes/power-bi/print-friendly.json +0 -309
@@ -1,276 +0,0 @@
1
- # CALCULATE Patterns in DAX
2
-
3
- Essential CALCULATE patterns for filtering and context modification.
4
-
5
- ## Basic Filter Patterns
6
-
7
- ### Simple Filter
8
- ```dax
9
- Sales_HighValue =
10
- CALCULATE(
11
- SUM(Sales[Amount]),
12
- Sales[Amount] > 1000
13
- )
14
- ```
15
-
16
- ### Multiple Filters (AND logic)
17
- ```dax
18
- Sales_HighValue_2024 =
19
- CALCULATE(
20
- SUM(Sales[Amount]),
21
- Sales[Amount] > 1000,
22
- 'Date'[Year] = 2024
23
- )
24
- ```
25
-
26
- ### Filter on Related Table
27
- ```dax
28
- Sales_Electronics =
29
- CALCULATE(
30
- SUM(Sales[Amount]),
31
- Products[Category] = "Electronics"
32
- )
33
- ```
34
-
35
- ## ALL Function Patterns
36
-
37
- ### Remove All Filters
38
- ```dax
39
- TotalSales_All =
40
- CALCULATE(
41
- SUM(Sales[Amount]),
42
- ALL(Sales)
43
- )
44
- ```
45
-
46
- ### Remove Filter from One Column
47
- ```dax
48
- Sales_AllProducts =
49
- CALCULATE(
50
- SUM(Sales[Amount]),
51
- ALL(Products[ProductName])
52
- )
53
- ```
54
-
55
- ### Remove Filter but Keep Others (ALLEXCEPT)
56
- ```dax
57
- Sales_KeepCategory =
58
- CALCULATE(
59
- SUM(Sales[Amount]),
60
- ALLEXCEPT(Products, Products[Category])
61
- )
62
- ```
63
-
64
- ### Percentage of Total
65
- ```dax
66
- Pct_of_Total =
67
- DIVIDE(
68
- SUM(Sales[Amount]),
69
- CALCULATE(
70
- SUM(Sales[Amount]),
71
- ALL(Sales)
72
- )
73
- )
74
- ```
75
-
76
- ### Percentage of Category
77
- ```dax
78
- Pct_of_Category =
79
- DIVIDE(
80
- SUM(Sales[Amount]),
81
- CALCULATE(
82
- SUM(Sales[Amount]),
83
- ALLEXCEPT(Products, Products[Category])
84
- )
85
- )
86
- ```
87
-
88
- ## FILTER Function Patterns
89
-
90
- ### Complex Filter Logic
91
- ```dax
92
- Sales_TopCategories =
93
- CALCULATE(
94
- SUM(Sales[Amount]),
95
- FILTER(
96
- ALL(Products[Category]),
97
- [CategorySales] > 100000
98
- )
99
- )
100
- ```
101
-
102
- ### Filter with OR Logic
103
- ```dax
104
- Sales_SelectedRegions =
105
- CALCULATE(
106
- SUM(Sales[Amount]),
107
- FILTER(
108
- ALL(Geography[Region]),
109
- Geography[Region] IN {"North", "South", "West"}
110
- )
111
- )
112
- ```
113
-
114
- ### Filter on Measure Result
115
- ```dax
116
- Sales_ProfitableProducts =
117
- CALCULATE(
118
- SUM(Sales[Amount]),
119
- FILTER(
120
- ALL(Products[ProductName]),
121
- [ProfitMargin] > 0.20
122
- )
123
- )
124
- ```
125
-
126
- ## KEEPFILTERS Pattern
127
-
128
- ### Add Filter Without Replacing
129
- ```dax
130
- Sales_Premium_KeepFilters =
131
- CALCULATE(
132
- SUM(Sales[Amount]),
133
- KEEPFILTERS(Products[Tier] = "Premium")
134
- )
135
- ```
136
-
137
- ### Intersection of Filters
138
- ```dax
139
- Sales_Filtered_Intersection =
140
- CALCULATE(
141
- SUM(Sales[Amount]),
142
- KEEPFILTERS(
143
- FILTER(
144
- ALL(Products[Category]),
145
- Products[Category] IN {"Electronics", "Clothing"}
146
- )
147
- )
148
- )
149
- ```
150
-
151
- ## REMOVEFILTERS Pattern (DAX 2019+)
152
-
153
- ### Clear Specific Filters
154
- ```dax
155
- Sales_NoProductFilter =
156
- CALCULATE(
157
- SUM(Sales[Amount]),
158
- REMOVEFILTERS(Products)
159
- )
160
- ```
161
-
162
- ### Clear Column Filter
163
- ```dax
164
- Sales_NoYearFilter =
165
- CALCULATE(
166
- SUM(Sales[Amount]),
167
- REMOVEFILTERS('Date'[Year])
168
- )
169
- ```
170
-
171
- ## USERELATIONSHIP Pattern
172
-
173
- ### Activate Inactive Relationship
174
- ```dax
175
- Sales_ByShipDate =
176
- CALCULATE(
177
- SUM(Sales[Amount]),
178
- USERELATIONSHIP(Sales[ShipDate], 'Date'[Date])
179
- )
180
- ```
181
-
182
- ### Compare Order vs Ship Date
183
- ```dax
184
- Sales_Variance_OrderVsShip =
185
- VAR _ByOrderDate = SUM(Sales[Amount])
186
- VAR _ByShipDate =
187
- CALCULATE(
188
- SUM(Sales[Amount]),
189
- USERELATIONSHIP(Sales[ShipDate], 'Date'[Date])
190
- )
191
- RETURN
192
- _ByOrderDate - _ByShipDate
193
- ```
194
-
195
- ## CROSSFILTER Pattern
196
-
197
- ### Change Filter Direction
198
- ```dax
199
- ProductCount_BySales =
200
- CALCULATE(
201
- DISTINCTCOUNT(Products[ProductID]),
202
- CROSSFILTER(Sales[ProductID], Products[ProductID], BOTH)
203
- )
204
- ```
205
-
206
- ### Disable Relationship
207
- ```dax
208
- Sales_IgnoreProductRelation =
209
- CALCULATE(
210
- SUM(Sales[Amount]),
211
- CROSSFILTER(Sales[ProductID], Products[ProductID], NONE)
212
- )
213
- ```
214
-
215
- ## Context Transition
216
-
217
- ### Row Context to Filter Context
218
- ```dax
219
- -- In a calculated column or iterator
220
- SalesForThisProduct =
221
- CALCULATE(SUM(Sales[Amount]))
222
- -- Converts current row context to filter context
223
- ```
224
-
225
- ### EARLIER for Nested Row Context
226
- ```dax
227
- -- In a calculated column
228
- RunningTotal =
229
- CALCULATE(
230
- SUM(Sales[Amount]),
231
- FILTER(
232
- ALL(Sales),
233
- Sales[Date] <= EARLIER(Sales[Date])
234
- )
235
- )
236
- ```
237
-
238
- ## Virtual Tables
239
-
240
- ### CALCULATE with SUMMARIZE
241
- ```dax
242
- Sales_TopMonths =
243
- CALCULATE(
244
- SUM(Sales[Amount]),
245
- TOPN(
246
- 3,
247
- SUMMARIZE(
248
- Sales,
249
- 'Date'[MonthYear],
250
- "@MonthlySales", SUM(Sales[Amount])
251
- ),
252
- [@MonthlySales],
253
- DESC
254
- )
255
- )
256
- ```
257
-
258
- ### CALCULATE with TREATAS
259
- ```dax
260
- Sales_MatchingProducts =
261
- CALCULATE(
262
- SUM(Sales[Amount]),
263
- TREATAS(
264
- VALUES(BudgetProducts[ProductID]),
265
- Products[ProductID]
266
- )
267
- )
268
- ```
269
-
270
- ## Usage Notes
271
-
272
- - CALCULATE is the most important DAX function
273
- - Always prefer simple column filters over FILTER when possible (better performance)
274
- - Use FILTER for complex conditions or when filtering on measures
275
- - ALL removes filters; REMOVEFILTERS is more explicit (same result)
276
- - KEEPFILTERS intersects filters instead of replacing them