@luquimbo/bi-superpowers 5.0.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +1 -1
  4. package/.plugin/plugin.json +1 -1
  5. package/AGENTS.md +3 -3
  6. package/CHANGELOG.md +35 -0
  7. package/README.md +6 -5
  8. package/bin/commands/validate-projects.js +1 -1
  9. package/commands/bi-modeling.md +1 -1
  10. package/package.json +4 -2
  11. package/skills/bi-connect/SKILL.md +1 -1
  12. package/skills/bi-connect/scripts/update-check.js +1 -1
  13. package/skills/bi-dax/SKILL.md +1 -1
  14. package/skills/bi-dax/scripts/update-check.js +1 -1
  15. package/skills/bi-kickoff/SKILL.md +1 -1
  16. package/skills/bi-kickoff/scripts/update-check.js +1 -1
  17. package/skills/bi-modeling/SKILL.md +2 -2
  18. package/skills/bi-modeling/scripts/update-check.js +1 -1
  19. package/skills/bi-performance/SKILL.md +1 -1
  20. package/skills/bi-performance/scripts/update-check.js +1 -1
  21. package/skills/bi-start/SKILL.md +1 -1
  22. package/skills/bi-start/scripts/update-check.js +1 -1
  23. package/src/content/skills/bi-modeling.md +1 -1
  24. package/templates/sales/AGENTS.md +33 -0
  25. package/templates/sales/sales-template.Report/.platform +11 -0
  26. package/templates/sales/sales-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
  27. package/templates/sales/sales-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
  28. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/page.json +123 -0
  29. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/10420560e5b8c5235857/visual.json +16 -0
  30. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2181c54a94f0c67abb2d/visual.json +283 -0
  31. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/24eba6a7af0b59974ef5/visual.json +703 -0
  32. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/mobile.json +11 -0
  33. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/visual.json +528 -0
  34. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/mobile.json +11 -0
  35. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/visual.json +324 -0
  36. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/mobile.json +11 -0
  37. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/visual.json +359 -0
  38. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4ca8800cf1539ad423f2/visual.json +468 -0
  39. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/mobile.json +29 -0
  40. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/visual.json +241 -0
  41. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/54d3fdbedbbb863a9d7a/visual.json +575 -0
  42. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/68043403e96ca8ed23e8/visual.json +575 -0
  43. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/80b54a678ef36a250994/visual.json +351 -0
  44. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/mobile.json +11 -0
  45. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/visual.json +421 -0
  46. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/85e1cc13559f4e107ede/visual.json +681 -0
  47. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/mobile.json +11 -0
  48. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/visual.json +720 -0
  49. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8d302c5b7e87e8cb57bb/visual.json +590 -0
  50. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/mobile.json +11 -0
  51. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/visual.json +102 -0
  52. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a405d29e7744c770d445/visual.json +575 -0
  53. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/mobile.json +11 -0
  54. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/visual.json +333 -0
  55. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/mobile.json +11 -0
  56. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/visual.json +468 -0
  57. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/mobile.json +11 -0
  58. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/visual.json +523 -0
  59. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
  60. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +681 -0
  61. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +351 -0
  62. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
  63. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
  64. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
  65. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +102 -0
  66. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
  67. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
  68. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
  69. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
  70. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +685 -0
  71. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/85090dcdf75ac2487d1e/visual.json +283 -0
  72. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
  73. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +590 -0
  74. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
  75. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +528 -0
  76. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/mobile.json +11 -0
  77. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/visual.json +523 -0
  78. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
  79. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +720 -0
  80. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
  81. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1230 -0
  82. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/mobile.json +11 -0
  83. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/visual.json +324 -0
  84. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/mobile.json +11 -0
  85. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/visual.json +421 -0
  86. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
  87. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
  88. package/templates/sales/sales-template.Report/definition/pages/pages.json +8 -0
  89. package/templates/sales/sales-template.Report/definition/report.json +89 -0
  90. package/templates/sales/sales-template.Report/definition/version.json +4 -0
  91. package/templates/sales/sales-template.Report/definition.pbir +9 -0
  92. package/templates/sales/sales-template.SemanticModel/.pbi/editorSettings.json +8 -0
  93. package/templates/sales/sales-template.SemanticModel/.platform +11 -0
  94. package/templates/sales/sales-template.SemanticModel/DAXQueries/.pbi/daxQueries.json +9 -0
  95. package/templates/sales/sales-template.SemanticModel/DAXQueries/Calendar445MonthNr.dax +0 -0
  96. package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 1.dax +6 -0
  97. package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 2.dax +32 -0
  98. package/templates/sales/sales-template.SemanticModel/definition/cultures/es-AR.tmdl +7324 -0
  99. package/templates/sales/sales-template.SemanticModel/definition/database.tmdl +3 -0
  100. package/templates/sales/sales-template.SemanticModel/definition/expressions.tmdl +233 -0
  101. package/templates/sales/sales-template.SemanticModel/definition/functions.tmdl +247 -0
  102. package/templates/sales/sales-template.SemanticModel/definition/model.tmdl +46 -0
  103. package/templates/sales/sales-template.SemanticModel/definition/relationships.tmdl +16 -0
  104. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Comparaciones.tmdl +194 -0
  105. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Dimensiones ventas.tmdl +71 -0
  106. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Ejes temporales.tmdl +67 -0
  107. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Per/303/255odos.tmdl" +318 -0
  108. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista de calendario.tmdl +36 -0
  109. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista del valor.tmdl +87 -0
  110. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista temporal.tmdl +62 -0
  111. package/templates/sales/sales-template.SemanticModel/definition/tables/Calendario.tmdl +198 -0
  112. package/templates/sales/sales-template.SemanticModel/definition/tables/Canales.tmdl +59 -0
  113. package/templates/sales/sales-template.SemanticModel/definition/tables/Clientes.tmdl +120 -0
  114. package/templates/sales/sales-template.SemanticModel/definition/tables/Modelo Configuraci/303/263n.tmdl" +48 -0
  115. package/templates/sales/sales-template.SemanticModel/definition/tables/Monedas.tmdl +43 -0
  116. package/templates/sales/sales-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +553 -0
  117. package/templates/sales/sales-template.SemanticModel/definition/tables/Productos.tmdl +73 -0
  118. package/templates/sales/sales-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +66 -0
  119. package/templates/sales/sales-template.SemanticModel/definition/tables/Ventas.tmdl +133 -0
  120. package/templates/sales/sales-template.SemanticModel/definition.pbism +5 -0
  121. package/templates/sales/sales-template.SemanticModel/diagramLayout.json +239 -0
  122. package/templates/sales/sales-template.pbip +14 -0
