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.
- package/.claude-plugin/marketplace.json +31 -0
- package/.claude-plugin/plugin.json +34 -0
- package/.claude-plugin/skill-manifest.json +79 -0
- package/.mcp.json +13 -0
- package/.plugin/plugin.json +14 -0
- package/LICENSE +21 -0
- package/README.md +849 -0
- package/bin/build-plugin.js +97 -0
- package/bin/cli.js +891 -0
- package/bin/commands/autoupdate.js +128 -0
- package/bin/commands/build-desktop.js +368 -0
- package/bin/commands/create-from-template.js +165 -0
- package/bin/commands/diff.js +435 -0
- package/bin/commands/install.js +542 -0
- package/bin/commands/lint.js +441 -0
- package/bin/commands/mcp-setup.js +255 -0
- package/bin/commands/session-update.js +204 -0
- package/bin/commands/smoke-test.js +20 -0
- package/bin/commands/uninstall.js +611 -0
- package/bin/commands/update-check.js +427 -0
- package/bin/commands/validate-cases.js +264 -0
- package/bin/commands/validate-projects.js +426 -0
- package/bin/commands/watch.js +251 -0
- package/bin/lib/agents.js +62 -0
- package/bin/lib/base-template-smoke.js +299 -0
- package/bin/lib/claude-hooks.js +160 -0
- package/bin/lib/generators/claude-plugin.js +529 -0
- package/bin/lib/generators/index.js +116 -0
- package/bin/lib/generators/shared.js +257 -0
- package/bin/lib/mcp-config.js +835 -0
- package/bin/lib/microsoft-mcp.js +206 -0
- package/bin/lib/powerbi-mcp-session.js +140 -0
- package/bin/lib/skills.js +164 -0
- package/bin/lib/template-scaffold.js +366 -0
- package/bin/mcp/powerbi-modeling-launcher.js +42 -0
- package/bin/postinstall.js +50 -0
- package/bin/utils/mcp-detect.js +346 -0
- package/bin/utils/tui.js +314 -0
- package/commands/bi-connect.md +520 -0
- package/commands/bi-dax.md +464 -0
- package/commands/bi-kickoff.md +550 -0
- package/commands/bi-modeling.md +485 -0
- package/commands/bi-performance.md +521 -0
- package/commands/bi-powerquery.md +229 -0
- package/commands/bi-refactor.md +249 -0
- package/commands/bi-scorecard.md +268 -0
- package/commands/bi-start.md +272 -0
- package/config.example.json +23 -0
- package/config.json +23 -0
- package/desktop-extension/manifest.json +30 -0
- package/desktop-extension/package.json +10 -0
- package/desktop-extension/server.js +137 -0
- package/package.json +94 -0
- package/skills/bi-connect/SKILL.md +522 -0
- package/skills/bi-connect/scripts/update-check.js +427 -0
- package/skills/bi-dax/SKILL.md +466 -0
- package/skills/bi-dax/scripts/update-check.js +427 -0
- package/skills/bi-kickoff/SKILL.md +552 -0
- package/skills/bi-kickoff/references/flow.html +78 -0
- package/skills/bi-kickoff/references/flow.md +62 -0
- package/skills/bi-kickoff/scripts/update-check.js +427 -0
- package/skills/bi-modeling/SKILL.md +487 -0
- package/skills/bi-modeling/scripts/update-check.js +427 -0
- package/skills/bi-performance/SKILL.md +523 -0
- package/skills/bi-performance/scripts/install-tabular-editor.ps1 +159 -0
- package/skills/bi-performance/scripts/run-bpa.ps1 +265 -0
- package/skills/bi-performance/scripts/update-check.js +427 -0
- package/skills/bi-powerquery/SKILL.md +231 -0
- package/skills/bi-powerquery/references/base-template-data-contract.md +323 -0
- package/skills/bi-powerquery/references/power-query-standards.md +74 -0
- package/skills/bi-powerquery/scripts/new-powerquery-staging.ps1 +371 -0
- package/skills/bi-powerquery/scripts/test-powerquery-contract.ps1 +225 -0
- package/skills/bi-powerquery/scripts/update-check.js +427 -0
- package/skills/bi-refactor/SKILL.md +251 -0
- package/skills/bi-refactor/references/flow.md +27 -0
- package/skills/bi-refactor/scripts/update-check.js +427 -0
- package/skills/bi-scorecard/SKILL.md +270 -0
- package/skills/bi-scorecard/examples/base-template-scorecard-overlay.json +82 -0
- package/skills/bi-scorecard/scripts/new-scorecard-blueprint-from-base-template.ps1 +124 -0
- package/skills/bi-scorecard/scripts/powerbi-goal-status-rules-api.ps1 +39 -0
- package/skills/bi-scorecard/scripts/powerbi-goal-values-api.ps1 +48 -0
- package/skills/bi-scorecard/scripts/powerbi-goals-api.ps1 +68 -0
- package/skills/bi-scorecard/scripts/powerbi-rest-common.ps1 +197 -0
- package/skills/bi-scorecard/scripts/powerbi-scorecards-api.ps1 +53 -0
- package/skills/bi-scorecard/scripts/update-check.js +427 -0
- package/skills/bi-start/SKILL.md +274 -0
- package/skills/bi-start/scripts/update-check.js +427 -0
- package/src/content/base.md +197 -0
- package/src/content/mcp-requirements.json +57 -0
- package/src/content/routing.md +201 -0
- package/src/content/skills/bi-connect.md +493 -0
- package/src/content/skills/bi-dax.md +437 -0
- package/src/content/skills/bi-kickoff/SKILL.md +523 -0
- package/src/content/skills/bi-kickoff/references/flow.html +78 -0
- package/src/content/skills/bi-kickoff/references/flow.md +62 -0
- package/src/content/skills/bi-modeling.md +458 -0
- package/src/content/skills/bi-performance/SKILL.md +494 -0
- package/src/content/skills/bi-performance/scripts/install-tabular-editor.ps1 +159 -0
- package/src/content/skills/bi-performance/scripts/run-bpa.ps1 +265 -0
- package/src/content/skills/bi-powerquery/SKILL.md +202 -0
- package/src/content/skills/bi-powerquery/references/base-template-data-contract.md +323 -0
- package/src/content/skills/bi-powerquery/references/power-query-standards.md +74 -0
- package/src/content/skills/bi-powerquery/scripts/new-powerquery-staging.ps1 +371 -0
- package/src/content/skills/bi-powerquery/scripts/test-powerquery-contract.ps1 +225 -0
- package/src/content/skills/bi-refactor/SKILL.md +222 -0
- package/src/content/skills/bi-refactor/references/flow.md +27 -0
- package/src/content/skills/bi-scorecard/SKILL.md +241 -0
- package/src/content/skills/bi-scorecard/examples/base-template-scorecard-blueprint.expected.json +105 -0
- package/src/content/skills/bi-scorecard/examples/base-template-scorecard-overlay.json +82 -0
- package/src/content/skills/bi-scorecard/scripts/new-scorecard-blueprint-from-base-template.ps1 +124 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-goal-status-rules-api.ps1 +39 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-goal-values-api.ps1 +48 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-goals-api.ps1 +68 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-rest-common.ps1 +197 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-scorecards-api.ps1 +53 -0
- package/src/content/skills/bi-start.md +266 -0
- package/templates/base-template/AGENTS.md +33 -0
- package/templates/base-template/base-template.Report/.platform +11 -0
- package/templates/base-template/base-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BaseThemes/CY18SU07.json +177 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleCityPark.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleDefault.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleNeutral.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleOrchid.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleTidal.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Bloom.json +139 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/CityPark.json +40 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Classroom.json +40 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/ColorblindSafe.json +48 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/CopilotDefault.json +1861 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Divergent.json +127 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Electric.json +48 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Frontier.json +136 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/HighContrast.json +40 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Highrise.json +41 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Innovate.json +227 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/NewExecutive.json +41 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Solar.json +33 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Storm.json +25 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Sunset.json +48 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Temperature.json +33 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Tidal.json +100 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Twilight.json +40 -0
- package/templates/base-template/base-template.Report/definition/bookmarks/1d40d43c7ade66e8603c.bookmark.json +2297 -0
- package/templates/base-template/base-template.Report/definition/bookmarks/af068ff51c0ca3089ea7.bookmark.json +2300 -0
- package/templates/base-template/base-template.Report/definition/bookmarks/bookmarks.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +669 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +723 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +109 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/55e10ac7d76a1954f94f/mobile.json +31 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/55e10ac7d76a1954f94f/visual.json +378 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/57f52ecf4490f70e4da1/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/57f52ecf4490f70e4da1/visual.json +175 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +690 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/90677f13cea5d1275990/visual.json +17 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/9fe17b1971f68443fc15/mobile.json +10 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/9fe17b1971f68443fc15/visual.json +328 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +578 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +432 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +801 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1318 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b529688fe5a226643322/visual.json +209 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/c4c6f332d05e72e2eb06/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/c4c6f332d05e72e2eb06/visual.json +174 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/page.json +130 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/07e9c4302e29029c5462/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/07e9c4302e29029c5462/visual.json +690 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/109ceede4bc015b0c006/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/109ceede4bc015b0c006/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/118257e006d472277e10/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/118257e006d472277e10/visual.json +359 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/2caf02e0137c4a1280cc/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/2caf02e0137c4a1280cc/visual.json +669 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/311e76fe3c9edad68204/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/311e76fe3c9edad68204/visual.json +109 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/31c21f8cbeb3b208940a/visual.json +209 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/3ab72c25062437149b03/visual.json +17 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5959867442abcb0ce2b3/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5959867442abcb0ce2b3/visual.json +788 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5b96e0f88d192b044a13/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5b96e0f88d192b044a13/visual.json +592 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/64e749a63d0786000e22/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/64e749a63d0786000e22/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/7ae1ca604edac6586ad0/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/7ae1ca604edac6586ad0/visual.json +1310 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/840300733885141a6603/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/840300733885141a6603/visual.json +175 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/a38448cdb203279273d2/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/a38448cdb203279273d2/visual.json +516 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d1e86f213a3841d12e20/visual.json +328 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d4a484c1bcc8ee3075e2/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d4a484c1bcc8ee3075e2/visual.json +432 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d87cb5cf06acca19bbb5/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d87cb5cf06acca19bbb5/visual.json +241 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/e243da2677209ed69408/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/e243da2677209ed69408/visual.json +174 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/f3aaf24f5b22b67573b0/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/f3aaf24f5b22b67573b0/visual.json +333 -0
- package/templates/base-template/base-template.Report/definition/pages/pages.json +8 -0
- package/templates/base-template/base-template.Report/definition/report.json +89 -0
- package/templates/base-template/base-template.Report/definition/version.json +4 -0
- package/templates/base-template/base-template.Report/definition.pbir +9 -0
- package/templates/base-template/base-template.SemanticModel/.platform +11 -0
- package/templates/base-template/base-template.SemanticModel/definition/cultures/es-AR.tmdl +11185 -0
- package/templates/base-template/base-template.SemanticModel/definition/database.tmdl +3 -0
- package/templates/base-template/base-template.SemanticModel/definition/expressions.tmdl +234 -0
- package/templates/base-template/base-template.SemanticModel/definition/functions.tmdl +637 -0
- package/templates/base-template/base-template.SemanticModel/definition/model.tmdl +82 -0
- package/templates/base-template/base-template.SemanticModel/definition/relationships.tmdl +271 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Calendario.tmdl +200 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Campa/303/261as.tmdl +75 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Canales.tmdl +84 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Clientes.tmdl +143 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Devoluciones.tmdl +95 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Ejecuci/303/263n proyectos.tmdl" +130 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Entregas.tmdl +122 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Equipos m/303/251tricas.tmdl" +40 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Equipos.tmdl +73 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Horas.tmdl +122 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Interacciones clientes.tmdl +146 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Leads.tmdl +119 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Monedas.tmdl +44 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Movimientos financieros.tmdl +145 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +1294 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/N/303/263mina.tmdl +110 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Oportunidades.tmdl +135 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Presupuesto.tmdl +125 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Productos.tmdl +98 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Proyectos.tmdl +77 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Servicios.tmdl +75 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Tareas proyecto.tmdl +102 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +67 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Ventas.tmdl +180 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux An/303/241lisis dimensiones.tmdl" +38 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Comparaciones.tmdl +227 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Compatibilidad m/303/251trica-dimensi/303/263n.tmdl" +68 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Modelo configuraci/303/263n.tmdl" +44 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Modo fechas.tmdl +36 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux M/303/251trica-Equipo.tmdl" +102 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Overrides m/303/251trica-dimensi/303/263n.tmdl" +54 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Per/303/255odos.tmdl" +182 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Rango fechas modo.tmdl +36 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Rango fechas.tmdl +27 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Vista de calendario.tmdl +30 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC C/303/241lculo.tmdl" +70 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC Eje X.tmdl +63 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC M/303/251trica.tmdl" +374 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC Tipo c/303/241lculo.tmdl" +223 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_PC Dimensi/303/263n.tmdl" +98 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_PC Eje X.tmdl +68 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables//303/223rdenes servicio.tmdl" +151 -0
- package/templates/base-template/base-template.SemanticModel/definition.pbism +5 -0
- package/templates/base-template/base-template.SemanticModel/diagramLayout.json +568 -0
- package/templates/base-template/base-template.pbip +14 -0
- package/templates/base-template/template.manifest.json +41 -0
- 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
|
+
|