@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/skill-manifest.json +1 -1
- package/.plugin/plugin.json +1 -1
- package/AGENTS.md +3 -3
- package/CHANGELOG.md +35 -0
- package/README.md +6 -5
- package/bin/commands/validate-projects.js +1 -1
- package/commands/bi-modeling.md +1 -1
- package/package.json +4 -2
- package/skills/bi-connect/SKILL.md +1 -1
- package/skills/bi-connect/scripts/update-check.js +1 -1
- package/skills/bi-dax/SKILL.md +1 -1
- package/skills/bi-dax/scripts/update-check.js +1 -1
- package/skills/bi-kickoff/SKILL.md +1 -1
- package/skills/bi-kickoff/scripts/update-check.js +1 -1
- package/skills/bi-modeling/SKILL.md +2 -2
- package/skills/bi-modeling/scripts/update-check.js +1 -1
- package/skills/bi-performance/SKILL.md +1 -1
- package/skills/bi-performance/scripts/update-check.js +1 -1
- package/skills/bi-start/SKILL.md +1 -1
- package/skills/bi-start/scripts/update-check.js +1 -1
- package/src/content/skills/bi-modeling.md +1 -1
- package/templates/sales/AGENTS.md +33 -0
- package/templates/sales/sales-template.Report/.platform +11 -0
- package/templates/sales/sales-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
- package/templates/sales/sales-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/page.json +123 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/10420560e5b8c5235857/visual.json +16 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2181c54a94f0c67abb2d/visual.json +283 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/24eba6a7af0b59974ef5/visual.json +703 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/visual.json +528 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/visual.json +324 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/visual.json +359 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4ca8800cf1539ad423f2/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/mobile.json +29 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/visual.json +241 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/54d3fdbedbbb863a9d7a/visual.json +575 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/68043403e96ca8ed23e8/visual.json +575 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/80b54a678ef36a250994/visual.json +351 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/visual.json +421 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/85e1cc13559f4e107ede/visual.json +681 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/visual.json +720 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8d302c5b7e87e8cb57bb/visual.json +590 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/visual.json +102 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a405d29e7744c770d445/visual.json +575 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/visual.json +333 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/visual.json +523 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +681 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +351 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +102 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +685 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/85090dcdf75ac2487d1e/visual.json +283 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +590 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +528 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/visual.json +523 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +720 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1230 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/visual.json +324 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/visual.json +421 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
- package/templates/sales/sales-template.Report/definition/pages/pages.json +8 -0
- package/templates/sales/sales-template.Report/definition/report.json +89 -0
- package/templates/sales/sales-template.Report/definition/version.json +4 -0
- package/templates/sales/sales-template.Report/definition.pbir +9 -0
- package/templates/sales/sales-template.SemanticModel/.pbi/editorSettings.json +8 -0
- package/templates/sales/sales-template.SemanticModel/.platform +11 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/.pbi/daxQueries.json +9 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/Calendar445MonthNr.dax +0 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 1.dax +6 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 2.dax +32 -0
- package/templates/sales/sales-template.SemanticModel/definition/cultures/es-AR.tmdl +7324 -0
- package/templates/sales/sales-template.SemanticModel/definition/database.tmdl +3 -0
- package/templates/sales/sales-template.SemanticModel/definition/expressions.tmdl +233 -0
- package/templates/sales/sales-template.SemanticModel/definition/functions.tmdl +247 -0
- package/templates/sales/sales-template.SemanticModel/definition/model.tmdl +46 -0
- package/templates/sales/sales-template.SemanticModel/definition/relationships.tmdl +16 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Comparaciones.tmdl +194 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Dimensiones ventas.tmdl +71 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Ejes temporales.tmdl +67 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Per/303/255odos.tmdl" +318 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista de calendario.tmdl +36 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista del valor.tmdl +87 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista temporal.tmdl +62 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Calendario.tmdl +198 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Canales.tmdl +59 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Clientes.tmdl +120 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Modelo Configuraci/303/263n.tmdl" +48 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Monedas.tmdl +43 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +553 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Productos.tmdl +73 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +66 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Ventas.tmdl +133 -0
- package/templates/sales/sales-template.SemanticModel/definition.pbism +5 -0
- package/templates/sales/sales-template.SemanticModel/diagramLayout.json +239 -0
- 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,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
|
+
}
|