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 (276) hide show
  1. package/.claude-plugin/marketplace.json +31 -0
  2. package/.claude-plugin/plugin.json +34 -0
  3. package/.claude-plugin/skill-manifest.json +79 -0
  4. package/.mcp.json +13 -0
  5. package/.plugin/plugin.json +14 -0
  6. package/LICENSE +21 -0
  7. package/README.md +849 -0
  8. package/bin/build-plugin.js +97 -0
  9. package/bin/cli.js +891 -0
  10. package/bin/commands/autoupdate.js +128 -0
  11. package/bin/commands/build-desktop.js +368 -0
  12. package/bin/commands/create-from-template.js +165 -0
  13. package/bin/commands/diff.js +435 -0
  14. package/bin/commands/install.js +542 -0
  15. package/bin/commands/lint.js +441 -0
  16. package/bin/commands/mcp-setup.js +255 -0
  17. package/bin/commands/session-update.js +204 -0
  18. package/bin/commands/smoke-test.js +20 -0
  19. package/bin/commands/uninstall.js +611 -0
  20. package/bin/commands/update-check.js +427 -0
  21. package/bin/commands/validate-cases.js +264 -0
  22. package/bin/commands/validate-projects.js +426 -0
  23. package/bin/commands/watch.js +251 -0
  24. package/bin/lib/agents.js +62 -0
  25. package/bin/lib/base-template-smoke.js +299 -0
  26. package/bin/lib/claude-hooks.js +160 -0
  27. package/bin/lib/generators/claude-plugin.js +529 -0
  28. package/bin/lib/generators/index.js +116 -0
  29. package/bin/lib/generators/shared.js +257 -0
  30. package/bin/lib/mcp-config.js +835 -0
  31. package/bin/lib/microsoft-mcp.js +206 -0
  32. package/bin/lib/powerbi-mcp-session.js +140 -0
  33. package/bin/lib/skills.js +164 -0
  34. package/bin/lib/template-scaffold.js +366 -0
  35. package/bin/mcp/powerbi-modeling-launcher.js +42 -0
  36. package/bin/postinstall.js +50 -0
  37. package/bin/utils/mcp-detect.js +346 -0
  38. package/bin/utils/tui.js +314 -0
  39. package/commands/bi-connect.md +520 -0
  40. package/commands/bi-dax.md +464 -0
  41. package/commands/bi-kickoff.md +550 -0
  42. package/commands/bi-modeling.md +485 -0
  43. package/commands/bi-performance.md +521 -0
  44. package/commands/bi-powerquery.md +229 -0
  45. package/commands/bi-refactor.md +249 -0
  46. package/commands/bi-scorecard.md +268 -0
  47. package/commands/bi-start.md +272 -0
  48. package/config.example.json +23 -0
  49. package/config.json +23 -0
  50. package/desktop-extension/manifest.json +30 -0
  51. package/desktop-extension/package.json +10 -0
  52. package/desktop-extension/server.js +137 -0
  53. package/package.json +94 -0
  54. package/skills/bi-connect/SKILL.md +522 -0
  55. package/skills/bi-connect/scripts/update-check.js +427 -0
  56. package/skills/bi-dax/SKILL.md +466 -0
  57. package/skills/bi-dax/scripts/update-check.js +427 -0
  58. package/skills/bi-kickoff/SKILL.md +552 -0
  59. package/skills/bi-kickoff/references/flow.html +78 -0
  60. package/skills/bi-kickoff/references/flow.md +62 -0
  61. package/skills/bi-kickoff/scripts/update-check.js +427 -0
  62. package/skills/bi-modeling/SKILL.md +487 -0
  63. package/skills/bi-modeling/scripts/update-check.js +427 -0
  64. package/skills/bi-performance/SKILL.md +523 -0
  65. package/skills/bi-performance/scripts/install-tabular-editor.ps1 +159 -0
  66. package/skills/bi-performance/scripts/run-bpa.ps1 +265 -0
  67. package/skills/bi-performance/scripts/update-check.js +427 -0
  68. package/skills/bi-powerquery/SKILL.md +231 -0
  69. package/skills/bi-powerquery/references/base-template-data-contract.md +323 -0
  70. package/skills/bi-powerquery/references/power-query-standards.md +74 -0
  71. package/skills/bi-powerquery/scripts/new-powerquery-staging.ps1 +371 -0
  72. package/skills/bi-powerquery/scripts/test-powerquery-contract.ps1 +225 -0
  73. package/skills/bi-powerquery/scripts/update-check.js +427 -0
  74. package/skills/bi-refactor/SKILL.md +251 -0
  75. package/skills/bi-refactor/references/flow.md +27 -0
  76. package/skills/bi-refactor/scripts/update-check.js +427 -0
  77. package/skills/bi-scorecard/SKILL.md +270 -0
  78. package/skills/bi-scorecard/examples/base-template-scorecard-overlay.json +82 -0
  79. package/skills/bi-scorecard/scripts/new-scorecard-blueprint-from-base-template.ps1 +124 -0
  80. package/skills/bi-scorecard/scripts/powerbi-goal-status-rules-api.ps1 +39 -0
  81. package/skills/bi-scorecard/scripts/powerbi-goal-values-api.ps1 +48 -0
  82. package/skills/bi-scorecard/scripts/powerbi-goals-api.ps1 +68 -0
  83. package/skills/bi-scorecard/scripts/powerbi-rest-common.ps1 +197 -0
  84. package/skills/bi-scorecard/scripts/powerbi-scorecards-api.ps1 +53 -0
  85. package/skills/bi-scorecard/scripts/update-check.js +427 -0
  86. package/skills/bi-start/SKILL.md +274 -0
  87. package/skills/bi-start/scripts/update-check.js +427 -0
  88. package/src/content/base.md +197 -0
  89. package/src/content/mcp-requirements.json +57 -0
  90. package/src/content/routing.md +201 -0
  91. package/src/content/skills/bi-connect.md +493 -0
  92. package/src/content/skills/bi-dax.md +437 -0
  93. package/src/content/skills/bi-kickoff/SKILL.md +523 -0
  94. package/src/content/skills/bi-kickoff/references/flow.html +78 -0
  95. package/src/content/skills/bi-kickoff/references/flow.md +62 -0
  96. package/src/content/skills/bi-modeling.md +458 -0
  97. package/src/content/skills/bi-performance/SKILL.md +494 -0
  98. package/src/content/skills/bi-performance/scripts/install-tabular-editor.ps1 +159 -0
  99. package/src/content/skills/bi-performance/scripts/run-bpa.ps1 +265 -0
  100. package/src/content/skills/bi-powerquery/SKILL.md +202 -0
  101. package/src/content/skills/bi-powerquery/references/base-template-data-contract.md +323 -0
  102. package/src/content/skills/bi-powerquery/references/power-query-standards.md +74 -0
  103. package/src/content/skills/bi-powerquery/scripts/new-powerquery-staging.ps1 +371 -0
  104. package/src/content/skills/bi-powerquery/scripts/test-powerquery-contract.ps1 +225 -0
  105. package/src/content/skills/bi-refactor/SKILL.md +222 -0
  106. package/src/content/skills/bi-refactor/references/flow.md +27 -0
  107. package/src/content/skills/bi-scorecard/SKILL.md +241 -0
  108. package/src/content/skills/bi-scorecard/examples/base-template-scorecard-blueprint.expected.json +105 -0
  109. package/src/content/skills/bi-scorecard/examples/base-template-scorecard-overlay.json +82 -0
  110. package/src/content/skills/bi-scorecard/scripts/new-scorecard-blueprint-from-base-template.ps1 +124 -0
  111. package/src/content/skills/bi-scorecard/scripts/powerbi-goal-status-rules-api.ps1 +39 -0
  112. package/src/content/skills/bi-scorecard/scripts/powerbi-goal-values-api.ps1 +48 -0
  113. package/src/content/skills/bi-scorecard/scripts/powerbi-goals-api.ps1 +68 -0
  114. package/src/content/skills/bi-scorecard/scripts/powerbi-rest-common.ps1 +197 -0
  115. package/src/content/skills/bi-scorecard/scripts/powerbi-scorecards-api.ps1 +53 -0
  116. package/src/content/skills/bi-start.md +266 -0
  117. package/templates/base-template/AGENTS.md +33 -0
  118. package/templates/base-template/base-template.Report/.platform +11 -0
  119. package/templates/base-template/base-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
  120. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BaseThemes/CY18SU07.json +177 -0
  121. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
  122. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleCityPark.json +26 -0
  123. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleDefault.json +26 -0
  124. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleNeutral.json +26 -0
  125. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleOrchid.json +26 -0
  126. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleTidal.json +26 -0
  127. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Bloom.json +139 -0
  128. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/CityPark.json +40 -0
  129. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Classroom.json +40 -0
  130. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/ColorblindSafe.json +48 -0
  131. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/CopilotDefault.json +1861 -0
  132. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Divergent.json +127 -0
  133. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Electric.json +48 -0
  134. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Frontier.json +136 -0
  135. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/HighContrast.json +40 -0
  136. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Highrise.json +41 -0
  137. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Innovate.json +227 -0
  138. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/NewExecutive.json +41 -0
  139. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Solar.json +33 -0
  140. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Storm.json +25 -0
  141. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Sunset.json +48 -0
  142. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Temperature.json +33 -0
  143. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Tidal.json +100 -0
  144. package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Twilight.json +40 -0
  145. package/templates/base-template/base-template.Report/definition/bookmarks/1d40d43c7ade66e8603c.bookmark.json +2297 -0
  146. package/templates/base-template/base-template.Report/definition/bookmarks/af068ff51c0ca3089ea7.bookmark.json +2300 -0
  147. package/templates/base-template/base-template.Report/definition/bookmarks/bookmarks.json +11 -0
  148. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
  149. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/mobile.json +11 -0
  150. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +669 -0
  151. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/mobile.json +11 -0
  152. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +723 -0
  153. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
  154. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
  155. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
  156. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +109 -0
  157. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/55e10ac7d76a1954f94f/mobile.json +31 -0
  158. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/55e10ac7d76a1954f94f/visual.json +378 -0
  159. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/57f52ecf4490f70e4da1/mobile.json +11 -0
  160. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/57f52ecf4490f70e4da1/visual.json +175 -0
  161. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
  162. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
  163. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
  164. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
  165. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/mobile.json +11 -0
  166. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +690 -0
  167. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/90677f13cea5d1275990/visual.json +17 -0
  168. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/mobile.json +11 -0
  169. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
  170. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/9fe17b1971f68443fc15/mobile.json +10 -0
  171. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/9fe17b1971f68443fc15/visual.json +328 -0
  172. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/mobile.json +11 -0
  173. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +578 -0
  174. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
  175. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +432 -0
  176. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
  177. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +801 -0
  178. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
  179. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1318 -0
  180. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b529688fe5a226643322/visual.json +209 -0
  181. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/c4c6f332d05e72e2eb06/mobile.json +11 -0
  182. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/c4c6f332d05e72e2eb06/visual.json +174 -0
  183. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
  184. package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
  185. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/page.json +130 -0
  186. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/07e9c4302e29029c5462/mobile.json +11 -0
  187. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/07e9c4302e29029c5462/visual.json +690 -0
  188. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/109ceede4bc015b0c006/mobile.json +11 -0
  189. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/109ceede4bc015b0c006/visual.json +468 -0
  190. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/118257e006d472277e10/mobile.json +11 -0
  191. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/118257e006d472277e10/visual.json +359 -0
  192. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/2caf02e0137c4a1280cc/mobile.json +11 -0
  193. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/2caf02e0137c4a1280cc/visual.json +669 -0
  194. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/311e76fe3c9edad68204/mobile.json +11 -0
  195. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/311e76fe3c9edad68204/visual.json +109 -0
  196. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/31c21f8cbeb3b208940a/visual.json +209 -0
  197. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/3ab72c25062437149b03/visual.json +17 -0
  198. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5959867442abcb0ce2b3/mobile.json +11 -0
  199. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5959867442abcb0ce2b3/visual.json +788 -0
  200. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5b96e0f88d192b044a13/mobile.json +11 -0
  201. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5b96e0f88d192b044a13/visual.json +592 -0
  202. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/64e749a63d0786000e22/mobile.json +11 -0
  203. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/64e749a63d0786000e22/visual.json +468 -0
  204. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/7ae1ca604edac6586ad0/mobile.json +11 -0
  205. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/7ae1ca604edac6586ad0/visual.json +1310 -0
  206. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/840300733885141a6603/mobile.json +11 -0
  207. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/840300733885141a6603/visual.json +175 -0
  208. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/a38448cdb203279273d2/mobile.json +11 -0
  209. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/a38448cdb203279273d2/visual.json +516 -0
  210. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d1e86f213a3841d12e20/visual.json +328 -0
  211. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d4a484c1bcc8ee3075e2/mobile.json +11 -0
  212. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d4a484c1bcc8ee3075e2/visual.json +432 -0
  213. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d87cb5cf06acca19bbb5/mobile.json +11 -0
  214. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d87cb5cf06acca19bbb5/visual.json +241 -0
  215. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/e243da2677209ed69408/mobile.json +11 -0
  216. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/e243da2677209ed69408/visual.json +174 -0
  217. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/f3aaf24f5b22b67573b0/mobile.json +11 -0
  218. package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/f3aaf24f5b22b67573b0/visual.json +333 -0
  219. package/templates/base-template/base-template.Report/definition/pages/pages.json +8 -0
  220. package/templates/base-template/base-template.Report/definition/report.json +89 -0
  221. package/templates/base-template/base-template.Report/definition/version.json +4 -0
  222. package/templates/base-template/base-template.Report/definition.pbir +9 -0
  223. package/templates/base-template/base-template.SemanticModel/.platform +11 -0
  224. package/templates/base-template/base-template.SemanticModel/definition/cultures/es-AR.tmdl +11185 -0
  225. package/templates/base-template/base-template.SemanticModel/definition/database.tmdl +3 -0
  226. package/templates/base-template/base-template.SemanticModel/definition/expressions.tmdl +234 -0
  227. package/templates/base-template/base-template.SemanticModel/definition/functions.tmdl +637 -0
  228. package/templates/base-template/base-template.SemanticModel/definition/model.tmdl +82 -0
  229. package/templates/base-template/base-template.SemanticModel/definition/relationships.tmdl +271 -0
  230. package/templates/base-template/base-template.SemanticModel/definition/tables/Calendario.tmdl +200 -0
  231. package/templates/base-template/base-template.SemanticModel/definition/tables/Campa/303/261as.tmdl +75 -0
  232. package/templates/base-template/base-template.SemanticModel/definition/tables/Canales.tmdl +84 -0
  233. package/templates/base-template/base-template.SemanticModel/definition/tables/Clientes.tmdl +143 -0
  234. package/templates/base-template/base-template.SemanticModel/definition/tables/Devoluciones.tmdl +95 -0
  235. package/templates/base-template/base-template.SemanticModel/definition/tables/Ejecuci/303/263n proyectos.tmdl" +130 -0
  236. package/templates/base-template/base-template.SemanticModel/definition/tables/Entregas.tmdl +122 -0
  237. package/templates/base-template/base-template.SemanticModel/definition/tables/Equipos m/303/251tricas.tmdl" +40 -0
  238. package/templates/base-template/base-template.SemanticModel/definition/tables/Equipos.tmdl +73 -0
  239. package/templates/base-template/base-template.SemanticModel/definition/tables/Horas.tmdl +122 -0
  240. package/templates/base-template/base-template.SemanticModel/definition/tables/Interacciones clientes.tmdl +146 -0
  241. package/templates/base-template/base-template.SemanticModel/definition/tables/Leads.tmdl +119 -0
  242. package/templates/base-template/base-template.SemanticModel/definition/tables/Monedas.tmdl +44 -0
  243. package/templates/base-template/base-template.SemanticModel/definition/tables/Movimientos financieros.tmdl +145 -0
  244. package/templates/base-template/base-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +1294 -0
  245. package/templates/base-template/base-template.SemanticModel/definition/tables/N/303/263mina.tmdl +110 -0
  246. package/templates/base-template/base-template.SemanticModel/definition/tables/Oportunidades.tmdl +135 -0
  247. package/templates/base-template/base-template.SemanticModel/definition/tables/Presupuesto.tmdl +125 -0
  248. package/templates/base-template/base-template.SemanticModel/definition/tables/Productos.tmdl +98 -0
  249. package/templates/base-template/base-template.SemanticModel/definition/tables/Proyectos.tmdl +77 -0
  250. package/templates/base-template/base-template.SemanticModel/definition/tables/Servicios.tmdl +75 -0
  251. package/templates/base-template/base-template.SemanticModel/definition/tables/Tareas proyecto.tmdl +102 -0
  252. package/templates/base-template/base-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +67 -0
  253. package/templates/base-template/base-template.SemanticModel/definition/tables/Ventas.tmdl +180 -0
  254. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux An/303/241lisis dimensiones.tmdl" +38 -0
  255. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Comparaciones.tmdl +227 -0
  256. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Compatibilidad m/303/251trica-dimensi/303/263n.tmdl" +68 -0
  257. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Modelo configuraci/303/263n.tmdl" +44 -0
  258. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Modo fechas.tmdl +36 -0
  259. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux M/303/251trica-Equipo.tmdl" +102 -0
  260. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Overrides m/303/251trica-dimensi/303/263n.tmdl" +54 -0
  261. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Per/303/255odos.tmdl" +182 -0
  262. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Rango fechas modo.tmdl +36 -0
  263. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Rango fechas.tmdl +27 -0
  264. package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Vista de calendario.tmdl +30 -0
  265. package/templates/base-template/base-template.SemanticModel/definition/tables/_GC C/303/241lculo.tmdl" +70 -0
  266. package/templates/base-template/base-template.SemanticModel/definition/tables/_GC Eje X.tmdl +63 -0
  267. package/templates/base-template/base-template.SemanticModel/definition/tables/_GC M/303/251trica.tmdl" +374 -0
  268. package/templates/base-template/base-template.SemanticModel/definition/tables/_GC Tipo c/303/241lculo.tmdl" +223 -0
  269. package/templates/base-template/base-template.SemanticModel/definition/tables/_PC Dimensi/303/263n.tmdl" +98 -0
  270. package/templates/base-template/base-template.SemanticModel/definition/tables/_PC Eje X.tmdl +68 -0
  271. package/templates/base-template/base-template.SemanticModel/definition/tables//303/223rdenes servicio.tmdl" +151 -0
  272. package/templates/base-template/base-template.SemanticModel/definition.pbism +5 -0
  273. package/templates/base-template/base-template.SemanticModel/diagramLayout.json +568 -0
  274. package/templates/base-template/base-template.pbip +14 -0
  275. package/templates/base-template/template.manifest.json +41 -0
  276. package/theme/BISuperpowers.json +3888 -0