@@ -0,0 +1,133 @@
1
+ /// Tabla de hechos sintética diaria para cuatro años, cargada desde Power Query para que el sample dataset se vea como datos cargados y no como una calculated table DAX.
2
+ table Ventas
3
+ isHidden
4
+ lineageTag: a2225251-5322-4ecc-a4c7-31d8c79492ae
5
+
6
+ column VentaId
7
+ dataType: int64
8
+ isHidden
9
+ lineageTag: 4bd71b3e-8108-4d37-b2d6-3df928452bd8
10
+ summarizeBy: none
11
+ sourceColumn: VentaId
12
+
13
+ column Fecha
14
+ dataType: dateTime
15
+ isHidden
16
+ formatString: Long Date
17
+ lineageTag: b9b5582b-9e22-4702-95ae-4c076d8a9b6a
18
+ summarizeBy: none
19
+ sourceColumn: Fecha
20
+
21
+ annotation UnderlyingDateTimeDataType = Date
22
+
23
+ column ProductoId
24
+ dataType: int64
25
+ isHidden
26
+ lineageTag: bc56bd54-8364-4544-93b3-24b82f569844
27
+ summarizeBy: none
28
+ sourceColumn: ProductoId
29
+
30
+ column ClienteId
31
+ dataType: int64
32
+ isHidden
33
+ lineageTag: f971dc5a-6122-4236-87be-e6e438e4b417
34
+ summarizeBy: none
35
+ sourceColumn: ClienteId
36
+
37
+ column CanalId
38
+ dataType: int64
39
+ isHidden
40
+ lineageTag: 1a1f88bb-ca29-4991-9710-bc7b7dce7ac0
41
+ summarizeBy: none
42
+ sourceColumn: CanalId
43
+
44
+ column Moneda
45
+ dataType: string
46
+ isHidden
47
+ lineageTag: 7483d1b9-59e4-4e26-af35-2112c51ae21e
48
+ summarizeBy: none
49
+ sourceColumn: Moneda
50
+
51
+ column Cantidad
52
+ dataType: int64
53
+ isHidden
54
+ lineageTag: 5dc105b0-efe5-481e-b1d9-849c15d1c4e4
55
+ summarizeBy: sum
56
+ sourceColumn: Cantidad
57
+
58
+ column 'Precio Unitario'
59
+ dataType: double
60
+ isHidden
61
+ lineageTag: eaf0739f-c513-42de-82b2-cdfaba859481
62
+ summarizeBy: sum
63
+ sourceColumn: Precio Unitario
64
+
65
+ column 'Costo Unitario'
66
+ dataType: double
67
+ isHidden
68
+ lineageTag: 0e5cc70c-513c-4a7d-88c2-386b06d84e14
69
+ summarizeBy: sum
70
+ sourceColumn: Costo Unitario
71
+
72
+ column 'Venta Bruta'
73
+ dataType: double
74
+ isHidden
75
+ lineageTag: 204a0e32-7adb-468a-a681-a81dca606def
76
+ summarizeBy: sum
77
+ sourceColumn: Venta Bruta
78
+
79
+ column 'Costo Total'
80
+ dataType: double
81
+ isHidden
82
+ lineageTag: 1bd6c879-869a-4bd4-a990-41c6da0b8fef
83
+ summarizeBy: sum
84
+ sourceColumn: Costo Total
85
+
86
+ partition Ventas = m
87
+ mode: import
88
+ queryGroup: 'Sample Dataset'
89
+ source =
90
+ let
91
+ StartDate = #date(2023, 1, 1),
92
+ EndDate = #date(2026, 12, 31),
93
+ StartWeek = Date.StartOfWeek(StartDate, Day.Monday),
94
+ ClienteCount = 210,
95
+ LineCount = 8,
96
+ Dates = Table.FromList(List.Dates(StartDate, Duration.Days(EndDate - StartDate) + 1, #duration(1, 0, 0, 0)), Splitter.SplitByNothing(), {"Fecha"}),
97
+ TypedDates = Table.TransformColumnTypes(Dates, {{"Fecha", type date}}),
98
+ AddDiaIndex = Table.AddColumn(TypedDates, "DiaIndex", each Duration.Days([Fecha] - StartDate), Int64.Type),
99
+ AddSemanaIndex = Table.AddColumn(AddDiaIndex, "SemanaIndex", each Number.IntegerDivide(Duration.Days(Date.StartOfWeek([Fecha], Day.Monday) - StartWeek), 7), Int64.Type),
100
+ AddYearNr = Table.AddColumn(AddSemanaIndex, "YearNr", each Date.Year([Fecha]), Int64.Type),
101
+ AddMonthNr = Table.AddColumn(AddYearNr, "MonthNr", each Date.Month([Fecha]), Int64.Type),
102
+ Lines = Table.FromList(List.Numbers(1, LineCount), Splitter.SplitByNothing(), {"Linea"}),
103
+ AddLines = Table.AddColumn(AddMonthNr, "Lines", each Lines),
104
+ ExpandLines = Table.ExpandTableColumn(AddLines, "Lines", {"Linea"}, {"Linea"}),
105
+ AddClientePool = Table.AddColumn(ExpandLines, "ClientePool", each List.Min({ClienteCount, [SemanaIndex] + 1}), Int64.Type),
106
+ AddVentaId = Table.AddColumn(AddClientePool, "VentaId", each [DiaIndex] * LineCount + [Linea], Int64.Type),
107
+ AddProductoId = Table.AddColumn(AddVentaId, "ProductoId", each Number.Mod([DiaIndex] * 5 + [Linea] * 7, 8) + 1, Int64.Type),
108
+ AddClienteId = Table.AddColumn(AddProductoId, "ClienteId", each if [Linea] = 1 then [ClientePool] else Number.Mod([DiaIndex] * 17 + [Linea] * 29 + [SemanaIndex] * 5, [ClientePool]) + 1, Int64.Type),
109
+ AddCanalId = Table.AddColumn(AddClienteId, "CanalId", each let Seed = Number.Mod([DiaIndex] * 11 + [Linea] * 17 + [SemanaIndex] * 3, 100) in if [Linea] = 1 then 1 else if Seed < 30 then 1 else if Seed < 55 then 2 else if Seed < 78 then 3 else 4, Int64.Type),
110
+ JoinClientes = Table.NestedJoin(AddCanalId, {"ClienteId"}, Clientes, {"ClienteId"}, "Cliente", JoinKind.LeftOuter),
111
+ ExpandClientes = Table.ExpandTableColumn(JoinClientes, "Cliente", {"Pais", "Segmento"}, {"Pais", "Segmento"}),
112
+ AddMoneda = Table.AddColumn(ExpandClientes, "Moneda", each if [Pais] = "España" then "EUR" else if [Pais] = "Argentina" and Number.Mod([DiaIndex] + [Linea], 4) <> 0 then "ARS" else if List.Contains({"Ecuador", "El Salvador", "Panama", "Uruguay"}, [Pais]) then "USD" else if Number.Mod([DiaIndex] + [Linea] * 2, 5) = 0 then "EUR" else if Number.Mod([DiaIndex] + [Linea] * 3, 7) = 0 then "ARS" else "USD", type text),
113
+ AddYearFactor = Table.AddColumn(AddMoneda, "YearFactor", each if [YearNr] = 2023 then 0.68 else if [YearNr] = 2024 then 1.05 else if [YearNr] = 2025 then 1.55 else if [YearNr] = 2026 then 0.92 else 1.0, type number),
114
+ AddCanalFactor = Table.AddColumn(AddYearFactor, "CanalFactor", each if [CanalId] = 1 then 1.65 else if [CanalId] = 2 then 1.10 else if [CanalId] = 3 then 0.74 else if [CanalId] = 4 then 0.48 else 1.0, type number),
115
+ AddCountryFactor = Table.AddColumn(AddCanalFactor, "CountryFactor", each if [Pais] = "Brasil" then 2.50 else if [Pais] = "Mexico" then 2.35 else if [Pais] = "España" then 2.20 else if [Pais] = "Colombia" then 1.75 else if [Pais] = "Argentina" then 1.65 else if [Pais] = "Chile" then 1.55 else if [Pais] = "Peru" then 1.38 else if [Pais] = "Venezuela" then 1.18 else if [Pais] = "Ecuador" then 1.08 else if [Pais] = "Republica Dominicana" then 1.02 else if [Pais] = "Uruguay" then 0.92 else if [Pais] = "Panama" then 0.88 else if [Pais] = "Costa Rica" then 0.80 else if [Pais] = "Guatemala" then 0.76 else if [Pais] = "Paraguay" then 0.62 else if [Pais] = "Bolivia" then 0.58 else if [Pais] = "Honduras" then 0.52 else if [Pais] = "El Salvador" then 0.48 else if [Pais] = "Nicaragua" then 0.40 else if [Pais] = "Cuba" then 0.34 else if [Pais] = "Haiti" then 0.24 else 1.0, type number),
116
+ AddSegmentFactor = Table.AddColumn(AddCountryFactor, "SegmentFactor", each if [Segmento] = "Enterprise" then 2.85 else if [Segmento] = "Mid Market" then 1.15 else if [Segmento] = "SMB" then 0.42 else 1.0, type number),
117
+ AddProductFactor = Table.AddColumn(AddSegmentFactor, "ProductFactor", each if [ProductoId] = 1 then 1.50 else if [ProductoId] = 2 then 1.15 else if [ProductoId] = 3 then 0.82 else if [ProductoId] = 4 then 1.72 else if [ProductoId] = 5 then 1.22 else if [ProductoId] = 6 then 1.95 else if [ProductoId] = 7 then 0.68 else if [ProductoId] = 8 then 1.34 else 1.0, type number),
118
+ AddSeasonFactor = Table.AddColumn(AddProductFactor, "SeasonFactor", each if [MonthNr] = 1 then 0.70 else if [MonthNr] = 2 then 0.82 else if [MonthNr] = 3 then 0.95 else if [MonthNr] = 4 then 1.05 else if [MonthNr] = 5 then 1.12 else if [MonthNr] = 6 then 1.18 else if [MonthNr] = 7 then 1.28 else if [MonthNr] = 8 then 1.22 else if [MonthNr] = 9 then 1.08 else if [MonthNr] = 10 then 1.20 else if [MonthNr] = 11 then 1.55 else if [MonthNr] = 12 then 1.85 else 1.0, type number),
119
+ AddNoiseFactor = Table.AddColumn(AddSeasonFactor, "NoiseFactor", each 0.55 + Number.Mod([DiaIndex] * 37 + [Linea] * 101 + [ClienteId] * 17, 190) / 100, type number),
120
+ AddCostRate = Table.AddColumn(AddNoiseFactor, "CostRate", each (if [CanalId] = 1 then 0.52 else if [CanalId] = 2 then 0.58 else if [CanalId] = 3 then 0.66 else if [CanalId] = 4 then 0.72 else 0.60) + (if [Segmento] = "Enterprise" then -0.06 else if [Segmento] = "Mid Market" then 0.02 else if [Segmento] = "SMB" then 0.08 else 0) + (if [YearNr] = 2023 then 0.04 else if [YearNr] = 2024 then 0.01 else if [YearNr] = 2025 then -0.03 else if [YearNr] = 2026 then 0.05 else 0), type number),
121
+ AddCantidad = Table.AddColumn(AddCostRate, "Cantidad", each 1 + Number.Mod([DiaIndex] + [Linea] * 3, 8) + (if [CanalId] = 1 then 2 else if [CanalId] = 2 then 1 else 0) + (if [Segmento] = "Enterprise" then 6 else if [Segmento] = "Mid Market" then 2 else 0), Int64.Type),
122
+ AddPrecioUnitario = Table.AddColumn(AddCantidad, "Precio Unitario", each let RawPrice = (32 + [ProductoId] * 9 + Number.Mod([ClienteId] * 7 + [DiaIndex], 45)) * [YearFactor] * [CanalFactor] * [CountryFactor] * [SegmentFactor] * [ProductFactor] * [SeasonFactor] * [NoiseFactor] in List.Max({8, Number.Round(RawPrice, 0)}), type number),
123
+ AddCostoUnitario = Table.AddColumn(AddPrecioUnitario, "Costo Unitario", each let Rate = List.Min({0.88, List.Max({0.28, [CostRate]})}) in List.Max({4, Number.Round([Precio Unitario] * Rate, 0)}), type number),
124
+ AddVentaBruta = Table.AddColumn(AddCostoUnitario, "Venta Bruta", each [Cantidad] * [Precio Unitario], type number),
125
+ AddCostoTotal = Table.AddColumn(AddVentaBruta, "Costo Total", each [Cantidad] * [Costo Unitario], type number),
126
+ Result = Table.SelectColumns(AddCostoTotal, {"VentaId", "Fecha", "ProductoId", "ClienteId", "CanalId", "Moneda", "Cantidad", "Precio Unitario", "Costo Unitario", "Venta Bruta", "Costo Total"})
127
+ in
128
+ Result
129
+
130
+ annotation PBI_NavigationStepName = Navegación
131
+
132
+ annotation PBI_ResultType = Table
133
+
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/fabric/item/semanticModel/definitionProperties/1.0.0/schema.json",
3
+ "version": "4.2",
4
+ "settings": {}
5
+ }
@@ -0,0 +1,239 @@
1
+ {
2
+ "version": "1.1.0",
3
+ "diagrams": [
4
+ {
5
+ "ordinal": 0,
6
+ "scrollPosition": {
7
+ "x": 0,
8
+ "y": 0
9
+ },
10
+ "nodes": [
11
+ {
12
+ "location": {
13
+ "x": 1280.0306169438584,
14
+ "y": 0
15
+ },
16
+ "nodeIndex": "Aux Ejes temporales",
17
+ "nodeLineageTag": "672638f2-b24a-4aff-a181-71078e5a1844",
18
+ "size": {
19
+ "height": 176,
20
+ "width": 234
21
+ },
22
+ "zIndex": 0
23
+ },
24
+ {
25
+ "location": {
26
+ "x": 1278.073250857904,
27
+ "y": 741.28542640361445
28
+ },
29
+ "nodeIndex": "Aux Vista de calendario",
30
+ "nodeLineageTag": "30c2b190-4109-4c7b-ae8c-a4cb2895f15e",
31
+ "size": {
32
+ "height": 216.82932477298925,
33
+ "width": 234
34
+ },
35
+ "zIndex": 0
36
+ },
37
+ {
38
+ "location": {
39
+ "x": 2745.4506085696089,
40
+ "y": 379.66811335457476
41
+ },
42
+ "nodeIndex": "Aux Vista del valor",
43
+ "nodeLineageTag": "ed02182c-5eee-4e6f-97c7-2dd97712298b",
44
+ "size": {
45
+ "height": 104,
46
+ "width": 234
47
+ },
48
+ "zIndex": 0
49
+ },
50
+ {
51
+ "location": {
52
+ "x": 3029.4506085696089,
53
+ "y": 379.66811335457476
54
+ },
55
+ "nodeIndex": "Aux Vista temporal",
56
+ "nodeLineageTag": "0a468eed-913c-45b4-90f9-73a7ca69a446",
57
+ "size": {
58
+ "height": 104,
59
+ "width": 234
60
+ },
61
+ "zIndex": 0
62
+ },
63
+ {
64
+ "location": {
65
+ "x": 6371.4506085696084,
66
+ "y": 450.83405667728744
67
+ },
68
+ "nodeIndex": "Aux Dimensiones ventas",
69
+ "nodeLineageTag": "cb2cb013-6cc7-40c8-a7bb-bdf78350f693",
70
+ "size": {
71
+ "height": 176,
72
+ "width": 234
73
+ },
74
+ "zIndex": 0
75
+ },
76
+ {
77
+ "location": {
78
+ "x": 6605.4506085696084,
79
+ "y": 373.1999860429172
80
+ },
81
+ "nodeIndex": "Calendario",
82
+ "nodeLineageTag": "fc2b01ae-35f8-43a7-9daf-840d8d051fc3",
83
+ "size": {
84
+ "height": 300,
85
+ "width": 234
86
+ },
87
+ "zIndex": 0
88
+ },
89
+ {
90
+ "location": {
91
+ "x": 7073.4506085696084,
92
+ "y": 387.1999860429172
93
+ },
94
+ "nodeIndex": "Aux Comparaciones",
95
+ "nodeLineageTag": "cd2fa428-f539-4001-8ede-7053e6051eae",
96
+ "size": {
97
+ "height": 272,
98
+ "width": 234
99
+ },
100
+ "zIndex": 0
101
+ },
102
+ {
103
+ "location": {
104
+ "x": 7357.4506085696084,
105
+ "y": 411.1999860429172
106
+ },
107
+ "nodeIndex": "Aux Períodos",
108
+ "nodeLineageTag": "32f583da-e5a9-4582-b64b-3aae04d2dfeb",
109
+ "size": {
110
+ "height": 224,
111
+ "width": 234
112
+ },
113
+ "zIndex": 0
114
+ },
115
+ {
116
+ "location": {
117
+ "x": 7591.4506085696084,
118
+ "y": 459.1999860429172
119
+ },
120
+ "nodeIndex": "Modelo Configuración",
121
+ "nodeLineageTag": "44275a58-c4cf-447c-843f-7a091b2de9dc",
122
+ "size": {
123
+ "height": 128,
124
+ "width": 234
125
+ },
126
+ "zIndex": 0
127
+ },
128
+ {
129
+ "location": {},
130
+ "nodeIndex": "Canales",
131
+ "nodeLineageTag": "8271174d-1f18-43d9-ad8e-370998b8d018",
132
+ "size": {
133
+ "height": 152,
134
+ "width": 234
135
+ },
136
+ "zIndex": 0
137
+ },
138
+ {
139
+ "location": {},
140
+ "nodeIndex": "Monedas",
141
+ "nodeLineageTag": "b7ee2bd9-23b2-416d-8794-e70029e343e8",
142
+ "size": {
143
+ "height": 152,
144
+ "width": 234
145
+ },
146
+ "zIndex": 0
147
+ },
148
+ {
149
+ "location": {},
150
+ "nodeIndex": "Productos",
151
+ "nodeLineageTag": "129abf05-1906-4a84-b7ce-0f26b4b60083",
152
+ "size": {
153
+ "height": 176,
154
+ "width": 234
155
+ },
156
+ "zIndex": 0
157
+ },
158
+ {
159
+ "location": {},
160
+ "nodeIndex": "Clientes",
161
+ "nodeLineageTag": "54ff947e-7506-466e-9b73-bff64c48595f",
162
+ "size": {
163
+ "height": 176,
164
+ "width": 234
165
+ },
166
+ "zIndex": 0
167
+ },
168
+ {
169
+ "location": {},
170
+ "nodeIndex": "Tipo de cambio",
171
+ "nodeLineageTag": "876182f9-6e8d-495e-bf52-13fc9db4ffef",
172
+ "size": {
173
+ "height": 152,
174
+ "width": 234
175
+ },
176
+ "zIndex": 0
177
+ },
178
+ {
179
+ "location": {},
180
+ "nodeIndex": "Ventas",
181
+ "nodeLineageTag": "a2225251-5322-4ecc-a4c7-31d8c79492ae",
182
+ "size": {
183
+ "height": 300,
184
+ "width": 234
185
+ },
186
+ "zIndex": 0
187
+ },
188
+ {
189
+ "location": {
190
+ "x": 1026.9719953120457,
191
+ "y": 0
192
+ },
193
+ "nodeIndex": "Métricas",
194
+ "size": {
195
+ "height": 996.39997208583441,
196
+ "width": 234
197
+ },
198
+ "zIndex": 0
199
+ }
200
+ ],
201
+ "name": "Todas las tablas",
202
+ "zoomValue": 70.95554390096882,
203
+ "pinKeyFieldsToTop": false,
204
+ "showExtraHeaderInfo": false,
205
+ "hideKeyFieldsWhenCollapsed": false,
206
+ "tablesLocked": false
207
+ },
208
+ {
209
+ "ordinal": 1,
210
+ "scrollPosition": {
211
+ "x": 0,
212
+ "y": 0
213
+ },
214
+ "nodes": [
215
+ {
216
+ "location": {
217
+ "x": 618.320622753195,
218
+ "y": -50
219
+ },
220
+ "nodeIndex": "Calendario",
221
+ "nodeLineageTag": "fc2b01ae-35f8-43a7-9daf-840d8d051fc3",
222
+ "size": {
223
+ "height": 300,
224
+ "width": 234
225
+ },
226
+ "zIndex": 5
227
+ }
228
+ ],
229
+ "name": "Disposición 1",
230
+ "zoomValue": 79.553182037699813,
231
+ "pinKeyFieldsToTop": false,
232
+ "showExtraHeaderInfo": false,
233
+ "hideKeyFieldsWhenCollapsed": false,
234
+ "tablesLocked": false
235
+ }
236
+ ],
237
+ "selectedDiagram": "Disposición 1",
238
+ "defaultDiagram": "Todas las tablas"
239
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/fabric/pbip/pbipProperties/1.0.0/schema.json",
3
+ "version": "1.0",
4
+ "artifacts": [
5
+ {
6
+ "report": {
7
+ "path": "sales-template.Report"
8
+ }
9
+ }
10
+ ],
11
+ "settings": {
12
+ "enableAutoRecovery": true
13
+ }
14
+ }