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
package/templates/base-template/base-template.SemanticModel/definition/tables/M/303/251tricas.tmdl
ADDED
|
@@ -0,0 +1,1294 @@
|
|
|
1
|
+
/// Tabla desconectada del template para enrutar medidas seleccionables de ventas.
|
|
2
|
+
table Métricas
|
|
3
|
+
lineageTag: f1c7296b-4b19-4310-8f46-a654a261f537
|
|
4
|
+
|
|
5
|
+
/// Moneda destino seleccionada para mostrar importes convertidos. Si no hay selección, usa la moneda base definida por el parámetro MonedaBase.
|
|
6
|
+
measure 'Moneda seleccionada' =
|
|
7
|
+
SELECTEDVALUE (
|
|
8
|
+
Monedas[Moneda], // Moneda elegida cuando hay una sola moneda visible.
|
|
9
|
+
[Moneda base] // Fallback cuando no hay una seleccion unica.
|
|
10
|
+
)
|
|
11
|
+
displayFolder: Auxiliar
|
|
12
|
+
lineageTag: 5bf2e0fa-5bf2-43bc-be26-590f8e1b0aff
|
|
13
|
+
|
|
14
|
+
/// Carrier dinámico para el valor de la métrica seleccionada en el período actual. Lee la métrica activa desde _GC Métrica o desde la tabla Métricas para que funcione en charts, cards y tooltips.
|
|
15
|
+
measure Actual =
|
|
16
|
+
CALCULATE (
|
|
17
|
+
[Métrica activa], // Evalua la metrica seleccionada desde _GC Metrica o desde la tabla Metricas.
|
|
18
|
+
'_GC Tipo cálculo'[Tipo cálculo] = "Actual" // Fuerza el rango de fechas actual del calc group Tipo calculo.
|
|
19
|
+
)
|
|
20
|
+
displayFolder: Auxiliar
|
|
21
|
+
lineageTag: 3ec2726a-08d9-438c-98fe-5cf700866b37
|
|
22
|
+
|
|
23
|
+
formatStringDefinition =
|
|
24
|
+
VAR __MetricName =
|
|
25
|
+
COALESCE (
|
|
26
|
+
SELECTEDVALUE ( '_GC Métrica'[Métrica] ),
|
|
27
|
+
SELECTEDVALUE ( 'Métricas'[Métrica] ),
|
|
28
|
+
"Ventas"
|
|
29
|
+
)
|
|
30
|
+
RETURN
|
|
31
|
+
FormatoMetricaPorNombre ( __MetricName )
|
|
32
|
+
|
|
33
|
+
/// Costo de ventas en la moneda seleccionada. La columna 'Costo Total Base' viene ya convertida a moneda base desde Power Query; la medida hace SUM puro y aplica una sola conversión base->destino al final.
|
|
34
|
+
measure 'Costo de ventas' =
|
|
35
|
+
VAR __MonedaDestino = [Moneda seleccionada] // Moneda elegida por el usuario para ver importes.
|
|
36
|
+
VAR __MonedaBase = [Moneda base] // Moneda base configurada en el modelo.
|
|
37
|
+
VAR __CostoBase = SUM ( Ventas[Costo Total Base] ) // Costo de ventas visible ya convertido a moneda base desde Power Query.
|
|
38
|
+
RETURN
|
|
39
|
+
IF (
|
|
40
|
+
__MonedaDestino = __MonedaBase, // Si destino y base coinciden, no hace falta convertir.
|
|
41
|
+
__CostoBase, // Devuelve el costo de ventas directamente en moneda base.
|
|
42
|
+
__CostoBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) ) // Convierte usando la tasa de la ultima fecha visible.
|
|
43
|
+
)
|
|
44
|
+
displayFolder: Ventas
|
|
45
|
+
lineageTag: bdf3cf39-b975-490d-a90a-4a07f07f8921
|
|
46
|
+
|
|
47
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Costo de ventas" )
|
|
48
|
+
|
|
49
|
+
/// Ventas menos costo de ventas en la moneda seleccionada.
|
|
50
|
+
measure 'Margen bruto' = [Ventas] - [Costo de ventas] // Margen bruto: ventas visibles menos costo de ventas visible, ambos en la moneda seleccionada.
|
|
51
|
+
displayFolder: Ventas
|
|
52
|
+
lineageTag: fb554d55-eae7-4308-8744-fa8d60fef44d
|
|
53
|
+
|
|
54
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Margen bruto" )
|
|
55
|
+
|
|
56
|
+
/// Margen bruto dividido por ventas.
|
|
57
|
+
measure 'Margen %' =
|
|
58
|
+
DIVIDE (
|
|
59
|
+
[Margen bruto], // Numerador: dinero que queda despues del costo.
|
|
60
|
+
[Ventas] // Denominador: ventas visibles en el mismo contexto.
|
|
61
|
+
)
|
|
62
|
+
displayFolder: Ventas
|
|
63
|
+
lineageTag: 286165a6-4e9e-4264-9418-e794ef369916
|
|
64
|
+
|
|
65
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Margen %" )
|
|
66
|
+
|
|
67
|
+
/// Cantidad de unidades vendidas.
|
|
68
|
+
measure 'Unidades vendidas' = SUM ( Ventas[Cantidad] ) // Suma las unidades vendidas visibles por filtros, slicers y eje del visual.
|
|
69
|
+
displayFolder: Producto
|
|
70
|
+
lineageTag: e7f830b2-df93-4991-83ff-03ce6358ec1e
|
|
71
|
+
|
|
72
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Unidades vendidas" )
|
|
73
|
+
|
|
74
|
+
/// Cantidad de pedidos o líneas comerciales visibles.
|
|
75
|
+
measure Pedidos = COUNTROWS ( Ventas ) // Cuenta las filas visibles de Ventas; en este template cada fila representa una linea/pedido sintetico.
|
|
76
|
+
displayFolder: Ventas
|
|
77
|
+
lineageTag: a804b7f2-306f-46db-a712-d1f1459c9bf6
|
|
78
|
+
|
|
79
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Pedidos" )
|
|
80
|
+
|
|
81
|
+
/// Ventas divididas por pedidos en la moneda seleccionada.
|
|
82
|
+
measure 'Ticket promedio' =
|
|
83
|
+
DIVIDE (
|
|
84
|
+
[Ventas], // Numerador: ventas visibles en la moneda seleccionada.
|
|
85
|
+
[Pedidos] // Denominador: cantidad de pedidos visibles.
|
|
86
|
+
)
|
|
87
|
+
displayFolder: Ventas
|
|
88
|
+
lineageTag: 61c8a07a-62ca-49e1-a2d6-3db9587ca795
|
|
89
|
+
|
|
90
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ticket promedio" )
|
|
91
|
+
|
|
92
|
+
/// Primera fecha del período actual seleccionado.
|
|
93
|
+
measure 'Fecha inicial actual' =
|
|
94
|
+
MAXX (
|
|
95
|
+
CalendarContext (), // Tabla de una fila que contiene los rangos actual y previo seleccionados.
|
|
96
|
+
[Current Start] // Fecha inicial del periodo actual.
|
|
97
|
+
)
|
|
98
|
+
formatString: dd/mm/yyyy
|
|
99
|
+
isHidden
|
|
100
|
+
displayFolder: Auxiliar
|
|
101
|
+
lineageTag: 9512b74d-b5f8-4c16-a523-9d859f85bf41
|
|
102
|
+
|
|
103
|
+
/// Última fecha del período actual seleccionado.
|
|
104
|
+
measure 'Fecha final actual' =
|
|
105
|
+
MAXX (
|
|
106
|
+
CalendarContext (), // Tabla de una fila que contiene los rangos actual y previo seleccionados.
|
|
107
|
+
[Current End] // Fecha final del periodo actual.
|
|
108
|
+
)
|
|
109
|
+
formatString: dd/mm/yyyy
|
|
110
|
+
isHidden
|
|
111
|
+
displayFolder: Auxiliar
|
|
112
|
+
lineageTag: 9491d15a-a1a7-4ded-8161-21474fdaffb6
|
|
113
|
+
|
|
114
|
+
/// Primera fecha del período previo seleccionado.
|
|
115
|
+
measure 'Fecha inicial anterior' =
|
|
116
|
+
MAXX (
|
|
117
|
+
CalendarContext (), // Tabla de una fila que contiene los rangos actual y previo seleccionados.
|
|
118
|
+
[Previous Start] // Fecha inicial del periodo previo comparable.
|
|
119
|
+
)
|
|
120
|
+
formatString: dd/mm/yyyy
|
|
121
|
+
isHidden
|
|
122
|
+
displayFolder: Auxiliar
|
|
123
|
+
lineageTag: ef4de0c9-0fd3-4de8-a970-89642c59064e
|
|
124
|
+
|
|
125
|
+
/// Última fecha del período previo seleccionado.
|
|
126
|
+
measure 'Fecha final anterior' =
|
|
127
|
+
MAXX (
|
|
128
|
+
CalendarContext (), // Tabla de una fila que contiene los rangos actual y previo seleccionados.
|
|
129
|
+
[Previous End] // Fecha final del periodo previo comparable.
|
|
130
|
+
)
|
|
131
|
+
formatString: dd/mm/yyyy
|
|
132
|
+
isHidden
|
|
133
|
+
displayFolder: Auxiliar
|
|
134
|
+
lineageTag: be892c13-b21d-442e-b210-1a53e47debc2
|
|
135
|
+
|
|
136
|
+
/// Título corto con rango actual, rango previo, día abreviado y diferencia de días.
|
|
137
|
+
measure 'Título comparación' =
|
|
138
|
+
VAR __CurrentStart = [Fecha inicial actual]
|
|
139
|
+
VAR __CurrentEnd = [Fecha final actual]
|
|
140
|
+
VAR __PreviousStart = [Fecha inicial anterior]
|
|
141
|
+
VAR __PreviousEnd = [Fecha final anterior]
|
|
142
|
+
VAR __CurrentStartText = SUBSTITUTE ( LOWER ( FORMAT ( __CurrentStart, "ddd d/M/yy", "es-AR" ) ), ".", "" )
|
|
143
|
+
VAR __CurrentEndText = SUBSTITUTE ( LOWER ( FORMAT ( __CurrentEnd, "ddd d/M/yy", "es-AR" ) ), ".", "" )
|
|
144
|
+
VAR __PreviousStartText = SUBSTITUTE ( LOWER ( FORMAT ( __PreviousStart, "ddd d/M/yy", "es-AR" ) ), ".", "" )
|
|
145
|
+
VAR __PreviousEndText = SUBSTITUTE ( LOWER ( FORMAT ( __PreviousEnd, "ddd d/M/yy", "es-AR" ) ), ".", "" )
|
|
146
|
+
VAR __DaysInRange =
|
|
147
|
+
IF (
|
|
148
|
+
NOT ISBLANK ( __CurrentStart ) && NOT ISBLANK ( __CurrentEnd ),
|
|
149
|
+
DATEDIFF ( __CurrentStart, __CurrentEnd, DAY ) + 1
|
|
150
|
+
)
|
|
151
|
+
VAR __HasAllDates =
|
|
152
|
+
NOT ISBLANK ( __CurrentStart )
|
|
153
|
+
&& NOT ISBLANK ( __CurrentEnd )
|
|
154
|
+
&& NOT ISBLANK ( __PreviousStart )
|
|
155
|
+
&& NOT ISBLANK ( __PreviousEnd )
|
|
156
|
+
RETURN
|
|
157
|
+
IF (
|
|
158
|
+
__HasAllDates,
|
|
159
|
+
__CurrentStartText
|
|
160
|
+
& " - "
|
|
161
|
+
& __CurrentEndText
|
|
162
|
+
& " vs "
|
|
163
|
+
& __PreviousStartText
|
|
164
|
+
& " - "
|
|
165
|
+
& __PreviousEndText
|
|
166
|
+
& " - "
|
|
167
|
+
& FORMAT ( __DaysInRange, "#,0" )
|
|
168
|
+
& " días"
|
|
169
|
+
)
|
|
170
|
+
isHidden
|
|
171
|
+
displayFolder: Auxiliar
|
|
172
|
+
lineageTag: 62eb5630-a405-4a36-adf1-48f07b3345fd
|
|
173
|
+
|
|
174
|
+
/// Ventas de clientes cuya primera venta histórica cae dentro del contexto de fechas visible. Devuelve 0 cuando no hay clientes nuevos para que los visuals no queden en blanco.
|
|
175
|
+
measure 'Ventas nuevos clientes' =
|
|
176
|
+
VAR __FechasVisibles = VALUES ( 'Calendario'[Fecha] ) // Fechas visibles despues de slicers, filtros y eje del visual.
|
|
177
|
+
VAR __ClientesNuevos =
|
|
178
|
+
FILTER (
|
|
179
|
+
VALUES ( Clientes[ClienteId] ), // Recorre los clientes visibles por el resto del contexto.
|
|
180
|
+
VAR __PrimeraVentaCliente =
|
|
181
|
+
CALCULATE (
|
|
182
|
+
MIN ( Ventas[Fecha] ), // Primera fecha historica de venta del cliente evaluado.
|
|
183
|
+
REMOVEFILTERS ( 'Calendario' ) // Quita filtros de fecha para mirar toda la historia del cliente.
|
|
184
|
+
)
|
|
185
|
+
RETURN
|
|
186
|
+
CONTAINSROW ( __FechasVisibles, __PrimeraVentaCliente ) // Mantiene al cliente si su primera venta cae en el periodo visible.
|
|
187
|
+
)
|
|
188
|
+
VAR __VentasNuevos = CALCULATE ( [Ventas], __ClientesNuevos ) // Evalua ventas filtrando solo los clientes nuevos.
|
|
189
|
+
RETURN
|
|
190
|
+
COALESCE ( __VentasNuevos, 0 ) // Devuelve cero cuando no hay clientes nuevos para que el visual no quede en blanco.
|
|
191
|
+
displayFolder: Ventas
|
|
192
|
+
lineageTag: eca6420b-769a-4a38-8cf3-67d9056f74f4
|
|
193
|
+
|
|
194
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ventas nuevos clientes" )
|
|
195
|
+
|
|
196
|
+
/// Porcentaje de ventas visibles explicado por clientes nuevos. Devuelve 0 cuando no hay ventas o no hay clientes nuevos.
|
|
197
|
+
measure 'Ventas nuevos clientes %' =
|
|
198
|
+
DIVIDE (
|
|
199
|
+
[Ventas nuevos clientes], // Numerador: ventas explicadas por clientes nuevos.
|
|
200
|
+
[Ventas], // Denominador: ventas totales visibles.
|
|
201
|
+
0 // Si no hay ventas, devuelve cero en lugar de BLANK.
|
|
202
|
+
)
|
|
203
|
+
displayFolder: Ratios
|
|
204
|
+
lineageTag: 44abd84b-93fd-4691-9595-5dd70d5c1ec0
|
|
205
|
+
|
|
206
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ventas nuevos clientes %" )
|
|
207
|
+
|
|
208
|
+
/// Título textual para visuals: devuelve el nombre de la métrica seleccionada desde Métricas[Métrica].
|
|
209
|
+
measure 'Título métrica' =
|
|
210
|
+
VAR __MetricName =
|
|
211
|
+
COALESCE (
|
|
212
|
+
SELECTEDVALUE ( '_GC Métrica'[Métrica] ), // Fuente principal: metrica elegida en el slicer del reporte.
|
|
213
|
+
SELECTEDVALUE ( 'Métricas'[Métrica] ), // Fallback: tabla maestra cuando el contexto viene directo desde Metricas.
|
|
214
|
+
"Ventas" // Fallback final para que el titulo nunca quede vacio.
|
|
215
|
+
)
|
|
216
|
+
RETURN
|
|
217
|
+
__MetricName // Texto que Power BI usa como titulo dinamico del visual.
|
|
218
|
+
displayFolder: Auxiliar
|
|
219
|
+
lineageTag: ab43c6f2-0fee-4d37-96fe-ca978cf66ea2
|
|
220
|
+
|
|
221
|
+
/// Subtítulo textual para visuals: devuelve la definición de la métrica seleccionada desde Métricas[Descripción].
|
|
222
|
+
measure 'Subtítulo métrica' =
|
|
223
|
+
VAR __MetricName =
|
|
224
|
+
COALESCE (
|
|
225
|
+
SELECTEDVALUE ( '_GC Métrica'[Métrica] ), // Fuente principal: metrica elegida en el slicer del reporte.
|
|
226
|
+
SELECTEDVALUE ( 'Métricas'[Métrica] ), // Fallback: tabla maestra cuando el contexto viene directo desde Metricas.
|
|
227
|
+
"Ventas" // Fallback final para poder buscar una descripcion.
|
|
228
|
+
)
|
|
229
|
+
RETURN
|
|
230
|
+
LOOKUPVALUE (
|
|
231
|
+
'Métricas'[Descripción], // Texto descriptivo que se mostrara como subtitulo dinamico.
|
|
232
|
+
'Métricas'[Métrica], __MetricName // Busca la descripcion de la metrica activa.
|
|
233
|
+
)
|
|
234
|
+
displayFolder: Auxiliar
|
|
235
|
+
lineageTag: eab62d0c-d40b-4b8a-b79c-cec58830ea57
|
|
236
|
+
|
|
237
|
+
/// Moneda base definida por el parámetro Power Query MonedaBase. También es el default de visualización cuando no hay una selección única en Monedas.
|
|
238
|
+
measure 'Moneda base' =
|
|
239
|
+
VAR __ConfiguredCurrency =
|
|
240
|
+
MAXX (
|
|
241
|
+
FILTER (
|
|
242
|
+
ALL ( '_Aux Modelo configuración' ), // Ignora filtros externos para leer la configuracion global del modelo.
|
|
243
|
+
'_Aux Modelo configuración'[Configuración] = "Moneda Base" // Deja solo la fila que guarda la moneda base.
|
|
244
|
+
),
|
|
245
|
+
'_Aux Modelo configuración'[ValorTexto] // Toma el valor textual de esa fila, por ejemplo USD.
|
|
246
|
+
)
|
|
247
|
+
RETURN
|
|
248
|
+
COALESCE ( __ConfiguredCurrency, "USD" ) // Si la configuracion falta, usa USD para que el modelo siga funcionando.
|
|
249
|
+
isHidden
|
|
250
|
+
displayFolder: Auxiliar
|
|
251
|
+
lineageTag: b65ba356-1fcd-4f55-b408-68e69b6bc77b
|
|
252
|
+
|
|
253
|
+
/// Dispatcher interno usado por helpers de etiquetas y colores. NO usar directamente en visuals principales; los visuals dinámicos deben usar los carriers [Actual] y [Previo] con el calc group '_GC Métrica'.
|
|
254
|
+
measure 'Métrica activa' =
|
|
255
|
+
VAR __MetricName =
|
|
256
|
+
COALESCE (
|
|
257
|
+
SELECTEDVALUE ( '_GC Métrica'[Métrica] ),
|
|
258
|
+
SELECTEDVALUE ( 'Métricas'[Métrica] ),
|
|
259
|
+
"Ventas"
|
|
260
|
+
)
|
|
261
|
+
RETURN
|
|
262
|
+
SWITCH (
|
|
263
|
+
__MetricName,
|
|
264
|
+
"Ventas", [Ventas],
|
|
265
|
+
"Margen bruto", [Margen bruto],
|
|
266
|
+
"Margen %", [Margen %],
|
|
267
|
+
"Pedidos", [Pedidos],
|
|
268
|
+
"Ticket promedio", [Ticket promedio],
|
|
269
|
+
"Pipeline abierto", [Pipeline abierto],
|
|
270
|
+
"Tasa de conversión", [Tasa de conversión],
|
|
271
|
+
"Inversión marketing", [Inversión marketing],
|
|
272
|
+
"Leads", [Leads],
|
|
273
|
+
"MQLs", [MQLs],
|
|
274
|
+
"Costo por lead", [Costo por lead],
|
|
275
|
+
"Tasa lead a cliente", [Tasa lead a cliente],
|
|
276
|
+
"ROAS", [ROAS],
|
|
277
|
+
"Ventas atribuidas", [Ventas atribuidas],
|
|
278
|
+
"Clientes activos", [Clientes activos],
|
|
279
|
+
"Clientes nuevos", [Clientes nuevos],
|
|
280
|
+
"Retención %", [Retención %],
|
|
281
|
+
"Churn %", [Churn %],
|
|
282
|
+
"NPS", [NPS],
|
|
283
|
+
"Reclamos", [Reclamos],
|
|
284
|
+
"Tiempo medio de respuesta", [Tiempo medio de respuesta],
|
|
285
|
+
"Órdenes completadas", [Órdenes completadas],
|
|
286
|
+
"Entregas a tiempo %", [Entregas a tiempo %],
|
|
287
|
+
"Backlog operativo", [Backlog operativo],
|
|
288
|
+
"Tiempo de ciclo", [Tiempo de ciclo],
|
|
289
|
+
"SLA cumplido %", [SLA cumplido %],
|
|
290
|
+
"Retrabajos", [Retrabajos],
|
|
291
|
+
"Capacidad utilizada %", [Capacidad utilizada %],
|
|
292
|
+
"Ingresos", [Ingresos],
|
|
293
|
+
"Gastos operativos", [Gastos operativos],
|
|
294
|
+
"EBITDA", [EBITDA],
|
|
295
|
+
"Margen operativo %", [Margen operativo %],
|
|
296
|
+
"Cash collected", [Cash collected],
|
|
297
|
+
"Cuentas por cobrar", [Cuentas por cobrar],
|
|
298
|
+
"Variación vs presupuesto %", [Variación vs presupuesto %],
|
|
299
|
+
"Productos activos", [Productos activos],
|
|
300
|
+
"Unidades vendidas", [Unidades vendidas],
|
|
301
|
+
"Mix productos %", [Mix productos %],
|
|
302
|
+
"Devoluciones %", [Devoluciones %],
|
|
303
|
+
"Margen por producto", [Margen por producto],
|
|
304
|
+
"Servicios adjuntos %", [Servicios adjuntos %],
|
|
305
|
+
"Productos sin venta", [Productos sin venta],
|
|
306
|
+
"Headcount", [Headcount],
|
|
307
|
+
"Costo laboral", [Costo laboral],
|
|
308
|
+
"Rotación %", [Rotación %],
|
|
309
|
+
"Ausentismo %", [Ausentismo %],
|
|
310
|
+
"Horas trabajadas", [Horas trabajadas],
|
|
311
|
+
"Horas facturables %", [Horas facturables %],
|
|
312
|
+
"Utilización %", [Utilización %],
|
|
313
|
+
"Proyectos activos", [Proyectos activos],
|
|
314
|
+
"Proyectos en riesgo", [Proyectos en riesgo],
|
|
315
|
+
"Avance promedio %", [Avance promedio %],
|
|
316
|
+
"Rentabilidad de proyectos", [Rentabilidad de proyectos],
|
|
317
|
+
"Horas de proyecto", [Horas de proyecto],
|
|
318
|
+
"Desvío presupuesto %", [Desvío presupuesto %],
|
|
319
|
+
"Tareas vencidas", [Tareas vencidas],
|
|
320
|
+
[Ventas]
|
|
321
|
+
)
|
|
322
|
+
isHidden
|
|
323
|
+
displayFolder: Auxiliar
|
|
324
|
+
lineageTag: e650b19e-4e72-4efd-a246-a8c4cb5f52d6
|
|
325
|
+
|
|
326
|
+
/// Devuelve la Tendencia (Sube/Baja es positivo) de la métrica seleccionada. Usado por helpers de color para decidir verde/rojo.
|
|
327
|
+
measure 'Tendencia activa' =
|
|
328
|
+
VAR __MetricName =
|
|
329
|
+
COALESCE (
|
|
330
|
+
SELECTEDVALUE ( '_GC Métrica'[Métrica] ), // Fuente principal: slicer auxiliar de metricas.
|
|
331
|
+
SELECTEDVALUE ( 'Métricas'[Métrica] ), // Fallback: tabla maestra de metricas.
|
|
332
|
+
"Ventas" // Fallback final para buscar tendencia.
|
|
333
|
+
)
|
|
334
|
+
RETURN
|
|
335
|
+
LOOKUPVALUE (
|
|
336
|
+
'Métricas'[Tendencia], // Columna que indica si subir o bajar es positivo.
|
|
337
|
+
'Métricas'[Métrica], __MetricName // Busca la fila de metadata de la metrica activa.
|
|
338
|
+
)
|
|
339
|
+
isHidden
|
|
340
|
+
displayFolder: Auxiliar
|
|
341
|
+
lineageTag: 6dce2db1-19ad-4f49-aba6-4808e6f3fe29
|
|
342
|
+
|
|
343
|
+
/// Etiqueta textual para tarjetas KPI: variación porcentual con ícono Unicode de dirección e incluye el valor previo en formato compacto como `Prev.`.
|
|
344
|
+
measure 'Etiqueta tarjeta' =
|
|
345
|
+
VAR __CambioPct = [Etiqueta variación %] // Pieza de variacion porcentual que puede colorearse si se usa separada.
|
|
346
|
+
VAR __Previo = [Etiqueta previo] // Pieza negra con el valor previo abreviado.
|
|
347
|
+
RETURN
|
|
348
|
+
IF (
|
|
349
|
+
ISBLANK ( __CambioPct ), "-", // Si no hay variacion calculable, muestra guion.
|
|
350
|
+
__CambioPct & " " & __Previo // Texto completo para tarjetas existentes: variacion mas previo.
|
|
351
|
+
)
|
|
352
|
+
displayFolder: Auxiliar
|
|
353
|
+
lineageTag: 1f31364d-831d-4e5b-854f-f3c6a9171d7f
|
|
354
|
+
|
|
355
|
+
/// Color para formato condicional de etiquetas de variación: Tremor Green #22C55E cuando la variación es favorable, Tremor Red #EF4444 cuando es desfavorable y Tremor Gray #6B7280 cuando es neutra o no evaluable.
|
|
356
|
+
measure 'Color etiqueta variación' =
|
|
357
|
+
VAR __Actual = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Actual" ) // Valor de la metrica activa en el periodo actual.
|
|
358
|
+
VAR __Previo = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Previo" ) // Valor de la metrica activa en el periodo previo.
|
|
359
|
+
VAR __VarPct = DIVIDE ( __Actual - __Previo, __Previo ) // Variacion porcentual segura; devuelve BLANK si previo es cero o vacio.
|
|
360
|
+
VAR __Trend = [Tendencia activa] // Metadata que dice si subir o bajar es positivo.
|
|
361
|
+
VAR __Direction =
|
|
362
|
+
SWITCH (
|
|
363
|
+
TRUE (),
|
|
364
|
+
ISBLANK ( __VarPct ), 0, // Sin variacion calculable, direccion neutra.
|
|
365
|
+
__VarPct > 0, 1, // Variacion positiva.
|
|
366
|
+
__VarPct < 0, -1, // Variacion negativa.
|
|
367
|
+
0 // Variacion exactamente cero.
|
|
368
|
+
)
|
|
369
|
+
VAR __Score =
|
|
370
|
+
SWITCH (
|
|
371
|
+
TRUE (),
|
|
372
|
+
__Direction = 0 || ISBLANK ( __Trend ), 0, // Sin direccion o tendencia, color neutro.
|
|
373
|
+
__Trend IN { "Baja es positivo", "Negativo", "Negativa" } && __Direction < 0, 1, // Si bajar es bueno y bajo, es favorable.
|
|
374
|
+
__Trend IN { "Baja es positivo", "Negativo", "Negativa" } && __Direction > 0, -1, // Si bajar es bueno y subio, es desfavorable.
|
|
375
|
+
__Trend IN { "Sube es positivo", "Positivo", "Positiva" } && __Direction > 0, 1, // Si subir es bueno y subio, es favorable.
|
|
376
|
+
__Trend IN { "Sube es positivo", "Positivo", "Positiva" } && __Direction < 0, -1, // Si subir es bueno y bajo, es desfavorable.
|
|
377
|
+
0 // Tendencia no reconocida, color neutro.
|
|
378
|
+
)
|
|
379
|
+
RETURN
|
|
380
|
+
SWITCH (
|
|
381
|
+
TRUE (),
|
|
382
|
+
__Score > 0, "#22C55E", // Favorable: verde.
|
|
383
|
+
__Score < 0, "#EF4444", // Desfavorable: rojo.
|
|
384
|
+
"#6B7280" // Neutro o no evaluable: gris.
|
|
385
|
+
)
|
|
386
|
+
displayFolder: Auxiliar
|
|
387
|
+
lineageTag: a1b430dd-e3c7-4777-98da-a8ab52a43d03
|
|
388
|
+
|
|
389
|
+
/// Color para formato condicional de bullet charts: Tremor Green/Red/Gray según dirección vs. tendencia configurada en Métricas.
|
|
390
|
+
measure 'Color bullet variación' = [Color etiqueta variación] // Reusa la misma regla de color semantico que las demas etiquetas.
|
|
391
|
+
displayFolder: Auxiliar
|
|
392
|
+
lineageTag: 6c9e9cdf-81af-4378-93b9-2e5a628737cd
|
|
393
|
+
|
|
394
|
+
/// Etiqueta compacta para bullet charts: solo ícono Unicode de subida/bajada y variación porcentual. El color se aplica con la medida 'Color bullet variación'.
|
|
395
|
+
measure 'Etiqueta bullet chart' = [Etiqueta variación %] // Etiqueta corta para bullet chart: solo flecha y variacion porcentual.
|
|
396
|
+
displayFolder: Auxiliar
|
|
397
|
+
lineageTag: 0e966a85-3d13-4745-8a42-1069a6b56050
|
|
398
|
+
|
|
399
|
+
/// Etiqueta textual compacta de la métrica activa. Usar en cards KPI cuando se necesita abreviación dinámica por métrica.
|
|
400
|
+
measure 'Etiqueta métrica activa' =
|
|
401
|
+
FormatoValorCompacto (
|
|
402
|
+
[Métrica activa] // Valor numerico de la metrica seleccionada convertido a texto compacto.
|
|
403
|
+
)
|
|
404
|
+
displayFolder: Auxiliar
|
|
405
|
+
lineageTag: 9c82ede2-2e3c-4c5c-8677-e7ceab381482
|
|
406
|
+
|
|
407
|
+
/// Ventas convertidas a la moneda seleccionada.
|
|
408
|
+
measure Ventas =
|
|
409
|
+
VAR __MonedaDestino = [Moneda seleccionada] // Moneda elegida por el usuario para ver importes.
|
|
410
|
+
VAR __MonedaBase = [Moneda base] // Moneda base configurada en el modelo.
|
|
411
|
+
VAR __VentasBase = SUM ( Ventas[Venta Bruta Base] ) // Ventas visibles ya convertidas a moneda base desde Power Query.
|
|
412
|
+
RETURN
|
|
413
|
+
IF (
|
|
414
|
+
__MonedaDestino = __MonedaBase, // Si destino y base coinciden, no hace falta convertir.
|
|
415
|
+
__VentasBase, // Devuelve ventas directamente en moneda base.
|
|
416
|
+
__VentasBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) ) // Convierte usando la tasa de la ultima fecha visible.
|
|
417
|
+
)
|
|
418
|
+
displayFolder: Ventas
|
|
419
|
+
lineageTag: a2d0e778-d4da-41b0-b1fd-e76537c8ef50
|
|
420
|
+
|
|
421
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ventas" )
|
|
422
|
+
|
|
423
|
+
/// Carrier dinámico para el valor de la métrica seleccionada en el período previo comparable. Lee la métrica activa desde _GC Métrica o desde la tabla Métricas para que funcione en charts, cards y tooltips.
|
|
424
|
+
measure Previo =
|
|
425
|
+
CALCULATE (
|
|
426
|
+
[Métrica activa], // Evalua la misma metrica seleccionada que usa Actual.
|
|
427
|
+
'_GC Tipo cálculo'[Tipo cálculo] = "Previo" // Fuerza el rango de fechas previo comparable del calc group Tipo calculo.
|
|
428
|
+
)
|
|
429
|
+
displayFolder: Auxiliar
|
|
430
|
+
lineageTag: 606eb290-7693-4839-a654-e01a62abbc0b
|
|
431
|
+
|
|
432
|
+
formatStringDefinition =
|
|
433
|
+
VAR __MetricName =
|
|
434
|
+
COALESCE (
|
|
435
|
+
SELECTEDVALUE ( '_GC Métrica'[Métrica] ),
|
|
436
|
+
SELECTEDVALUE ( 'Métricas'[Métrica] ),
|
|
437
|
+
"Ventas"
|
|
438
|
+
)
|
|
439
|
+
RETURN
|
|
440
|
+
FormatoMetricaPorNombre ( __MetricName )
|
|
441
|
+
|
|
442
|
+
/// Etiqueta textual con solo el cambio absoluto abreviado entre paréntesis. Pensada para mostrarse en negro junto a la pieza coloreada de variación porcentual.
|
|
443
|
+
measure 'Etiqueta var abs' =
|
|
444
|
+
VAR __Actual = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Actual" ) // Valor de la metrica activa en el periodo actual.
|
|
445
|
+
VAR __Previo = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Previo" ) // Valor de la metrica activa en el periodo previo.
|
|
446
|
+
VAR __Change = __Actual - __Previo // Cambio absoluto: actual menos previo.
|
|
447
|
+
VAR __ChangeTxt = FormatoValorCompacto ( __Change ) // Cambio absoluto convertido a texto compacto segun la metrica.
|
|
448
|
+
RETURN
|
|
449
|
+
IF (
|
|
450
|
+
ISBLANK ( __Actual ) || ISBLANK ( __Previo ), BLANK (), // Si falta actual o previo, no muestra cambio.
|
|
451
|
+
__ChangeTxt // Devuelve solo el valor del cambio para que el visual lo combine con otras piezas.
|
|
452
|
+
)
|
|
453
|
+
displayFolder: Auxiliar
|
|
454
|
+
lineageTag: 506f228c-1517-4e55-92b1-5170ab28fb5b
|
|
455
|
+
|
|
456
|
+
annotation PBI_FormatHint = {"isGeneralNumber":true}
|
|
457
|
+
|
|
458
|
+
/// Etiqueta textual con solo el ícono de dirección y la variación porcentual. Usar con formato condicional de color; las demás piezas de texto deben quedar en negro.
|
|
459
|
+
measure 'Etiqueta variación %' =
|
|
460
|
+
VAR __Actual = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Actual" ) // Valor de la metrica activa en el periodo actual.
|
|
461
|
+
VAR __Previo = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Previo" ) // Valor de la metrica activa en el periodo previo.
|
|
462
|
+
VAR __VarPct = DIVIDE ( __Actual - __Previo, __Previo ) // Variacion porcentual segura; devuelve BLANK si previo es cero o vacio.
|
|
463
|
+
VAR __Icon =
|
|
464
|
+
SWITCH (
|
|
465
|
+
TRUE (),
|
|
466
|
+
ISBLANK ( __VarPct ), BLANK (), // Sin variacion calculable, no muestra icono.
|
|
467
|
+
__VarPct > 0, UNICHAR ( 9650 ), // Variacion positiva: triangulo hacia arriba.
|
|
468
|
+
__VarPct < 0, UNICHAR ( 9660 ), // Variacion negativa: triangulo hacia abajo.
|
|
469
|
+
BLANK () // Variacion cero: no muestra icono.
|
|
470
|
+
)
|
|
471
|
+
VAR __PctTxt = FORMAT ( ABS ( __VarPct ), "0.0%" ) // ABS quita el signo porque la flecha ya marca direccion.
|
|
472
|
+
RETURN
|
|
473
|
+
IF (
|
|
474
|
+
ISBLANK ( __VarPct ), BLANK (), // Sin variacion calculable, no muestra texto.
|
|
475
|
+
IF ( ISBLANK ( __Icon ), __PctTxt, __Icon & " " & __PctTxt ) // Une flecha y porcentaje; si no hay flecha, muestra solo porcentaje.
|
|
476
|
+
)
|
|
477
|
+
displayFolder: Auxiliar
|
|
478
|
+
lineageTag: cf5bd5c1-ff2e-4e8a-9534-1b7d08c5c76d
|
|
479
|
+
|
|
480
|
+
/// Etiqueta textual con solo el valor actual abreviado de la métrica seleccionada. Pensada para mostrarse en negro junto a la pieza coloreada de variación porcentual.
|
|
481
|
+
measure 'Etiqueta actual' =
|
|
482
|
+
VAR __Actual = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Actual" ) // Valor de la metrica activa en el periodo actual.
|
|
483
|
+
RETURN
|
|
484
|
+
FormatoValorCompacto ( __Actual ) // Convierte el valor actual a texto compacto: moneda, porcentaje o numero.
|
|
485
|
+
displayFolder: Auxiliar
|
|
486
|
+
lineageTag: 489bcfae-60bf-4904-a560-28f12f1f62a2
|
|
487
|
+
|
|
488
|
+
/// Etiqueta textual con solo el valor previo abreviado entre paréntesis. Pensada para mostrarse en negro junto a la pieza coloreada de variación porcentual.
|
|
489
|
+
measure 'Etiqueta previo' =
|
|
490
|
+
VAR __Previo = CALCULATE ( [Métrica activa], '_GC Tipo cálculo'[Tipo cálculo] = "Previo" ) // Valor de la metrica activa en el periodo previo.
|
|
491
|
+
VAR __PrevioTxt = FormatoValorCompacto ( __Previo ) // Valor previo convertido a texto compacto segun la metrica.
|
|
492
|
+
RETURN
|
|
493
|
+
IF (
|
|
494
|
+
ISBLANK ( __Previo ), BLANK (), // Si no hay valor previo, no muestra la pieza.
|
|
495
|
+
"(Prev. " & __PrevioTxt & ")" // Texto final para mostrarse en negro junto a la variacion porcentual.
|
|
496
|
+
)
|
|
497
|
+
displayFolder: Auxiliar
|
|
498
|
+
lineageTag: 26e75ef8-97f8-4f69-bff0-c83d21c1f992
|
|
499
|
+
|
|
500
|
+
/// Alias técnico para visuales existentes que todavía referencian el nombre corto. Devuelve la medida canónica [Etiqueta variación %].
|
|
501
|
+
measure 'Etiqueta var %' = [Etiqueta variación %] // Alias tecnico para visuales que todavia apuntan al nombre anterior.
|
|
502
|
+
displayFolder: Auxiliar
|
|
503
|
+
lineageTag: 2e7766bf-de3d-4eb6-9418-2d4af1a0060c
|
|
504
|
+
|
|
505
|
+
/// Carrier dinámico para el cambio absoluto de la métrica seleccionada: Actual menos Previo en el mismo contexto de filtro/evaluación. Es numérico y sirve en cards, matrices, gráficos, tooltips y consultas DAX.
|
|
506
|
+
measure Variación =
|
|
507
|
+
VAR __Actual =
|
|
508
|
+
CALCULATE (
|
|
509
|
+
[Métrica activa], // Evalua la metrica seleccionada por el slicer o contexto activo, no el carrier base Ventas.
|
|
510
|
+
'_GC Tipo cálculo'[Tipo cálculo] = "Actual" // Aplica el rango actual definido por el contexto de fechas vigente.
|
|
511
|
+
)
|
|
512
|
+
VAR __Previo =
|
|
513
|
+
CALCULATE (
|
|
514
|
+
[Métrica activa], // Evalua la misma metrica seleccionada para mantener consistencia con Actual.
|
|
515
|
+
'_GC Tipo cálculo'[Tipo cálculo] = "Previo" // Aplica el rango previo comparable definido por el contexto de fechas vigente.
|
|
516
|
+
)
|
|
517
|
+
RETURN
|
|
518
|
+
IF (
|
|
519
|
+
NOT ISNUMBER ( __Actual ) || NOT ISNUMBER ( __Previo ), // Si alguno no es numerico, no fuerza cero ni texto.
|
|
520
|
+
BLANK (),
|
|
521
|
+
__Actual - __Previo // Cambio absoluto de la metrica seleccionada en el mismo contexto de filtro.
|
|
522
|
+
)
|
|
523
|
+
displayFolder: Auxiliar
|
|
524
|
+
lineageTag: 937f53e4-8055-499a-9181-713855f79c8a
|
|
525
|
+
|
|
526
|
+
formatStringDefinition =
|
|
527
|
+
VAR __MetricName =
|
|
528
|
+
COALESCE (
|
|
529
|
+
SELECTEDVALUE ( '_GC Métrica'[Métrica] ),
|
|
530
|
+
SELECTEDVALUE ( 'Métricas'[Métrica] ),
|
|
531
|
+
"Ventas"
|
|
532
|
+
)
|
|
533
|
+
RETURN
|
|
534
|
+
FormatoMetricaPorNombre ( __MetricName )
|
|
535
|
+
|
|
536
|
+
/// Carrier dinámico para la variación porcentual de la métrica seleccionada contra Previo en el mismo contexto de filtro/evaluación. Devuelve un valor numérico porcentual, no una etiqueta textual.
|
|
537
|
+
measure 'Variación %' =
|
|
538
|
+
VAR __Actual =
|
|
539
|
+
CALCULATE (
|
|
540
|
+
[Métrica activa], // Evalua la metrica seleccionada por el slicer o contexto activo, no el carrier base Ventas.
|
|
541
|
+
'_GC Tipo cálculo'[Tipo cálculo] = "Actual" // Aplica el rango actual definido por el contexto de fechas vigente.
|
|
542
|
+
)
|
|
543
|
+
VAR __Previo =
|
|
544
|
+
CALCULATE (
|
|
545
|
+
[Métrica activa], // Evalua la misma metrica seleccionada para mantener consistencia con Actual.
|
|
546
|
+
'_GC Tipo cálculo'[Tipo cálculo] = "Previo" // Aplica el rango previo comparable definido por el contexto de fechas vigente.
|
|
547
|
+
)
|
|
548
|
+
RETURN
|
|
549
|
+
IF (
|
|
550
|
+
NOT ISNUMBER ( __Actual ) || NOT ISNUMBER ( __Previo ) || __Previo = 0, // Evita porcentajes sin base comparable.
|
|
551
|
+
BLANK (),
|
|
552
|
+
DIVIDE ( __Actual - __Previo, __Previo ) // Variacion porcentual segura contra el valor previo.
|
|
553
|
+
)
|
|
554
|
+
formatString: 0.0%;-0.0%;0.0%
|
|
555
|
+
displayFolder: Auxiliar
|
|
556
|
+
lineageTag: c7efd075-16cd-47d4-9b4e-a55bd09ef069
|
|
557
|
+
|
|
558
|
+
/// Alias de compatibilidad para visuales que muestran solo el icono de direccion y la variacion porcentual. Devuelve la medida canonica [Etiqueta variación %].
|
|
559
|
+
measure 'Etiqueta cambio %' = [Etiqueta variación %]
|
|
560
|
+
displayFolder: Auxiliar
|
|
561
|
+
lineageTag: 1fd607ad-a298-42ed-a45b-32478d8cef1b
|
|
562
|
+
|
|
563
|
+
/// Alias de compatibilidad para visuales que muestran el cambio absoluto abreviado. Devuelve la medida canonica [Etiqueta var abs].
|
|
564
|
+
measure 'Etiqueta cambio absoluto' = [Etiqueta var abs]
|
|
565
|
+
displayFolder: Auxiliar
|
|
566
|
+
lineageTag: a011f129-ee82-40b8-9b9f-8ba9a5c17ec1
|
|
567
|
+
|
|
568
|
+
/// Importe potencial de oportunidades abiertas en la moneda seleccionada.
|
|
569
|
+
measure 'Pipeline abierto' =
|
|
570
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
571
|
+
VAR __MonedaBase = [Moneda base]
|
|
572
|
+
VAR __ValorBase =
|
|
573
|
+
CALCULATE (
|
|
574
|
+
SUM ( Oportunidades[Importe Potencial Base] ),
|
|
575
|
+
Oportunidades[Estado] = "Abierta"
|
|
576
|
+
)
|
|
577
|
+
RETURN
|
|
578
|
+
IF (
|
|
579
|
+
__MonedaDestino = __MonedaBase,
|
|
580
|
+
__ValorBase,
|
|
581
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
582
|
+
)
|
|
583
|
+
displayFolder: Ventas
|
|
584
|
+
lineageTag: 65543182-8c6d-4f72-b230-99238c163cd5
|
|
585
|
+
|
|
586
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Pipeline abierto" )
|
|
587
|
+
|
|
588
|
+
/// Oportunidades ganadas divididas por oportunidades totales.
|
|
589
|
+
measure 'Tasa de conversión' =
|
|
590
|
+
DIVIDE (
|
|
591
|
+
CALCULATE ( COUNTROWS ( Oportunidades ), Oportunidades[Estado] = "Ganada" ),
|
|
592
|
+
COUNTROWS ( Oportunidades ),
|
|
593
|
+
0
|
|
594
|
+
)
|
|
595
|
+
displayFolder: Ventas
|
|
596
|
+
lineageTag: 95c17dad-1a0c-4d22-87d1-d4a6419b8159
|
|
597
|
+
|
|
598
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Tasa de conversión" )
|
|
599
|
+
|
|
600
|
+
/// Inversión de marketing en la moneda seleccionada.
|
|
601
|
+
measure 'Inversión marketing' =
|
|
602
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
603
|
+
VAR __MonedaBase = [Moneda base]
|
|
604
|
+
VAR __ValorBase = SUM ( Leads[Costo Base] )
|
|
605
|
+
RETURN
|
|
606
|
+
IF (
|
|
607
|
+
__MonedaDestino = __MonedaBase,
|
|
608
|
+
__ValorBase,
|
|
609
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
610
|
+
)
|
|
611
|
+
displayFolder: Marketing
|
|
612
|
+
lineageTag: 7d4bbb57-2543-4fd8-9ec0-b69f3478d4b0
|
|
613
|
+
|
|
614
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Inversión marketing" )
|
|
615
|
+
|
|
616
|
+
/// Cantidad de leads generados por campañas.
|
|
617
|
+
measure Leads = SUM ( Leads[Leads] )
|
|
618
|
+
displayFolder: Marketing
|
|
619
|
+
lineageTag: 16f1739d-875d-4c20-9662-cc92eac399cd
|
|
620
|
+
|
|
621
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Leads" )
|
|
622
|
+
|
|
623
|
+
/// Leads calificados por marketing.
|
|
624
|
+
measure MQLs = SUM ( Leads[MQLs] )
|
|
625
|
+
displayFolder: Marketing
|
|
626
|
+
lineageTag: 99f05c1e-f7ad-4dc3-affe-067eaa6b983d
|
|
627
|
+
|
|
628
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "MQLs" )
|
|
629
|
+
|
|
630
|
+
/// Inversión marketing dividida por leads generados.
|
|
631
|
+
measure 'Costo por lead' = DIVIDE ( [Inversión marketing], [Leads], 0 )
|
|
632
|
+
displayFolder: Marketing
|
|
633
|
+
lineageTag: 175b86e1-180c-487c-9b29-2a3fa2246efc
|
|
634
|
+
|
|
635
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Costo por lead" )
|
|
636
|
+
|
|
637
|
+
/// Clientes ganados divididos por leads generados.
|
|
638
|
+
measure 'Tasa lead a cliente' = DIVIDE ( SUM ( Leads[Clientes ganados] ), [Leads], 0 )
|
|
639
|
+
displayFolder: Marketing
|
|
640
|
+
lineageTag: 843b33cf-5e3e-42fb-a93b-7666fcc780b8
|
|
641
|
+
|
|
642
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Tasa lead a cliente" )
|
|
643
|
+
|
|
644
|
+
/// Ventas atribuidas divididas por inversión marketing.
|
|
645
|
+
measure ROAS = DIVIDE ( [Ventas atribuidas], [Inversión marketing], 0 )
|
|
646
|
+
displayFolder: Marketing
|
|
647
|
+
lineageTag: cfdc76aa-d88d-4ce8-a7ea-a30b7759a8d9
|
|
648
|
+
|
|
649
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "ROAS" )
|
|
650
|
+
|
|
651
|
+
/// Ventas atribuidas a campañas en la moneda seleccionada.
|
|
652
|
+
measure 'Ventas atribuidas' =
|
|
653
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
654
|
+
VAR __MonedaBase = [Moneda base]
|
|
655
|
+
VAR __ValorBase = SUM ( Leads[Ventas Atribuidas Base] )
|
|
656
|
+
RETURN
|
|
657
|
+
IF (
|
|
658
|
+
__MonedaDestino = __MonedaBase,
|
|
659
|
+
__ValorBase,
|
|
660
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
661
|
+
)
|
|
662
|
+
displayFolder: Marketing
|
|
663
|
+
lineageTag: 79397856-26e9-478d-ae61-a0e82ae12efb
|
|
664
|
+
|
|
665
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ventas atribuidas" )
|
|
666
|
+
|
|
667
|
+
/// Clientes con ventas visibles en el período.
|
|
668
|
+
measure 'Clientes activos' = DISTINCTCOUNT ( Ventas[ClienteId] )
|
|
669
|
+
displayFolder: Clientes
|
|
670
|
+
lineageTag: 09ee285c-f9d8-49a1-a355-06c642899837
|
|
671
|
+
|
|
672
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Clientes activos" )
|
|
673
|
+
|
|
674
|
+
/// Clientes cuya primera venta histórica cae dentro del contexto de fechas visible.
|
|
675
|
+
measure 'Clientes nuevos' =
|
|
676
|
+
VAR __FechasVisibles = VALUES ( 'Calendario'[Fecha] )
|
|
677
|
+
VAR __ClientesNuevos =
|
|
678
|
+
FILTER (
|
|
679
|
+
VALUES ( Clientes[ClienteId] ),
|
|
680
|
+
VAR __PrimeraVentaCliente =
|
|
681
|
+
CALCULATE ( MIN ( Ventas[Fecha] ), REMOVEFILTERS ( 'Calendario' ) )
|
|
682
|
+
RETURN
|
|
683
|
+
CONTAINSROW ( __FechasVisibles, __PrimeraVentaCliente )
|
|
684
|
+
)
|
|
685
|
+
RETURN
|
|
686
|
+
COUNTROWS ( __ClientesNuevos )
|
|
687
|
+
displayFolder: Clientes
|
|
688
|
+
lineageTag: 93c607a3-add3-43b0-b819-b7c0ea12678f
|
|
689
|
+
|
|
690
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Clientes nuevos" )
|
|
691
|
+
|
|
692
|
+
/// Clientes perdidos divididos por clientes al inicio del período.
|
|
693
|
+
measure 'Churn %' =
|
|
694
|
+
DIVIDE (
|
|
695
|
+
SUM ( 'Interacciones clientes'[Clientes Perdidos] ),
|
|
696
|
+
SUM ( 'Interacciones clientes'[Clientes Inicio] ),
|
|
697
|
+
0
|
|
698
|
+
)
|
|
699
|
+
displayFolder: Clientes
|
|
700
|
+
lineageTag: 56b9c169-4baa-4f6c-9557-b40cd846d21a
|
|
701
|
+
|
|
702
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Churn %" )
|
|
703
|
+
|
|
704
|
+
/// Porcentaje de clientes retenidos después del churn observado.
|
|
705
|
+
measure 'Retención %' = 1 - [Churn %]
|
|
706
|
+
displayFolder: Clientes
|
|
707
|
+
lineageTag: aebaf1c7-5698-4f1b-b746-cc5df21cfad5
|
|
708
|
+
|
|
709
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Retención %" )
|
|
710
|
+
|
|
711
|
+
/// Promedio del indicador de recomendación de clientes.
|
|
712
|
+
measure NPS = AVERAGE ( 'Interacciones clientes'[NPS] )
|
|
713
|
+
displayFolder: Clientes
|
|
714
|
+
lineageTag: e2d9c0f1-44f6-416a-a966-36d2e7f6930f
|
|
715
|
+
|
|
716
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "NPS" )
|
|
717
|
+
|
|
718
|
+
/// Cantidad de reclamos de clientes.
|
|
719
|
+
measure Reclamos = SUM ( 'Interacciones clientes'[Reclamos] )
|
|
720
|
+
displayFolder: Clientes
|
|
721
|
+
lineageTag: 3f2a27c7-2c8f-4b6a-b793-74e55e481cfa
|
|
722
|
+
|
|
723
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Reclamos" )
|
|
724
|
+
|
|
725
|
+
/// Horas promedio de respuesta al cliente.
|
|
726
|
+
measure 'Tiempo medio de respuesta' = AVERAGE ( 'Interacciones clientes'[Tiempo Respuesta Horas] )
|
|
727
|
+
displayFolder: Clientes
|
|
728
|
+
lineageTag: 99f1ce01-3040-4363-a1c9-1a15bf0ed3bf
|
|
729
|
+
|
|
730
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Tiempo medio de respuesta" )
|
|
731
|
+
|
|
732
|
+
/// Órdenes de servicio completadas.
|
|
733
|
+
measure 'Órdenes completadas' = SUM ( 'Órdenes servicio'[Órdenes Completadas] )
|
|
734
|
+
displayFolder: Operaciones
|
|
735
|
+
lineageTag: 7cea5bde-e739-4dc3-bfed-0749e0b9da56
|
|
736
|
+
|
|
737
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Órdenes completadas" )
|
|
738
|
+
|
|
739
|
+
/// Entregas a tiempo divididas por entregas totales.
|
|
740
|
+
measure 'Entregas a tiempo %' =
|
|
741
|
+
DIVIDE (
|
|
742
|
+
SUMX ( Entregas, MIN ( Entregas[Entregas A Tiempo], Entregas[Entregas] ) ),
|
|
743
|
+
SUM ( Entregas[Entregas] ),
|
|
744
|
+
0
|
|
745
|
+
)
|
|
746
|
+
displayFolder: Operaciones
|
|
747
|
+
lineageTag: 0959f136-a4ee-4a80-b1ca-2584b76623b8
|
|
748
|
+
|
|
749
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Entregas a tiempo %" )
|
|
750
|
+
|
|
751
|
+
/// Órdenes pendientes de resolver.
|
|
752
|
+
measure 'Backlog operativo' = SUM ( 'Órdenes servicio'[Backlog] )
|
|
753
|
+
displayFolder: Operaciones
|
|
754
|
+
lineageTag: eec008ce-0c27-404a-9384-792c6cac2aad
|
|
755
|
+
|
|
756
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Backlog operativo" )
|
|
757
|
+
|
|
758
|
+
/// Días promedio de ciclo operativo.
|
|
759
|
+
measure 'Tiempo de ciclo' = AVERAGE ( 'Órdenes servicio'[Tiempo Ciclo Días] )
|
|
760
|
+
displayFolder: Operaciones
|
|
761
|
+
lineageTag: 18c33e5d-d23c-4b0a-9aa4-3f7f351d5297
|
|
762
|
+
|
|
763
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Tiempo de ciclo" )
|
|
764
|
+
|
|
765
|
+
/// Órdenes con SLA cumplido sobre órdenes totales.
|
|
766
|
+
measure 'SLA cumplido %' =
|
|
767
|
+
DIVIDE (
|
|
768
|
+
SUMX ( 'Órdenes servicio', MIN ( 'Órdenes servicio'[SLA Cumplido], 'Órdenes servicio'[Órdenes] ) ),
|
|
769
|
+
SUM ( 'Órdenes servicio'[Órdenes] ),
|
|
770
|
+
0
|
|
771
|
+
)
|
|
772
|
+
displayFolder: Operaciones
|
|
773
|
+
lineageTag: d0e1ae0e-c327-4c54-bf67-69e8a1fb695c
|
|
774
|
+
|
|
775
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "SLA cumplido %" )
|
|
776
|
+
|
|
777
|
+
/// Cantidad de retrabajos operativos.
|
|
778
|
+
measure Retrabajos = SUM ( 'Órdenes servicio'[Retrabajos] )
|
|
779
|
+
displayFolder: Operaciones
|
|
780
|
+
lineageTag: 13161d19-b66b-4169-a37a-effa8454fd68
|
|
781
|
+
|
|
782
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Retrabajos" )
|
|
783
|
+
|
|
784
|
+
/// Horas usadas divididas por horas disponibles.
|
|
785
|
+
measure 'Capacidad utilizada %' =
|
|
786
|
+
MIN (
|
|
787
|
+
1,
|
|
788
|
+
DIVIDE (
|
|
789
|
+
SUM ( 'Órdenes servicio'[Horas Usadas] ),
|
|
790
|
+
SUM ( 'Órdenes servicio'[Horas Disponibles] ),
|
|
791
|
+
0
|
|
792
|
+
)
|
|
793
|
+
)
|
|
794
|
+
displayFolder: Operaciones
|
|
795
|
+
lineageTag: fd28400f-39b6-47b5-b9b8-2c7026a9960a
|
|
796
|
+
|
|
797
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Capacidad utilizada %" )
|
|
798
|
+
|
|
799
|
+
/// Ingresos financieros en la moneda seleccionada.
|
|
800
|
+
measure Ingresos =
|
|
801
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
802
|
+
VAR __MonedaBase = [Moneda base]
|
|
803
|
+
VAR __ValorBase =
|
|
804
|
+
CALCULATE (
|
|
805
|
+
SUM ( 'Movimientos financieros'[Importe Base] ),
|
|
806
|
+
'Movimientos financieros'[Tipo movimiento] = "Ingreso"
|
|
807
|
+
)
|
|
808
|
+
RETURN
|
|
809
|
+
IF (
|
|
810
|
+
__MonedaDestino = __MonedaBase,
|
|
811
|
+
__ValorBase,
|
|
812
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
813
|
+
)
|
|
814
|
+
displayFolder: Finanzas
|
|
815
|
+
lineageTag: ab69a934-4041-4d0f-93c3-d5486ced0f33
|
|
816
|
+
|
|
817
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ingresos" )
|
|
818
|
+
|
|
819
|
+
/// Gastos operativos en la moneda seleccionada.
|
|
820
|
+
measure 'Gastos operativos' =
|
|
821
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
822
|
+
VAR __MonedaBase = [Moneda base]
|
|
823
|
+
VAR __ValorBase =
|
|
824
|
+
CALCULATE (
|
|
825
|
+
SUM ( 'Movimientos financieros'[Importe Base] ),
|
|
826
|
+
'Movimientos financieros'[Tipo movimiento] = "Gasto operativo"
|
|
827
|
+
)
|
|
828
|
+
RETURN
|
|
829
|
+
IF (
|
|
830
|
+
__MonedaDestino = __MonedaBase,
|
|
831
|
+
__ValorBase,
|
|
832
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
833
|
+
)
|
|
834
|
+
displayFolder: Finanzas
|
|
835
|
+
lineageTag: 6de8a220-603a-4369-91c8-d80d884686a7
|
|
836
|
+
|
|
837
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Gastos operativos" )
|
|
838
|
+
|
|
839
|
+
/// Ingresos menos gastos operativos.
|
|
840
|
+
measure EBITDA = [Ingresos] - [Gastos operativos]
|
|
841
|
+
displayFolder: Finanzas
|
|
842
|
+
lineageTag: dcbc4eee-4154-4e54-a3bf-5beb029c731e
|
|
843
|
+
|
|
844
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "EBITDA" )
|
|
845
|
+
|
|
846
|
+
/// EBITDA dividido por ingresos.
|
|
847
|
+
measure 'Margen operativo %' = DIVIDE ( [EBITDA], [Ingresos], 0 )
|
|
848
|
+
displayFolder: Finanzas
|
|
849
|
+
lineageTag: b0584055-7bf8-4c22-9b5d-6ccac5a6ef20
|
|
850
|
+
|
|
851
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Margen operativo %" )
|
|
852
|
+
|
|
853
|
+
/// Cobros registrados en la moneda seleccionada.
|
|
854
|
+
measure 'Cash collected' =
|
|
855
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
856
|
+
VAR __MonedaBase = [Moneda base]
|
|
857
|
+
VAR __ValorBase =
|
|
858
|
+
CALCULATE (
|
|
859
|
+
SUM ( 'Movimientos financieros'[Importe Base] ),
|
|
860
|
+
'Movimientos financieros'[Tipo movimiento] = "Cobro"
|
|
861
|
+
)
|
|
862
|
+
RETURN
|
|
863
|
+
IF (
|
|
864
|
+
__MonedaDestino = __MonedaBase,
|
|
865
|
+
__ValorBase,
|
|
866
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
867
|
+
)
|
|
868
|
+
displayFolder: Finanzas
|
|
869
|
+
lineageTag: e91416d7-1420-4240-9e4f-6615e9515f21
|
|
870
|
+
|
|
871
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Cash collected" )
|
|
872
|
+
|
|
873
|
+
/// Saldo de cuentas por cobrar en la moneda seleccionada.
|
|
874
|
+
measure 'Cuentas por cobrar' =
|
|
875
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
876
|
+
VAR __MonedaBase = [Moneda base]
|
|
877
|
+
VAR __ValorBase =
|
|
878
|
+
CALCULATE (
|
|
879
|
+
SUM ( 'Movimientos financieros'[Importe Base] ),
|
|
880
|
+
'Movimientos financieros'[Tipo movimiento] = "Cuenta por cobrar"
|
|
881
|
+
)
|
|
882
|
+
RETURN
|
|
883
|
+
IF (
|
|
884
|
+
__MonedaDestino = __MonedaBase,
|
|
885
|
+
__ValorBase,
|
|
886
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
887
|
+
)
|
|
888
|
+
displayFolder: Finanzas
|
|
889
|
+
lineageTag: 406ed092-ae8d-4bc8-ac75-89f833cb6a20
|
|
890
|
+
|
|
891
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Cuentas por cobrar" )
|
|
892
|
+
|
|
893
|
+
/// Presupuesto de ingresos en moneda seleccionada usado por la variación contra presupuesto.
|
|
894
|
+
measure 'Presupuesto ingresos' =
|
|
895
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
896
|
+
VAR __MonedaBase = [Moneda base]
|
|
897
|
+
VAR __ValorBase = SUM ( Presupuesto[Importe Presupuesto Base] )
|
|
898
|
+
RETURN
|
|
899
|
+
IF (
|
|
900
|
+
__MonedaDestino = __MonedaBase,
|
|
901
|
+
__ValorBase,
|
|
902
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
903
|
+
)
|
|
904
|
+
isHidden
|
|
905
|
+
displayFolder: Finanzas
|
|
906
|
+
lineageTag: 6a179a4e-ac7d-48b9-a7f5-39d817d8fe0a
|
|
907
|
+
|
|
908
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ingresos" )
|
|
909
|
+
|
|
910
|
+
/// Diferencia porcentual entre ingresos y presupuesto.
|
|
911
|
+
measure 'Variación vs presupuesto %' = DIVIDE ( [Ingresos] - [Presupuesto ingresos], [Presupuesto ingresos], 0 )
|
|
912
|
+
displayFolder: Finanzas
|
|
913
|
+
lineageTag: fbd6529b-13c9-4a95-b9eb-114de185709d
|
|
914
|
+
|
|
915
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Variación vs presupuesto %" )
|
|
916
|
+
|
|
917
|
+
/// Productos con ventas visibles.
|
|
918
|
+
measure 'Productos activos' = DISTINCTCOUNT ( Ventas[ProductoId] )
|
|
919
|
+
displayFolder: Producto
|
|
920
|
+
lineageTag: c492d76b-e605-469e-919a-f5bcd01a9220
|
|
921
|
+
|
|
922
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Productos activos" )
|
|
923
|
+
|
|
924
|
+
/// Participación de ventas del producto dentro del total visible.
|
|
925
|
+
measure 'Mix productos %' =
|
|
926
|
+
DIVIDE (
|
|
927
|
+
[Ventas],
|
|
928
|
+
CALCULATE ( [Ventas], REMOVEFILTERS ( Productos ) ),
|
|
929
|
+
0
|
|
930
|
+
)
|
|
931
|
+
displayFolder: Producto
|
|
932
|
+
lineageTag: 6f1650c6-00d5-4c1a-8a09-5ba7991e0fb6
|
|
933
|
+
|
|
934
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Mix productos %" )
|
|
935
|
+
|
|
936
|
+
/// Unidades devueltas divididas por unidades vendidas.
|
|
937
|
+
measure 'Devoluciones %' = DIVIDE ( SUM ( Devoluciones[Unidades Devueltas] ), [Unidades vendidas], 0 )
|
|
938
|
+
displayFolder: Producto
|
|
939
|
+
lineageTag: d7a0947a-15fb-4269-ba87-f3548f283602
|
|
940
|
+
|
|
941
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Devoluciones %" )
|
|
942
|
+
|
|
943
|
+
/// Margen bruto evaluado por producto.
|
|
944
|
+
measure 'Margen por producto' = [Margen bruto]
|
|
945
|
+
displayFolder: Producto
|
|
946
|
+
lineageTag: 6a73cf78-b0e8-4c14-b4d8-2a392ad5a098
|
|
947
|
+
|
|
948
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Margen por producto" )
|
|
949
|
+
|
|
950
|
+
/// Servicios adjuntos divididos por pedidos.
|
|
951
|
+
measure 'Servicios adjuntos %' = DIVIDE ( SUM ( 'Órdenes servicio'[Servicios Adjuntos] ), [Pedidos], 0 )
|
|
952
|
+
displayFolder: Producto
|
|
953
|
+
lineageTag: e9e8820a-63fa-49db-a74d-32ab185171b6
|
|
954
|
+
|
|
955
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Servicios adjuntos %" )
|
|
956
|
+
|
|
957
|
+
/// Productos sin ventas en el contexto visible.
|
|
958
|
+
measure 'Productos sin venta' =
|
|
959
|
+
COALESCE (
|
|
960
|
+
COUNTROWS (
|
|
961
|
+
EXCEPT (
|
|
962
|
+
VALUES ( Productos[ProductoId] ),
|
|
963
|
+
CALCULATETABLE ( VALUES ( Ventas[ProductoId] ) )
|
|
964
|
+
)
|
|
965
|
+
),
|
|
966
|
+
0
|
|
967
|
+
)
|
|
968
|
+
displayFolder: Producto
|
|
969
|
+
lineageTag: 676fd5d5-2ede-400b-86de-6fe7e83e2bc1
|
|
970
|
+
|
|
971
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Productos sin venta" )
|
|
972
|
+
|
|
973
|
+
/// Cantidad de personas del equipo.
|
|
974
|
+
measure Headcount = MAX ( 'Nómina'[Headcount] )
|
|
975
|
+
displayFolder: Personas
|
|
976
|
+
lineageTag: 1dcd0198-4c0e-44d1-bf5a-9059a33f7696
|
|
977
|
+
|
|
978
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Headcount" )
|
|
979
|
+
|
|
980
|
+
/// Costo laboral en la moneda seleccionada.
|
|
981
|
+
measure 'Costo laboral' =
|
|
982
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
983
|
+
VAR __MonedaBase = [Moneda base]
|
|
984
|
+
VAR __ValorBase = SUM ( 'Nómina'[Costo Laboral Base] )
|
|
985
|
+
RETURN
|
|
986
|
+
IF (
|
|
987
|
+
__MonedaDestino = __MonedaBase,
|
|
988
|
+
__ValorBase,
|
|
989
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
990
|
+
)
|
|
991
|
+
displayFolder: Personas
|
|
992
|
+
lineageTag: e86c6100-dcc9-4448-9e4b-4af3e3e0169b
|
|
993
|
+
|
|
994
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Costo laboral" )
|
|
995
|
+
|
|
996
|
+
/// Bajas divididas por headcount promedio.
|
|
997
|
+
measure 'Rotación %' = DIVIDE ( SUM ( 'Nómina'[Bajas] ), AVERAGE ( 'Nómina'[Headcount] ), 0 )
|
|
998
|
+
displayFolder: Personas
|
|
999
|
+
lineageTag: 05e648ba-d39c-470c-935e-6d8d37dde966
|
|
1000
|
+
|
|
1001
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Rotación %" )
|
|
1002
|
+
|
|
1003
|
+
/// Horas ausentes divididas por horas planificadas.
|
|
1004
|
+
measure 'Ausentismo %' = DIVIDE ( SUM ( Horas[Horas Ausentes] ), SUM ( Horas[Horas Planificadas] ), 0 )
|
|
1005
|
+
displayFolder: Personas
|
|
1006
|
+
lineageTag: 0a0b7203-941f-4676-ad9f-51add61092a5
|
|
1007
|
+
|
|
1008
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Ausentismo %" )
|
|
1009
|
+
|
|
1010
|
+
/// Horas trabajadas por los equipos.
|
|
1011
|
+
measure 'Horas trabajadas' = SUM ( Horas[Horas Trabajadas] )
|
|
1012
|
+
displayFolder: Personas
|
|
1013
|
+
lineageTag: 4b31bc13-8c38-4bb3-b33e-957580463c83
|
|
1014
|
+
|
|
1015
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Horas trabajadas" )
|
|
1016
|
+
|
|
1017
|
+
/// Horas facturables divididas por horas trabajadas.
|
|
1018
|
+
measure 'Horas facturables %' = DIVIDE ( SUM ( Horas[Horas Facturables] ), SUM ( Horas[Horas Trabajadas] ), 0 )
|
|
1019
|
+
displayFolder: Personas
|
|
1020
|
+
lineageTag: e8714fe4-b757-4e38-a2d7-45fe79ef3ae7
|
|
1021
|
+
|
|
1022
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Horas facturables %" )
|
|
1023
|
+
|
|
1024
|
+
/// Horas facturables divididas por horas disponibles.
|
|
1025
|
+
measure 'Utilización %' = DIVIDE ( SUM ( Horas[Horas Facturables] ), SUM ( Horas[Horas Disponibles] ), 0 )
|
|
1026
|
+
displayFolder: Personas
|
|
1027
|
+
lineageTag: 7df3aa97-5596-4229-a06f-4ae0ead87640
|
|
1028
|
+
|
|
1029
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Utilización %" )
|
|
1030
|
+
|
|
1031
|
+
/// Proyectos con ejecución activa.
|
|
1032
|
+
measure 'Proyectos activos' =
|
|
1033
|
+
CALCULATE (
|
|
1034
|
+
DISTINCTCOUNT ( 'Ejecución proyectos'[ProyectoId] ),
|
|
1035
|
+
'Ejecución proyectos'[Estado ejecución] = "Activo"
|
|
1036
|
+
)
|
|
1037
|
+
displayFolder: Proyectos
|
|
1038
|
+
lineageTag: 7573d287-d6a4-4e0b-8509-e74600c5d72f
|
|
1039
|
+
|
|
1040
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Proyectos activos" )
|
|
1041
|
+
|
|
1042
|
+
/// Proyectos marcados como en riesgo.
|
|
1043
|
+
measure 'Proyectos en riesgo' =
|
|
1044
|
+
CALCULATE (
|
|
1045
|
+
DISTINCTCOUNT ( 'Ejecución proyectos'[ProyectoId] ),
|
|
1046
|
+
'Ejecución proyectos'[Estado ejecución] = "En riesgo"
|
|
1047
|
+
)
|
|
1048
|
+
displayFolder: Proyectos
|
|
1049
|
+
lineageTag: ad31906c-8f38-48e9-ade8-b4175169d185
|
|
1050
|
+
|
|
1051
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Proyectos en riesgo" )
|
|
1052
|
+
|
|
1053
|
+
/// Avance promedio de proyectos.
|
|
1054
|
+
measure 'Avance promedio %' = AVERAGE ( 'Ejecución proyectos'[Avance] )
|
|
1055
|
+
displayFolder: Proyectos
|
|
1056
|
+
lineageTag: f51a6d77-cea5-4cae-b472-0318b9863202
|
|
1057
|
+
|
|
1058
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Avance promedio %" )
|
|
1059
|
+
|
|
1060
|
+
/// Ingresos de proyecto menos costos de proyecto en moneda seleccionada.
|
|
1061
|
+
measure 'Rentabilidad de proyectos' =
|
|
1062
|
+
VAR __MonedaDestino = [Moneda seleccionada]
|
|
1063
|
+
VAR __MonedaBase = [Moneda base]
|
|
1064
|
+
VAR __ValorBase = SUM ( 'Ejecución proyectos'[Ingresos Base] ) - SUM ( 'Ejecución proyectos'[Costos Base] )
|
|
1065
|
+
RETURN
|
|
1066
|
+
IF (
|
|
1067
|
+
__MonedaDestino = __MonedaBase,
|
|
1068
|
+
__ValorBase,
|
|
1069
|
+
__ValorBase * GetExchangeRate ( __MonedaDestino, MAX ( 'Calendario'[Fecha] ) )
|
|
1070
|
+
)
|
|
1071
|
+
displayFolder: Proyectos
|
|
1072
|
+
lineageTag: 5bd5518f-e899-4b46-a227-6105a4f7fd64
|
|
1073
|
+
|
|
1074
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Rentabilidad de proyectos" )
|
|
1075
|
+
|
|
1076
|
+
/// Horas registradas en tareas de proyecto.
|
|
1077
|
+
measure 'Horas de proyecto' = SUM ( 'Tareas proyecto'[Horas] )
|
|
1078
|
+
displayFolder: Proyectos
|
|
1079
|
+
lineageTag: a23f296d-2a18-4f61-94a3-d4d5e0d6ba7c
|
|
1080
|
+
|
|
1081
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Horas de proyecto" )
|
|
1082
|
+
|
|
1083
|
+
/// Costos de proyecto contra presupuesto aprobado.
|
|
1084
|
+
measure 'Desvío presupuesto %' =
|
|
1085
|
+
DIVIDE (
|
|
1086
|
+
SUM ( 'Ejecución proyectos'[Costos Base] ) - SUM ( 'Ejecución proyectos'[Presupuesto Base] ),
|
|
1087
|
+
SUM ( 'Ejecución proyectos'[Presupuesto Base] ),
|
|
1088
|
+
0
|
|
1089
|
+
)
|
|
1090
|
+
displayFolder: Proyectos
|
|
1091
|
+
lineageTag: 35fed7ee-918f-41fe-be63-0b1a2066bd8a
|
|
1092
|
+
|
|
1093
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Desvío presupuesto %" )
|
|
1094
|
+
|
|
1095
|
+
/// Tareas vencidas de proyectos.
|
|
1096
|
+
measure 'Tareas vencidas' = SUM ( 'Tareas proyecto'[Tareas Vencidas] )
|
|
1097
|
+
displayFolder: Proyectos
|
|
1098
|
+
lineageTag: 6c7f6af9-5574-4279-b062-5befca393d09
|
|
1099
|
+
|
|
1100
|
+
formatStringDefinition = FormatoMetricaPorNombre ( "Tareas vencidas" )
|
|
1101
|
+
|
|
1102
|
+
column Métrica
|
|
1103
|
+
isHidden
|
|
1104
|
+
lineageTag: 748cb7e2-0803-4f55-a9e0-eb44ea479875
|
|
1105
|
+
summarizeBy: none
|
|
1106
|
+
isNameInferred
|
|
1107
|
+
sourceColumn: [Métrica]
|
|
1108
|
+
sortByColumn: Índice
|
|
1109
|
+
|
|
1110
|
+
column Índice
|
|
1111
|
+
isHidden
|
|
1112
|
+
formatString: 0
|
|
1113
|
+
lineageTag: cda91f1e-e9df-4a43-a7e0-93b753a3aa2f
|
|
1114
|
+
summarizeBy: none
|
|
1115
|
+
isNameInferred
|
|
1116
|
+
sourceColumn: [Índice]
|
|
1117
|
+
|
|
1118
|
+
column Formato
|
|
1119
|
+
isHidden
|
|
1120
|
+
lineageTag: 42b9b96a-0e2a-4101-8948-c109fb8060e2
|
|
1121
|
+
summarizeBy: none
|
|
1122
|
+
isNameInferred
|
|
1123
|
+
sourceColumn: [Formato]
|
|
1124
|
+
|
|
1125
|
+
column Tendencia
|
|
1126
|
+
isHidden
|
|
1127
|
+
lineageTag: 2c23d1b2-5d16-4816-9950-7b808c986195
|
|
1128
|
+
summarizeBy: none
|
|
1129
|
+
isNameInferred
|
|
1130
|
+
sourceColumn: [Tendencia]
|
|
1131
|
+
|
|
1132
|
+
column Acumulado
|
|
1133
|
+
isHidden
|
|
1134
|
+
lineageTag: 02dbb720-4ccb-4bf5-8dcb-d968fb47cef0
|
|
1135
|
+
summarizeBy: none
|
|
1136
|
+
isNameInferred
|
|
1137
|
+
sourceColumn: [Acumulado]
|
|
1138
|
+
|
|
1139
|
+
column Descripción
|
|
1140
|
+
isHidden
|
|
1141
|
+
lineageTag: 44a61e89-9050-4664-b8f0-cb86c9afb703
|
|
1142
|
+
summarizeBy: none
|
|
1143
|
+
isNameInferred
|
|
1144
|
+
sourceColumn: [Descripción]
|
|
1145
|
+
|
|
1146
|
+
column Monetaria
|
|
1147
|
+
isHidden
|
|
1148
|
+
lineageTag: 01fbb1bb-8876-49bb-aaa1-6a956dac8ff0
|
|
1149
|
+
isNameInferred
|
|
1150
|
+
sourceColumn: [Monetaria]
|
|
1151
|
+
|
|
1152
|
+
/// Tipo lógico usado por FormatoMetricaPorNombre: Moneda, Porcentaje o Número.
|
|
1153
|
+
column 'Tipo de formato'
|
|
1154
|
+
isHidden
|
|
1155
|
+
lineageTag: 46ade108-cada-4d5f-a3b3-f382978f6025
|
|
1156
|
+
summarizeBy: none
|
|
1157
|
+
isNameInferred
|
|
1158
|
+
sourceColumn: [Tipo de formato]
|
|
1159
|
+
|
|
1160
|
+
/// Cantidad de decimales que debe mostrar la métrica seleccionada en el formato numérico global.
|
|
1161
|
+
column Decimales
|
|
1162
|
+
isHidden
|
|
1163
|
+
formatString: 0
|
|
1164
|
+
lineageTag: 160bf6a8-da93-4dab-a747-30c03eaa281b
|
|
1165
|
+
summarizeBy: none
|
|
1166
|
+
isNameInferred
|
|
1167
|
+
sourceColumn: [Decimales]
|
|
1168
|
+
|
|
1169
|
+
/// Reservado para futuros helpers de etiquetas compactas. No se aplica al formato numérico global para evitar doble escala en cards, ejes y matrices.
|
|
1170
|
+
column Escala
|
|
1171
|
+
isHidden
|
|
1172
|
+
lineageTag: 4553e8fb-f306-4aef-a1c5-06356bafcfe4
|
|
1173
|
+
summarizeBy: none
|
|
1174
|
+
isNameInferred
|
|
1175
|
+
sourceColumn: [Escala]
|
|
1176
|
+
|
|
1177
|
+
/// Reservado para futuros helpers de etiquetas compactas. No se aplica al formato numérico global para evitar doble sufijo en visuals.
|
|
1178
|
+
column Sufijo
|
|
1179
|
+
isHidden
|
|
1180
|
+
lineageTag: 01ac1b35-a6e7-472b-a223-1a86fcce7144
|
|
1181
|
+
summarizeBy: none
|
|
1182
|
+
isNameInferred
|
|
1183
|
+
sourceColumn: [Sufijo]
|
|
1184
|
+
|
|
1185
|
+
/// Cantidad de decimales para etiquetas compactas. No afecta el formato numérico global.
|
|
1186
|
+
column 'Decimales etiqueta'
|
|
1187
|
+
isHidden
|
|
1188
|
+
lineageTag: 1e8a3288-7c8d-4c6f-a07f-850b7f139b39
|
|
1189
|
+
summarizeBy: none
|
|
1190
|
+
isNameInferred
|
|
1191
|
+
sourceColumn: [Decimales etiqueta]
|
|
1192
|
+
|
|
1193
|
+
/// Escala usada solo por helpers textuales compactos: Ninguna, Miles o Millones.
|
|
1194
|
+
column 'Escala etiqueta'
|
|
1195
|
+
isHidden
|
|
1196
|
+
lineageTag: d55ccc16-e3d1-41c0-ae25-2fd8c157855c
|
|
1197
|
+
summarizeBy: none
|
|
1198
|
+
isNameInferred
|
|
1199
|
+
sourceColumn: [Escala etiqueta]
|
|
1200
|
+
|
|
1201
|
+
/// Sufijo usado solo por helpers textuales compactos, por ejemplo M o mil.
|
|
1202
|
+
column 'Sufijo etiqueta'
|
|
1203
|
+
isHidden
|
|
1204
|
+
lineageTag: 0af98f89-bc17-4eb6-b738-3b990d65320c
|
|
1205
|
+
summarizeBy: none
|
|
1206
|
+
isNameInferred
|
|
1207
|
+
sourceColumn: [Sufijo etiqueta]
|
|
1208
|
+
|
|
1209
|
+
column Equipo
|
|
1210
|
+
isHidden
|
|
1211
|
+
lineageTag: c377bcd8-b4a6-4a60-ab93-eba1598e9d3c
|
|
1212
|
+
isNameInferred
|
|
1213
|
+
sourceColumn: [Equipo]
|
|
1214
|
+
|
|
1215
|
+
partition Métricas = calculated
|
|
1216
|
+
mode: import
|
|
1217
|
+
source =
|
|
1218
|
+
// Catalogo demo de Andina Nexus: 8 equipos de empresa, 7 metricas primarias por equipo.
|
|
1219
|
+
DATATABLE (
|
|
1220
|
+
"Métrica", STRING,
|
|
1221
|
+
"Descripción", STRING,
|
|
1222
|
+
"Equipo", STRING,
|
|
1223
|
+
"Índice", INTEGER,
|
|
1224
|
+
"Formato", STRING,
|
|
1225
|
+
"Tipo de formato", STRING,
|
|
1226
|
+
"Decimales", INTEGER,
|
|
1227
|
+
"Escala", STRING,
|
|
1228
|
+
"Sufijo", STRING,
|
|
1229
|
+
"Decimales etiqueta", INTEGER,
|
|
1230
|
+
"Escala etiqueta", STRING,
|
|
1231
|
+
"Sufijo etiqueta", STRING,
|
|
1232
|
+
"Tendencia", STRING,
|
|
1233
|
+
"Monetaria", BOOLEAN,
|
|
1234
|
+
"Acumulado", BOOLEAN,
|
|
1235
|
+
{
|
|
1236
|
+
{ "Ventas", "Ventas convertidas a la moneda seleccionada.", "Ventas", 1, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1237
|
+
{ "Margen bruto", "Ventas menos costo de ventas en la moneda seleccionada.", "Ventas", 2, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1238
|
+
{ "Margen %", "Margen bruto dividido por ventas.", "Ventas", 3, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1239
|
+
{ "Pedidos", "Cantidad de pedidos o lineas comerciales visibles.", "Ventas", 4, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, TRUE },
|
|
1240
|
+
{ "Ticket promedio", "Ventas divididas por pedidos en la moneda seleccionada.", "Ventas", 5, "#,0", "Moneda", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", TRUE, FALSE },
|
|
1241
|
+
{ "Pipeline abierto", "Importe potencial de oportunidades comerciales abiertas.", "Ventas", 6, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1242
|
+
{ "Tasa de conversión", "Oportunidades ganadas divididas por oportunidades totales.", "Ventas", 7, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1243
|
+
{ "Inversión marketing", "Gasto de campañas de marketing en moneda seleccionada.", "Marketing", 8, "#,0", "Moneda", 0, "Ninguna", "", 1, "Miles", "mil", "Baja es positivo", TRUE, TRUE },
|
|
1244
|
+
{ "Leads", "Cantidad de leads generados por campañas.", "Marketing", 9, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, TRUE },
|
|
1245
|
+
{ "MQLs", "Leads calificados por marketing.", "Marketing", 10, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, TRUE },
|
|
1246
|
+
{ "Costo por lead", "Inversión marketing dividida por leads generados.", "Marketing", 11, "#,0", "Moneda", 0, "Ninguna", "", 0, "Ninguna", "", "Baja es positivo", TRUE, FALSE },
|
|
1247
|
+
{ "Tasa lead a cliente", "Clientes ganados divididos por leads generados.", "Marketing", 12, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1248
|
+
{ "ROAS", "Ventas atribuidas divididas por inversión marketing.", "Marketing", 13, "0.0", "Número", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1249
|
+
{ "Ventas atribuidas", "Ventas atribuidas a campañas en moneda seleccionada.", "Marketing", 14, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1250
|
+
{ "Clientes activos", "Clientes con ventas visibles en el periodo.", "Clientes", 15, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1251
|
+
{ "Clientes nuevos", "Clientes cuya primera venta cae en el periodo visible.", "Clientes", 16, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1252
|
+
{ "Retención %", "Porcentaje de clientes retenidos despues del churn observado.", "Clientes", 17, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1253
|
+
{ "Churn %", "Clientes perdidos divididos por clientes al inicio del periodo.", "Clientes", 18, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Baja es positivo", FALSE, FALSE },
|
|
1254
|
+
{ "NPS", "Promedio del indicador de recomendación de clientes.", "Clientes", 19, "#,0.0", "Número", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1255
|
+
{ "Reclamos", "Cantidad de reclamos de clientes.", "Clientes", 20, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Baja es positivo", FALSE, TRUE },
|
|
1256
|
+
{ "Tiempo medio de respuesta", "Horas promedio de respuesta al cliente.", "Clientes", 21, "#,0.0", "Número", 1, "Ninguna", "", 1, "Ninguna", "h", "Baja es positivo", FALSE, FALSE },
|
|
1257
|
+
{ "Órdenes completadas", "Órdenes de servicio completadas.", "Operaciones", 22, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, TRUE },
|
|
1258
|
+
{ "Entregas a tiempo %", "Entregas a tiempo divididas por entregas totales.", "Operaciones", 23, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1259
|
+
{ "Backlog operativo", "Órdenes pendientes de resolver.", "Operaciones", 24, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Baja es positivo", FALSE, TRUE },
|
|
1260
|
+
{ "Tiempo de ciclo", "Días promedio de ciclo operativo.", "Operaciones", 25, "#,0.0", "Número", 1, "Ninguna", "", 1, "Ninguna", "d", "Baja es positivo", FALSE, FALSE },
|
|
1261
|
+
{ "SLA cumplido %", "Órdenes con SLA cumplido sobre órdenes totales.", "Operaciones", 26, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1262
|
+
{ "Retrabajos", "Cantidad de retrabajos operativos.", "Operaciones", 27, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Baja es positivo", FALSE, TRUE },
|
|
1263
|
+
{ "Capacidad utilizada %", "Horas usadas divididas por horas disponibles.", "Operaciones", 28, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1264
|
+
{ "Ingresos", "Ingresos financieros en moneda seleccionada.", "Finanzas", 29, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1265
|
+
{ "Gastos operativos", "Gastos operativos en moneda seleccionada.", "Finanzas", 30, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Baja es positivo", TRUE, TRUE },
|
|
1266
|
+
{ "EBITDA", "Ingresos menos costo de ventas y gastos operativos.", "Finanzas", 31, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1267
|
+
{ "Margen operativo %", "EBITDA dividido por ingresos.", "Finanzas", 32, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1268
|
+
{ "Cash collected", "Cobros registrados en moneda seleccionada.", "Finanzas", 33, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1269
|
+
{ "Cuentas por cobrar", "Saldo de cuentas por cobrar en moneda seleccionada.", "Finanzas", 34, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Baja es positivo", TRUE, TRUE },
|
|
1270
|
+
{ "Variación vs presupuesto %", "Diferencia porcentual entre ingresos y presupuesto.", "Finanzas", 35, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1271
|
+
{ "Productos activos", "Productos con ventas visibles.", "Producto", 36, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1272
|
+
{ "Unidades vendidas", "Cantidad de unidades vendidas.", "Producto", 37, "#,0", "Número", 0, "Ninguna", "", 1, "Miles", "mil", "Sube es positivo", FALSE, TRUE },
|
|
1273
|
+
{ "Mix productos %", "Participación de ventas del producto dentro del total visible.", "Producto", 38, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1274
|
+
{ "Devoluciones %", "Unidades devueltas divididas por unidades vendidas.", "Producto", 39, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Baja es positivo", FALSE, FALSE },
|
|
1275
|
+
{ "Margen por producto", "Margen bruto evaluado por producto.", "Producto", 40, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1276
|
+
{ "Servicios adjuntos %", "Servicios adjuntos divididos por pedidos.", "Producto", 41, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1277
|
+
{ "Productos sin venta", "Productos sin ventas en el contexto visible.", "Producto", 42, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Baja es positivo", FALSE, FALSE },
|
|
1278
|
+
{ "Headcount", "Cantidad de personas del equipo.", "Personas", 43, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1279
|
+
{ "Costo laboral", "Costo laboral en moneda seleccionada.", "Personas", 44, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Baja es positivo", TRUE, TRUE },
|
|
1280
|
+
{ "Rotación %", "Bajas divididas por headcount promedio.", "Personas", 45, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Baja es positivo", FALSE, FALSE },
|
|
1281
|
+
{ "Ausentismo %", "Horas ausentes divididas por horas planificadas.", "Personas", 46, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Baja es positivo", FALSE, FALSE },
|
|
1282
|
+
{ "Horas trabajadas", "Horas trabajadas por los equipos.", "Personas", 47, "#,0", "Número", 0, "Ninguna", "", 1, "Miles", "mil", "Sube es positivo", FALSE, TRUE },
|
|
1283
|
+
{ "Horas facturables %", "Horas facturables divididas por horas trabajadas.", "Personas", 48, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1284
|
+
{ "Utilización %", "Horas facturables divididas por horas disponibles.", "Personas", 49, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1285
|
+
{ "Proyectos activos", "Proyectos con ejecución activa.", "Proyectos", 50, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1286
|
+
{ "Proyectos en riesgo", "Proyectos marcados como en riesgo.", "Proyectos", 51, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Baja es positivo", FALSE, FALSE },
|
|
1287
|
+
{ "Avance promedio %", "Avance promedio de proyectos.", "Proyectos", 52, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Sube es positivo", FALSE, FALSE },
|
|
1288
|
+
{ "Rentabilidad de proyectos", "Ingresos de proyecto menos costos de proyecto.", "Proyectos", 53, "#,0", "Moneda", 0, "Ninguna", "", 1, "Millones", "M", "Sube es positivo", TRUE, TRUE },
|
|
1289
|
+
{ "Horas de proyecto", "Horas registradas en tareas de proyecto.", "Proyectos", 54, "#,0", "Número", 0, "Ninguna", "", 1, "Miles", "mil", "Sube es positivo", FALSE, TRUE },
|
|
1290
|
+
{ "Desvío presupuesto %", "Costos de proyecto contra presupuesto aprobado.", "Proyectos", 55, "0.0%", "Porcentaje", 1, "Ninguna", "", 1, "Ninguna", "", "Baja es positivo", FALSE, FALSE },
|
|
1291
|
+
{ "Tareas vencidas", "Tareas vencidas de proyectos.", "Proyectos", 56, "#,0", "Número", 0, "Ninguna", "", 0, "Ninguna", "", "Baja es positivo", FALSE, TRUE }
|
|
1292
|
+
}
|
|
1293
|
+
)
|
|
1294
|
+
|