@@ -0,0 +1,223 @@
1
+ table '_GC Tipo cálculo'
2
+ isHidden
3
+ lineageTag: da63e6bd-e363-4450-bb6b-b7d67f1fc982
4
+
5
+ /// Calc group que aplica el rango temporal de comparación (Actual / Previo / Variación / Variación %) sobre la métrica seleccionada. Reemplaza las medidas Periodo Actual / Previo / Variación / Variación % del patrón legacy. Lee el rango desde 'Aux Comparaciones' vía CalendarContext UDF. Precedence 15 (entre Vista del valor=10 y Vista temporal=20).
6
+ calculationGroup
7
+ precedence: 15
8
+
9
+ multipleOrEmptySelectionExpression = SELECTEDMEASURE()
10
+
11
+ noSelectionExpression = SELECTEDMEASURE()
12
+
13
+ /// Valor de la métrica seleccionada para el período actual del slicer Aux Comparaciones. Si Aux Vista del valor = Acumulado, devuelve acumulado dentro del rango actual y respeta el eje temporal.
14
+ calculationItem Actual =
15
+ VAR __CalendarContext = CalendarContext ()
16
+ VAR __Start = MAXX ( __CalendarContext, [Current Start] )
17
+ VAR __End = MAXX ( __CalendarContext, [Current End] )
18
+ VAR __HasCalendarAxis = EjeCalendarioEnContexto ()
19
+ VAR __SelectedMetricName =
20
+ COALESCE (
21
+ SELECTEDVALUE ( '_GC Métrica'[Métrica] ),
22
+ SELECTEDVALUE ( 'Métricas'[Métrica] ),
23
+ SELECTEDMEASURENAME ()
24
+ )
25
+ VAR __CanAccumulate =
26
+ COALESCE (
27
+ LOOKUPVALUE ( 'Métricas'[Acumulado], 'Métricas'[Métrica], __SelectedMetricName ),
28
+ FALSE ()
29
+ )
30
+ VAR __UseAccumulated =
31
+ SELECTEDVALUE ( '_GC Cálculo'[Cálculo] ) = "Acumulado"
32
+ && __CanAccumulate
33
+ VAR __AxisMin = MIN ( 'Calendario'[Fecha] )
34
+ VAR __AxisMax = MAX ( 'Calendario'[Fecha] )
35
+ VAR __Cutoff = MIN ( __AxisMax, __End )
36
+ RETURN
37
+ IF (
38
+ NOT ISBLANK ( __Start ) && NOT ISBLANK ( __End ),
39
+ IF (
40
+ __HasCalendarAxis,
41
+ IF (
42
+ __UseAccumulated,
43
+ IF (
44
+ NOT ( __AxisMax < __Start || __AxisMin > __End ),
45
+ CALCULATE (
46
+ SELECTEDMEASURE (),
47
+ REMOVEFILTERS ( 'Calendario' ),
48
+ DATESBETWEEN ( 'Calendario'[Fecha], __Start, __Cutoff )
49
+ )
50
+ ),
51
+ CALCULATE (
52
+ SELECTEDMEASURE (),
53
+ KEEPFILTERS ( DATESBETWEEN ( 'Calendario'[Fecha], __Start, __End ) )
54
+ )
55
+ ),
56
+ CALCULATE (
57
+ SELECTEDMEASURE (),
58
+ REMOVEFILTERS ( 'Calendario' ),
59
+ DATESBETWEEN ( 'Calendario'[Fecha], __Start, __End )
60
+ )
61
+ )
62
+ )
63
+
64
+ formatStringDefinition = SELECTEDMEASUREFORMATSTRING()
65
+
66
+ /// Valor de la métrica seleccionada para el período previo comparable. En eje temporal desplaza punto a punto; si Aux Vista del valor = Acumulado, acumula el rango previo equivalente sobre el eje actual.
67
+ calculationItem Previo =
68
+ VAR __CalendarContext = CalendarContext ()
69
+ VAR __CurrentStart = MAXX ( __CalendarContext, [Current Start] )
70
+ VAR __CurrentEnd = MAXX ( __CalendarContext, [Current End] )
71
+ VAR __PreviousStart = MAXX ( __CalendarContext, [Previous Start] )
72
+ VAR __PreviousEnd = MAXX ( __CalendarContext, [Previous End] )
73
+ VAR __DateOffset = __CurrentStart - __PreviousStart
74
+ VAR __HasCalendarAxis = EjeCalendarioEnContexto ()
75
+ VAR __SelectedMetricName =
76
+ COALESCE (
77
+ SELECTEDVALUE ( '_GC Métrica'[Métrica] ),
78
+ SELECTEDVALUE ( 'Métricas'[Métrica] ),
79
+ SELECTEDMEASURENAME ()
80
+ )
81
+ VAR __CanAccumulate =
82
+ COALESCE (
83
+ LOOKUPVALUE ( 'Métricas'[Acumulado], 'Métricas'[Métrica], __SelectedMetricName ),
84
+ FALSE ()
85
+ )
86
+ VAR __UseAccumulated =
87
+ SELECTEDVALUE ( '_GC Cálculo'[Cálculo] ) = "Acumulado"
88
+ && __CanAccumulate
89
+ VAR __AxisMin = MIN ( 'Calendario'[Fecha] )
90
+ VAR __AxisMax = MAX ( 'Calendario'[Fecha] )
91
+ VAR __CurrentCutoff = MIN ( __AxisMax, __CurrentEnd )
92
+ VAR __PreviousCutoff = MIN ( __CurrentCutoff - __DateOffset, __PreviousEnd )
93
+ VAR __PreviousSpan =
94
+ // Longitud del periodo previo; si el periodo actual tiene un dia extra, lo clampo al ultimo dia disponible.
95
+ __PreviousEnd - __PreviousStart
96
+ RETURN
97
+ IF (
98
+ NOT ISBLANK ( __PreviousStart ) && NOT ISBLANK ( __PreviousEnd ),
99
+ IF (
100
+ __HasCalendarAxis,
101
+ IF (
102
+ __UseAccumulated,
103
+ IF (
104
+ NOT ( __AxisMax < __CurrentStart || __AxisMin > __CurrentEnd ),
105
+ CALCULATE (
106
+ SELECTEDMEASURE (),
107
+ REMOVEFILTERS ( 'Calendario' ),
108
+ DATESBETWEEN ( 'Calendario'[Fecha], __PreviousStart, __PreviousCutoff )
109
+ )
110
+ ),
111
+ VAR __VisibleCurrentDates =
112
+ CALCULATETABLE (
113
+ VALUES ( 'Calendario'[Fecha] ),
114
+ KEEPFILTERS ( DATESBETWEEN ( 'Calendario'[Fecha], __CurrentStart, __CurrentEnd ) )
115
+ )
116
+ VAR __ShiftedPreviousDates =
117
+ SELECTCOLUMNS (
118
+ FILTER (
119
+ ADDCOLUMNS (
120
+ __VisibleCurrentDates,
121
+ "__PreviousDate",
122
+ __PreviousStart
123
+ + MIN ( 'Calendario'[Fecha] - __CurrentStart, __PreviousSpan )
124
+ ),
125
+ [__PreviousDate] >= __PreviousStart
126
+ && [__PreviousDate] <= __PreviousEnd
127
+ ),
128
+ "Fecha", [__PreviousDate]
129
+ )
130
+ RETURN
131
+ IF (
132
+ NOT ISEMPTY ( __ShiftedPreviousDates ),
133
+ CALCULATE (
134
+ SELECTEDMEASURE (),
135
+ REMOVEFILTERS ( 'Calendario' ),
136
+ TREATAS ( __ShiftedPreviousDates, 'Calendario'[Fecha] )
137
+ )
138
+ )
139
+ ),
140
+ CALCULATE (
141
+ SELECTEDMEASURE (),
142
+ REMOVEFILTERS ( 'Calendario' ),
143
+ DATESBETWEEN ( 'Calendario'[Fecha], __PreviousStart, __PreviousEnd )
144
+ )
145
+ )
146
+ )
147
+
148
+ formatStringDefinition = SELECTEDMEASUREFORMATSTRING()
149
+
150
+ /// Diferencia absoluta entre el período actual y el previo (card-style, sin axis shift).
151
+ calculationItem Variación =
152
+ VAR __CalendarContext = CalendarContext ()
153
+ VAR __CurrentStart = MAXX ( __CalendarContext, [Current Start] )
154
+ VAR __CurrentEnd = MAXX ( __CalendarContext, [Current End] )
155
+ VAR __PreviousStart = MAXX ( __CalendarContext, [Previous Start] )
156
+ VAR __PreviousEnd = MAXX ( __CalendarContext, [Previous End] )
157
+ VAR __Actual =
158
+ IF (
159
+ NOT ISBLANK ( __CurrentStart ) && NOT ISBLANK ( __CurrentEnd ),
160
+ CALCULATE (
161
+ SELECTEDMEASURE (),
162
+ REMOVEFILTERS ( 'Calendario' ),
163
+ DATESBETWEEN ( 'Calendario'[Fecha], __CurrentStart, __CurrentEnd )
164
+ )
165
+ )
166
+ VAR __Previo =
167
+ IF (
168
+ NOT ISBLANK ( __PreviousStart ) && NOT ISBLANK ( __PreviousEnd ),
169
+ CALCULATE (
170
+ SELECTEDMEASURE (),
171
+ REMOVEFILTERS ( 'Calendario' ),
172
+ DATESBETWEEN ( 'Calendario'[Fecha], __PreviousStart, __PreviousEnd )
173
+ )
174
+ )
175
+ RETURN
176
+ IF (
177
+ NOT ISNUMBER ( __Actual ) || NOT ISNUMBER ( __Previo ),
178
+ BLANK (),
179
+ __Actual - __Previo
180
+ )
181
+
182
+ formatStringDefinition = SELECTEDMEASUREFORMATSTRING()
183
+
184
+ /// Variación porcentual del período actual contra el previo (card-style).
185
+ calculationItem 'Variación %' =
186
+ VAR __CalendarContext = CalendarContext ()
187
+ VAR __CurrentStart = MAXX ( __CalendarContext, [Current Start] )
188
+ VAR __CurrentEnd = MAXX ( __CalendarContext, [Current End] )
189
+ VAR __PreviousStart = MAXX ( __CalendarContext, [Previous Start] )
190
+ VAR __PreviousEnd = MAXX ( __CalendarContext, [Previous End] )
191
+ VAR __Actual =
192
+ IF (
193
+ NOT ISBLANK ( __CurrentStart ) && NOT ISBLANK ( __CurrentEnd ),
194
+ CALCULATE (
195
+ SELECTEDMEASURE (),
196
+ REMOVEFILTERS ( 'Calendario' ),
197
+ DATESBETWEEN ( 'Calendario'[Fecha], __CurrentStart, __CurrentEnd )
198
+ )
199
+ )
200
+ VAR __Previo =
201
+ IF (
202
+ NOT ISBLANK ( __PreviousStart ) && NOT ISBLANK ( __PreviousEnd ),
203
+ CALCULATE (
204
+ SELECTEDMEASURE (),
205
+ REMOVEFILTERS ( 'Calendario' ),
206
+ DATESBETWEEN ( 'Calendario'[Fecha], __PreviousStart, __PreviousEnd )
207
+ )
208
+ )
209
+ RETURN
210
+ IF (
211
+ NOT ISNUMBER ( __Actual ) || NOT ISNUMBER ( __Previo ) || __Previo = 0,
212
+ BLANK (),
213
+ DIVIDE ( __Actual - __Previo, __Previo )
214
+ )
215
+
216
+ formatStringDefinition = "0.0%;-0.0%;0.0%"
217
+
218
+ column 'Tipo cálculo'
219
+ dataType: string
220
+ lineageTag: 0952b792-f09f-47b1-8ecc-b35f6af08618
221
+
222
+ partition 'Partition_Aux Tipo cálculo' = calculationGroup
223
+
@@ -0,0 +1,98 @@
1
+ /// Field parameter desconectado para elegir dinamicamente la dimension de desglose. La seleccion de Metrica filtra sus breakdowns recomendados mediante la tabla de compatibilidad.
2
+ table '_PC Dimensión'
3
+ isHidden
4
+ lineageTag: cb2cb013-6cc7-40c8-a7bb-bdf78350f693
5
+
6
+ /// Etiqueta visible del field parameter para elegir la dimensión de desglose.
7
+ column Dimensión
8
+ lineageTag: f7c8e6a4-22cf-4f1d-b647-f9c3eeed8238
9
+ summarizeBy: none
10
+ isNameInferred
11
+ sourceColumn: [Dimensión]
12
+ sortByColumn: Orden
13
+
14
+ relatedColumnDetails
15
+ groupByColumn: Campo
16
+
17
+ /// Referencia NAMEOF usada internamente por Power BI como field parameter.
18
+ column Campo
19
+ isHidden
20
+ lineageTag: 195e5140-0439-430e-8de4-066db2e2d221
21
+ summarizeBy: none
22
+ isNameInferred
23
+ sourceColumn: [Campo]
24
+ sortByColumn: Orden
25
+
26
+ extendedProperty ParameterMetadata =
27
+ {
28
+ "version": 3,
29
+ "kind": 2
30
+ }
31
+
32
+ /// Orden de presentación del field parameter.
33
+ column Orden
34
+ isHidden
35
+ formatString: 0
36
+ lineageTag: f83be7ec-173f-4e8a-b9f5-ad5b60ad6f4e
37
+ summarizeBy: sum
38
+ isNameInferred
39
+ sourceColumn: [Orden]
40
+
41
+ /// Familia lógica de la dimensión.
42
+ column Grupo
43
+ lineageTag: 2651bef1-9175-489d-baf7-bb9bb5fb782b
44
+ summarizeBy: none
45
+ isNameInferred
46
+ sourceColumn: [Grupo]
47
+
48
+ /// Clave estable usada por la compatibilidad métrica-dimensión.
49
+ column DimensionKey
50
+ isHidden
51
+ lineageTag: 0a15b3ab-cdf6-4a62-99a5-fec0a9beeea7
52
+ summarizeBy: none
53
+ isNameInferred
54
+ sourceColumn: [DimensionKey]
55
+
56
+ /// Nivel de detalle de la dimensión.
57
+ column Nivel
58
+ lineageTag: 3142e57d-127b-490d-b530-fe65006596e9
59
+ summarizeBy: none
60
+ isNameInferred
61
+ sourceColumn: [Nivel]
62
+
63
+ partition '_PC Dimensión' = calculated
64
+ mode: import
65
+ source =
66
+ VAR __Parameter =
67
+ {
68
+ ( "Cliente", NAMEOF ( 'Clientes'[Cliente] ), 0, "Cliente", "cliente", "Detalle" ),
69
+ ( "País", NAMEOF ( 'Clientes'[País] ), 1, "Cliente", "cliente_pais", "Agrupación" ),
70
+ ( "Segmento cliente", NAMEOF ( 'Clientes'[Segmento] ), 2, "Cliente", "cliente_segmento", "Agrupación" ),
71
+ ( "Canal", NAMEOF ( 'Canales'[Canal] ), 3, "Canal", "canal", "Detalle" ),
72
+ ( "Tipo de canal", NAMEOF ( 'Canales'[Tipo de canal] ), 4, "Canal", "canal_tipo", "Agrupación" ),
73
+ ( "Producto", NAMEOF ( 'Productos'[Producto] ), 5, "Producto", "producto", "Detalle" ),
74
+ ( "Categoría", NAMEOF ( 'Productos'[Categoría] ), 6, "Producto", "producto_categoria", "Agrupación" ),
75
+ ( "Subcategoría", NAMEOF ( 'Productos'[Subcategoría] ), 7, "Producto", "producto_subcategoria", "Agrupación" ),
76
+ ( "Servicio", NAMEOF ( 'Servicios'[Servicio] ), 8, "Servicio", "servicio", "Detalle" ),
77
+ ( "Línea servicio", NAMEOF ( 'Servicios'[Línea servicio] ), 9, "Servicio", "servicio_linea", "Agrupación" ),
78
+ ( "Modalidad servicio", NAMEOF ( 'Servicios'[Modalidad] ), 10, "Servicio", "servicio_modalidad", "Agrupación" ),
79
+ ( "Proyecto", NAMEOF ( 'Proyectos'[Proyecto] ), 11, "Proyecto", "proyecto", "Detalle" ),
80
+ ( "Tipo proyecto", NAMEOF ( 'Proyectos'[Tipo proyecto] ), 12, "Proyecto", "proyecto_tipo", "Agrupación" ),
81
+ ( "Estado proyecto", NAMEOF ( 'Proyectos'[Estado proyecto] ), 13, "Proyecto", "proyecto_estado", "Agrupación" ),
82
+ ( "Equipo", NAMEOF ( 'Equipos'[Equipo] ), 14, "Equipo", "equipo", "Detalle" ),
83
+ ( "Área equipo", NAMEOF ( 'Equipos'[Área equipo] ), 15, "Equipo", "equipo_area", "Agrupación" ),
84
+ ( "Campaña", NAMEOF ( 'Campañas'[Campaña] ), 16, "Campaña", "campania", "Detalle" ),
85
+ ( "Canal marketing", NAMEOF ( 'Campañas'[Canal marketing] ), 17, "Campaña", "campania_canal", "Agrupación" ),
86
+ ( "Objetivo campaña", NAMEOF ( 'Campañas'[Objetivo campaña] ), 18, "Campaña", "campania_objetivo", "Agrupación" )
87
+ }
88
+ RETURN
89
+ SELECTCOLUMNS (
90
+ __Parameter,
91
+ "Dimensión", [Value1],
92
+ "Campo", [Value2],
93
+ "Orden", [Value3],
94
+ "Grupo", [Value4],
95
+ "DimensionKey", [Value5],
96
+ "Nivel", [Value6]
97
+ )
98
+
@@ -0,0 +1,68 @@
1
+ /// Catálogo desconectado de granularidades de fecha. Field Parameter (kind=2) que
2
+ /// permite drivear el eje X dinámico de los visuales: el usuario elige Años / Trimestres /
3
+ /// Meses / Semanas / Días desde un slicer y los charts re-binding al campo correspondiente
4
+ /// de la tabla 'Fecha'. Filtrado adicional por 'Vista de calendario' (Gregoriano vs 4-4-5).
5
+ table '_PC Eje X'
6
+ isHidden
7
+ lineageTag: 672638f2-b24a-4aff-a181-71078e5a1844
8
+
9
+ column 'Eje X'
10
+ lineageTag: d481b304-b1ae-4f38-b718-eb257d1c7e4b
11
+ summarizeBy: none
12
+ sourceColumn: [Value1]
13
+ sortByColumn: Orden
14
+
15
+ relatedColumnDetails
16
+ groupByColumn: Campo
17
+
18
+ annotation SummarizationSetBy = Automatic
19
+
20
+ column Campo
21
+ isHidden
22
+ lineageTag: c3332de0-e899-42c0-a3c3-3eb93f1e61fa
23
+ summarizeBy: none
24
+ sourceColumn: [Value2]
25
+ sortByColumn: Orden
26
+
27
+ extendedProperty ParameterMetadata =
28
+ {
29
+ "version": 3,
30
+ "kind": 2
31
+ }
32
+
33
+ annotation SummarizationSetBy = Automatic
34
+
35
+ column Orden
36
+ isHidden
37
+ formatString: 0
38
+ lineageTag: a75bdf5c-b3b9-446d-ad96-90a2fdbaf920
39
+ summarizeBy: sum
40
+ sourceColumn: [Value3]
41
+
42
+ annotation SummarizationSetBy = Automatic
43
+
44
+ column 'Tipo de calendario'
45
+ dataType: string
46
+ isHidden
47
+ lineageTag: f9a3a1cc-ec82-4601-baad-6b683c55f7db
48
+ summarizeBy: none
49
+ sourceColumn: [Value4]
50
+
51
+ partition 'Ejes temporales' = calculated
52
+ mode: import
53
+ source =
54
+ {
55
+ ("Días", NAMEOF('Calendario'[Fecha]), 4, "Gregoriano"),
56
+ ("Semanas", NAMEOF('Calendario'[Semana]), 3, "Gregoriano"),
57
+ ("Meses", NAMEOF('Calendario'[Mes]), 2, "Gregoriano"),
58
+ ("Trimestres", NAMEOF('Calendario'[Trimestre]), 1, "Gregoriano"),
59
+ ("Años", NAMEOF('Calendario'[Año]), 0, "Gregoriano"),
60
+ ("Días", NAMEOF('Calendario'[Fecha]), 4, "Semanal 4-4-5"),
61
+ ("Semanas", NAMEOF('Calendario'[Semana]), 3, "Semanal 4-4-5"),
62
+ ("Meses", NAMEOF('Calendario'[Mes]), 2, "Semanal 4-4-5"),
63
+ ("Trimestres", NAMEOF('Calendario'[Trimestre]), 1, "Semanal 4-4-5"),
64
+ ("Años", NAMEOF('Calendario'[Año]), 0, "Semanal 4-4-5")
65
+ }
66
+
67
+ annotation PBI_Id = a16ad557b06f49098dee654bafb8f1b6
68
+
@@ -0,0 +1,151 @@
1
+ /// Hecho demo de órdenes de servicio para SLA, backlog, retrabajos y capacidad.
2
+ table 'Órdenes servicio'
3
+ isHidden
4
+ lineageTag: 82952ff5-473d-4143-b837-fdce0ccafa11
5
+
6
+ column OrdenServicioId
7
+ dataType: string
8
+ isHidden
9
+ lineageTag: 6a8274ed-bad5-447b-bb2e-57cc2b85585c
10
+ sourceColumn: OrdenServicioId
11
+
12
+ column Fecha
13
+ dataType: dateTime
14
+ formatString: Long Date
15
+ lineageTag: 51629fa4-26a5-4cc4-8d77-4714cb34e7f8
16
+ summarizeBy: none
17
+ sourceColumn: Fecha
18
+
19
+ annotation UnderlyingDateTimeDataType = Date
20
+
21
+ annotation SummarizationSetBy = Automatic
22
+
23
+ column ClienteId
24
+ dataType: string
25
+ isHidden
26
+ lineageTag: 5f388aef-c4a5-4651-8c30-3391d7f57fc0
27
+ sourceColumn: ClienteId
28
+
29
+ column ProductoId
30
+ dataType: string
31
+ isHidden
32
+ lineageTag: bb12f85c-f171-4d2e-9a09-fc75751806e7
33
+ sourceColumn: ProductoId
34
+
35
+ column ServicioId
36
+ dataType: string
37
+ isHidden
38
+ lineageTag: d1f6a09f-db2a-45d7-a1ae-f21a37a703fe
39
+ sourceColumn: ServicioId
40
+
41
+ column EquipoId
42
+ dataType: string
43
+ isHidden
44
+ lineageTag: e64a4af5-1fa2-4800-af95-668e6d20cf1f
45
+ sourceColumn: EquipoId
46
+
47
+ column Órdenes
48
+ dataType: int64
49
+ lineageTag: 975e1666-5f54-4a14-b1cf-5ceb10105ba6
50
+ sourceColumn: Órdenes
51
+
52
+ column 'Órdenes Completadas'
53
+ dataType: int64
54
+ lineageTag: 5cd0efcd-15eb-4f0d-9f91-a1092808c5e3
55
+ sourceColumn: Órdenes Completadas
56
+
57
+ column Backlog
58
+ dataType: int64
59
+ lineageTag: b2b86e9c-f742-4585-b086-0802b9ff7f42
60
+ sourceColumn: Backlog
61
+
62
+ column 'Tiempo Ciclo Días'
63
+ dataType: double
64
+ lineageTag: d2df77a8-6181-492e-9353-93000552b439
65
+ sourceColumn: Tiempo Ciclo Días
66
+
67
+ column 'SLA Cumplido'
68
+ dataType: int64
69
+ lineageTag: 0d6e6ee7-b034-41eb-baf2-4a2ed01154b9
70
+ sourceColumn: SLA Cumplido
71
+
72
+ column Retrabajos
73
+ dataType: int64
74
+ lineageTag: 19f455a1-7165-474d-be7c-a653784ca461
75
+ sourceColumn: Retrabajos
76
+
77
+ column 'Horas Usadas'
78
+ dataType: double
79
+ lineageTag: 899a1fca-2504-4219-adaa-c421362972e0
80
+ sourceColumn: Horas Usadas
81
+
82
+ column 'Horas Disponibles'
83
+ dataType: double
84
+ lineageTag: de05ebb5-aa73-4a84-90e2-2da919505522
85
+ sourceColumn: Horas Disponibles
86
+
87
+ column 'Servicios Adjuntos'
88
+ dataType: int64
89
+ lineageTag: e294585d-5590-4aaf-ace2-9d2f1e4f4986
90
+ sourceColumn: Servicios Adjuntos
91
+
92
+ column Data
93
+ dataType: string
94
+ lineageTag: 3a4732a7-d300-4dc1-ad0b-8e66a43a7c87
95
+ sourceColumn: Data
96
+
97
+ partition 'Órdenes servicio' = m
98
+ mode: import
99
+ queryGroup: 'Sample Dataset\Hechos'
100
+ source =
101
+ let
102
+ EntityCode = (entity as text, n as number) as text =>
103
+ let
104
+ CleanNumber = Number.From(n),
105
+ ToLetters = (value as number) as text =>
106
+ let
107
+ Current = Number.IntegerDivide(value, 1),
108
+ Prefix = if Current < 26 then "" else @ToLetters(Number.IntegerDivide(Current, 26) - 1),
109
+ Suffix = Character.FromNumber(65 + Number.Mod(Current, 26))
110
+ in
111
+ Prefix & Suffix,
112
+ BlockCode = ToLetters(Number.IntegerDivide(CleanNumber - 1, 100)),
113
+ NumberPart = Text.PadStart(Text.From(Number.Mod(CleanNumber - 1, 100) + 1, "en-US"), 2, "0"),
114
+ CheckLetter = Character.FromNumber(65 + Number.Mod(CleanNumber * 7 + Text.Length(entity) + 3, 26))
115
+ in
116
+ entity & BlockCode & NumberPart & CheckLetter,
117
+ CalendarDates = Table.TransformColumnTypes(Table.SelectColumns(Calendario, {"Fecha"}), {{"Fecha", type date}}),
118
+ EndDate = List.Max(CalendarDates[Fecha]),
119
+ StartDate = List.Min(CalendarDates[Fecha]),
120
+ DateWindow = Table.SelectRows(CalendarDates, each [Fecha] >= StartDate and [Fecha] <= EndDate),
121
+ WeekTable = Table.Distinct(Table.AddColumn(DateWindow, "WeekStart", each Date.StartOfWeek([Fecha], Day.Monday), type date)[[WeekStart]]),
122
+ SortedWeeks = Table.Sort(WeekTable, {{"WeekStart", Order.Ascending}}),
123
+ AddSemanaIndex = Table.AddIndexColumn(SortedWeeks, "SemanaIndex", 0, 1, Int64.Type),
124
+ ClienteCount = Table.RowCount(Clientes),
125
+ ProductCount = Table.RowCount(Productos),
126
+ ServiceCount = Table.RowCount(Servicios),
127
+ EquipoCount = Table.RowCount(Equipos),
128
+ ClientesBase = Table.FromList(List.Numbers(1, ClienteCount), Splitter.SplitByNothing(), {"ClienteNr"}),
129
+ AddClientes = Table.AddColumn(AddSemanaIndex, "Clientes", each ClientesBase),
130
+ ExpandClientes = Table.ExpandTableColumn(AddClientes, "Clientes", {"ClienteNr"}, {"ClienteNr"}),
131
+ AddValue = Table.AddColumn(ExpandClientes, "Value", each [SemanaIndex] * ClienteCount + [ClienteNr], Int64.Type),
132
+ AddFecha = Table.AddColumn(AddValue, "Fecha", each List.Min({EndDate, List.Max({StartDate, Date.AddDays([WeekStart], Number.Mod([ClienteNr] + [SemanaIndex], 7))})}), type date),
133
+ #"Con OrdenServicioId" = Table.AddColumn(AddFecha, "OrdenServicioId", each EntityCode("OrdenServicio", [Value]), type text),
134
+ #"Con ClienteId" = Table.AddColumn(#"Con OrdenServicioId", "ClienteId", each EntityCode("Cliente", [ClienteNr]), type text),
135
+ #"Con ProductoId" = Table.AddColumn(#"Con ClienteId", "ProductoId", each EntityCode("Producto", Number.Mod([ClienteNr] + [SemanaIndex] * 3 - 1, ProductCount) + 1), type text),
136
+ #"Con ServicioId" = Table.AddColumn(#"Con ProductoId", "ServicioId", each EntityCode("Servicio", Number.Mod([ClienteNr] + [SemanaIndex] * 5 - 1, ServiceCount) + 1), type text),
137
+ #"Con EquipoId" = Table.AddColumn(#"Con ServicioId", "EquipoId", each EntityCode("Equipo", Number.Mod([ClienteNr] + [SemanaIndex] - 1, EquipoCount) + 1), type text),
138
+ #"Con Órdenes" = Table.AddColumn(#"Con EquipoId", "Órdenes", each 20 + Number.Mod([Value] * 3, 55), Int64.Type),
139
+ #"Con Órdenes Completadas" = Table.AddColumn(#"Con Órdenes", "Órdenes Completadas", each 15 + Number.Mod([Value] * 4, 48), Int64.Type),
140
+ #"Con Backlog" = Table.AddColumn(#"Con Órdenes Completadas", "Backlog", each 5 + Number.Mod([Value] * 2, 30), Int64.Type),
141
+ #"Con Tiempo Ciclo Días" = Table.AddColumn(#"Con Backlog", "Tiempo Ciclo Días", each 2 + Number.Mod([Value], 18), type number),
142
+ #"Con SLA Cumplido" = Table.AddColumn(#"Con Tiempo Ciclo Días", "SLA Cumplido", each 13 + Number.Mod([Value] * 5, 45), Int64.Type),
143
+ #"Con Retrabajos" = Table.AddColumn(#"Con SLA Cumplido", "Retrabajos", each Number.Mod([Value] * 2, 12), Int64.Type),
144
+ #"Con Horas Usadas" = Table.AddColumn(#"Con Retrabajos", "Horas Usadas", each 120 + Number.Mod([Value] * 17, 260), type number),
145
+ #"Con Horas Disponibles" = Table.AddColumn(#"Con Horas Usadas", "Horas Disponibles", each 220 + Number.Mod([Value] * 19, 360), type number),
146
+ #"Con Servicios Adjuntos" = Table.AddColumn(#"Con Horas Disponibles", "Servicios Adjuntos", each 3 + Number.Mod([Value], 18), Int64.Type),
147
+ #"Con Data" = Table.AddColumn(#"Con Servicios Adjuntos", "Data", each "Demo", type text),
148
+ Result = Table.SelectColumns(#"Con Data", {"OrdenServicioId", "Fecha", "ClienteId", "ProductoId", "ServicioId", "EquipoId", "Órdenes", "Órdenes Completadas", "Backlog", "Tiempo Ciclo Días", "SLA Cumplido", "Retrabajos", "Horas Usadas", "Horas Disponibles", "Servicios Adjuntos", "Data"})
149
+ in
150
+ Result
151
+
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/fabric/item/semanticModel/definitionProperties/1.0.0/schema.json",
3
+ "version": "4.2",
4
+ "settings": {}
5
+ }