-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCurso Power BI – Análisis de Datos y Business Intelligence.txt
More file actions
973 lines (663 loc) · 44.9 KB
/
Copy pathCurso Power BI – Análisis de Datos y Business Intelligence.txt
File metadata and controls
973 lines (663 loc) · 44.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
Curso Power BI – Análisis de Datos y Business Intelligence
ppt de intro en carpeta:
"C:\root\Computacion\Data\Analytics\Udemy\Power BI\Curso Power BI – Análisis de Datos y Business Intelligence\PDF-PowerBI-Guía-datdata.pdf"
Al dar click en actualizar se realizan todos los pasos definidos en Power Query para actualizar la fuente de datos con esos pasos (de ahi la importancia de que a menores pasos es mejor el rendimiento)
✅ ¿Cómo confirmar cuántas filas tiene el dataset en Power Query:
Agregá un paso nuevo con esta fórmula:
= Table.RowCount(Anterior)
Donde Anterior es el nombre del paso anterior (usualmente algo como #"Tipo cambiado").
Eso te va a devolver un solo número: la cantidad real de filas que tiene tu dataset.
Proyecto 1 - Ventas de videojuegos (DONE):
"C:\root\Computacion\Data\Analytics\Udemy\Power BI\Curso Power BI – Análisis de Datos y Business Intelligence\Proyectos\Proyecto1 - Videojuegos\Proyecto1-videojuegos.pbix"
Proyecto 2 - Indicadores Mundiales:
"C:\root\Computacion\Data\Analytics\Udemy\Power BI\Curso Power BI – Análisis de Datos y Business Intelligence\Proyectos\Proyecto2 - Indicadores mundiales\Indicadores Mundiales - Project 2.pbix"
- Cuando tienen las relaciones hechas en el modelo se pueden usar campos de las dos tablas relacionadas en una sola visualizacion (Se junta la información de las tablas relacionadas)
Power BI themes:
https://community.fabric.microsoft.com/t5/Themes-Gallery/bd-p/ThemesGallery?sortby=kudos
https://app.powerbi.com/groups/me/reports/feacaced-32bd-478a-82c4-799c1d2ea31b/605872cc8237eb3adf97?experience=power-bi
Time Intelligence Option on Current File & Global (PBI Options)=> Create a data hierarchy automatically
Para crear tabla de medidas:
Pestaña Inicio, introducir datos y se le pone solo nombre(measures esta reservada por pbi)
Fact(Hechos) => eventos recurrentes ej ventas, devoluciones
Dim(Dimensiones) => Segmentan tablas, descripciones
Modelo en estrella (Centro tabla de hechos) => Forma una estrella con las dim alrededor
Normalmente se modela las de hechos abajo y las dim arriba, asi al agregar se van poniendo y quedan mas visibles
Es buena practica ocultar las llaves de la tabla de hecho al relacionar, ya que para usarlas deberia usarlas desde la dimension
-----------------------------------O----------------------------------------------------------------
GIT DATA:
1. git reset (Para commits locales que no has subido)
git reset es como una máquina del tiempo que reescribe la historia. Mueve el puntero de tu rama (por ejemplo, main) hacia un commit anterior, haciendo que todos los commits que vinieron después desaparezcan de la historia de esa rama.
Cuándo usarlo: Úsalo solamente en commits de tu repositorio local que aún no has subido con git push.
Por qué es útil: Es perfecto para corregir errores que acabas de cometer antes de compartirlos. Esto es exactamente lo que hicimos: tu commit con los archivos grandes solo existía en tu máquina, así que pudimos "borrarlo" de forma segura con git reset para arreglarlo.
El peligro: Si usas git reset en un commit que ya está en GitHub, estarás reescribiendo una historia que otros podrían tener. La próxima vez que alguien intente sincronizar sus cambios, Git se encontrará con dos historias diferentes y generará conflictos muy confusos para todos.
Analogía: Es como arrancar una página de tu diario personal. Nadie más lo ha leído, así que no hay problema.
2. git revert (Para commits que ya subiste)
git revert no borra nada. En su lugar, crea un nuevo commit que es el inverso del commit que quieres deshacer. Si el commit original agregó una línea de código, el "revert commit" la eliminará.
Cuándo usarlo: Úsalo siempre para deshacer cambios en commits que ya has subido con git push.
Por qué es seguro: No reescribe la historia, sino que la añade. El commit original sigue ahí, pero sus cambios son anulados por el nuevo "revert commit". Como es un commit nuevo, se puede subir a GitHub sin causar conflictos a nadie. Mantiene la historia del proyecto intacta y transparente.
Analogía: Es como añadir una nueva entrada en tu diario que dice: "Corrección: lo que escribí ayer en la página X no es correcto". No arrancas la página, solo añades una corrección.
Regla de Oro
¿El commit solo existe en mi máquina? -> Usa git reset.
¿El commit ya está en GitHub (o compartido)? -> Usa git revert.
¡Excelente pregunta! Las opciones --soft, --mixed y --hard le dicen a git reset qué hacer con los cambios de los commits que está deshaciendo.
Imagina que git reset tiene dos trabajos:
Mover el HEAD: Es decir, regresar en la historia de los commits (esto lo hacen los tres modos).
Actualizar los archivos: Aquí es donde se diferencian.
git reset --soft (El más suave)
Este modo deshace el commit, pero no toca tus archivos ni el "área de preparación" (staging area).
Historia: El commit se deshace.
Archivos: Los cambios se quedan preparados (staged), listos para un nuevo commit. Tu editor de código no muestra ninguna diferencia.
Cuándo usarlo: Perfecto para cuando solo quieres cambiar el mensaje del último commit o añadir un archivo que olvidaste. Deshaces el commit, haces el pequeño ajuste y vuelves a "commitear" inmediatamente. Este es el que usamos nosotros para poder quitar los archivos grandes del staging sin perder los demás cambios.
Analogía: Pides un plato en un restaurante y justo cuando se lo lleva el camarero, te arrepientes. Con --soft, el camarero simplemente regresa el plato a tu mesa. Aún está listo para comer, y puedes añadirle sal o cambiarlo por otro antes de que se lo lleven de nuevo.
git reset --mixed (El intermedio y por defecto)
Este es el modo que Git usa si no especificas ninguno. Deshace el commit y saca los cambios del área de preparación.
Historia: El commit se deshace.
Archivos: Los cambios se mantienen en tu carpeta (directorio de trabajo), pero no están preparados (unstaged). Aparecerán como "modificaciones no preparadas para commit" si ejecutas git status.
Cuándo usarlo: Útil si quieres deshacer uno o más commits y re-organizar completamente qué cambios quieres incluir en los nuevos commits.
Analogía: El camarero regresa el plato a tu mesa (--soft), pero además lo desarma y pone todos los ingredientes a un lado. Tienes todos los componentes, pero si quieres comer, tienes que volver a armar el plato (git add) y pedir que se lo lleven (git commit).
git reset --hard (El más drástico y peligroso)
Este modo es el más radical. Deshace el commit y borra todos los cambios asociados a él.
Historia: El commit se deshace.
Archivos: Todos los cambios se eliminan permanentemente de tus archivos y del área de preparación. Tu código vuelve a ser una copia exacta del commit al que regresaste.
Cuándo usarlo: Solo cuando estás 100% seguro de que todo lo que hiciste en el último (o últimos) commit(s) es un error y quieres borrarlo por completo sin dejar rastro. Es muy difícil recuperar los cambios después de un reset --hard.
Analogía: Le dices al camarero que no querías ese plato, y él lo tira directamente a la basura. No hay forma de recuperarlo.
Tabla Resumen
Modo de reset ¿Qué le pasa al commit? ¿Qué le pasa a tus cambios?
--soft Se deshace Se quedan preparados (staged)
--mixed Se deshace Se quedan como modificaciones locales (unstaged)
--hard Se deshace Se borran para siempre
Commit messages GIT
feat : feature
fix : bug fix
docs : info
refactor: updates != create (feat)
--------------------------------------O------------------------------------
RETOMO PBI 💯
Desde el modelo de datos (la vista de modelo), si puedo arrastrar las medidas para moverlas a otra tabla
También se le puede agregar formato desde la vista de modelo a varias medidas en simultaneo
Columnas calculadas trabaja a nivel filas, en teoria, ssi cambio el formato desde la vista de tabla se cambia en power query (creo que no pasa en la practica, segun mi experiencia, pero probar)
Las columnas calculadas consumen mucha memoria, las medidas estan optimizadas para hacer esto. Las columnas sirven para condicionales
OR DAX:
FinSemana =
IF(
OR(
DimCalendar[DiaSemana] = 6,
DimCalendar[DiaSemana] = 7),
"Fin Semana",
"Día Laboral"
)
Otra manera del OR => pipe
FinSemana =
IF(
DimCalendar[DiaSemana] = 6 ||
DimCalendar[DiaSemana] = 7,
"Fin Semana",
"Día Laboral"
)
Otra manera: IN
FinSemana =
IF(
DimCalendar[DiaSemana] IN {6,7},
"Fin Semana",
"Día Laboral"
)
Característica DAX (Data Analysis Expressions) M (Power Query Formula Language)
Uso Principal Análisis de datos y cálculos complejos "Extracción, transformación y carga (ETL)."
Ubicación Vista de Informe o Vista de Datos Editor de Power Query.
Resultado "Columnas calculadas, medidas y tablas calculadas." Columnas personalizadas y transformaciones de tabla.
Momento de ejecución Después de que los datos se han cargado al modelo. Durante la carga o actualización de los datos.
Almacenamiento Utiliza la memoria RAM del modelo. Define cómo se estructura el dato antes de entrar al modelo.
Una regla de oro en Power BI es: "Si puedes hacerlo en Power Query (M), hazlo ahí; si necesitas el contexto de los datos o cálculos dinámicos, usa DAX".
Usa DAX para Columnas Calculadas cuando:
Necesitas que la columna responda a relaciones entre tablas que ya están en el modelo.
Vas a realizar cálculos financieros o estadísticos complejos (como comparar ventas de este año vs. el anterior).
Necesitas usar funciones de "Inteligencia de Tiempo".
Usa M para Columnas Personalizadas cuando:
Quieres limpiar los datos (ej. quitar espacios, separar nombres y apellidos).
Necesitas filtrar filas o combinar tablas antes de que lleguen al reporte para que este sea más ligero.
Deseas que el cálculo se realice una sola vez durante la actualización de los datos.
Al usar OR es buena practica poner las condiciones afectadas entre parentesis
AND with OR
MalaSuerte =
IF(
(DimCalendar[CalendarDayOfWeekLabel] = "Tuesday"
||
DimCalendar[CalendarDayOfWeekLabel] = "Friday"
)
&&
DimCalendar[Dia] = 13,
"Mala Suerte",
"Día Normal"
)
OR es dentro de la misma columna != and (aplica para multiples columnas )
Fechas , columnas calculadas:
FORMAT() => la columna base tiene que estar en formato date, tanto para "MMM" o "D" , 4 significan nombre completo. 1 y 2 numero con 0 o sin cero adelante de ser un digito, y 3 son los 3 primeros char
UPPER() & LOWER() (mayus y minus)
Reemplazar valores => SUBSTITUTE
Tienda =
SUBSTITUTE(DimStores[StoreName], "Store", BLANK())
Las transformaciones son en powerquery (M) mas eficientes
Las nuevas columnas que se hacen en dax no se ven en PQ (M)
En general , en PQ => M, las transformaciones se hacen desde la UI facilmente, tiene la CapitalCase que DAX no.
RELATED :
Ubicación Física =
RELATED(DimGeography[Ubicación completa])
(trae de otra columna los valores relacionados)
Diferencia entre RELATED y traer campo desde la vista de visualizacion (Gemini):
1. La función `RELATED` (DAX)
Se usa principalmente para crear **columnas calculadas**. Lo que hace es traer físicamente un valor desde el lado "uno" de una relación al lado "muchos".
* **Costo de Almacenamiento:**
Crea una copia física de los datos. Si tu tabla de ventas tiene 1 millón de filas y usas `RELATED` para traer el nombre de la categoría, ahora tienes 1 millón de registros adicionales ocupando memoria RAM.
Momento de cálculo: Se calcula únicamente cuando se cargan o actualizan los datos (en el refresco).
Contexto de fila: Funciona porque DAX recorre fila por fila la tabla actual y busca su pareja en la tabla relacionada.
### 2. Columna directa en la Visualización
Es cuando simplemente arrastras el campo desde su tabla original al objeto visual (gráfico, tabla o matriz) donde ya tienes otros datos.
Eficiencia:** No duplica datos. El motor de Power BI (VertiPaq) simplemente sigue el "camino" de la relación existente en el modelo de datos en el momento en que abres el reporte.
Dinámico:** Se calcula en tiempo de ejecución (Query time).
*Contexto de Filtro:** El valor se filtra dinámicamente según lo que selecciones en otros segmentadores o gráficos.
---
### Comparativa Directa
| Característica | Función `RELATED` (Columna Calculada) Columna desde la Tabla Original
| **Memoria (RAM) Aumenta** el tamaño del modelo. No ocupa memoria extra.
| **Rendimiento** | Puede ralentizar el refresco de datos. | Es la forma más óptima para el motor.
| **Uso Principal** | Cuando necesitas el valor para filtrar otra columna o para Para segmentar, categorizar y mostrar en reportes.
cálculos intermedios complejos
| **Regla de Oro** | **Evitarla** si solo es para mostrar el dato en un visual. **Preferirla** siempre que sea posible.
### ¿Cuándo SÍ tiene sentido usar `RELATED`?
Usar solo si el valor que traes es **imprescindible** para un cálculo que no se puede resolver mediante una medida o si necesitas ese valor para crear una jerarquía (por ejemplo, País > Provincia > Ciudad) y los datos están en tablas separadas.
En un **Esquema en Estrella** (que es el estándar de oro en Power BI), lo ideal es que las dimensiones (tablas de búsqueda) contengan todos sus atributos y las tablas de hechos (ventas, transacciones) se conecten a ellas. Si necesitas ver el nombre de un producto en tus ventas, simplemente arrastra el nombre desde la tabla `Productos`. No hace falta "traerlo" físicamente a la tabla `Ventas` con un `RELATED`.
COUNT & COUNTROWS
COUNTROWS() => Tiene mejor desempeño que COUNT(), toma la tabla
DISTINCTCOUNT() => Por ejemplo de la tabla de ventas cuenta la cantidad de tiendas diferentes que hay
#Me expandirias la diferencia entre las funciones count de DAX?
COUNTA() => Cuenta los valores de esa columna no vacios => que tienen valor
Function Counts Counts Counts Counts Evaluates Row-by-Row
Numbers Text Booleans Duplicates
COUNT ✅ ❌ ❌ ✅ ❌
COUNTA ✅ ✅ ✅ ✅ ❌
COUNTX ✅ ✅ ❌ ✅ ❌
COUNTAX ✅ ✅ ✅ ✅ ✅
DISTINCTCOUNT ✅ ✅ ✅ ❌ ❌
COUNTBLANK() => Cuenta valores en blanco
CALCULATE()
Toma una expresion (medida), o crear mismo una medida ahi con DAX y despues se le puede agregar filtros de otras tablas de hechos o dimensiones que esten relacionadas en el esquema
ALL/FILTER
ALL() => No considera ningún filtro (REMUEVE el contexto de filtro para la tabla que estemos considerando)
% ALL Computers Category =
DIVIDE(
[Total Ordenes],
CALCULATE(
[Total Ordenes],
//ALL(DimProductCategory[ProductCategory]) = "Computers" => no funciona filtrando, hay que agregar filter
FILTER(
ALL(DimProductCategory),
DimProductCategory[ProductCategory] = "Computers"
)
),
0
)
IteradorX
SUMX /COUNTX / AVERAGEX
Lo mas eficiente en Power BI es evitar las columnas calculadas (Consumen mucha RAM), utilizando medidas DAX para calculos.
SUMX() => Itera fila por fila para una determinada operacion. Ejemplo:
Total Ingresos =
SUMX(
FactSales,
FactSales[SalesQuantity] * FactSales[Dcto Mayoreo] * RELATED(DimProduct[UnitPrice])
)
TimeIntelligence:
La tabla calendario debe estar marcada como tal, y la columna key de la tabla debe ser de tipo DATE
DATESYTD / DATESQTD / DATESMTD / DATESWTD => Funcionan bajo el mismo principio que YTD
YTD Ingresos // Ingresos en el año, year to date =
CALCULATE(
[Total Ingresos],
DATESYTD(DimCalendar[DateKey]) //Existe quarter to date y otras, toma las fechas acumuladas segun el campo calendario principal
)
YTD Ingresos 2 =
//Lo mismo que YTD Ingresos pero con SugarSyntax (usa calculate la funcion) , se pueden aplicar mas filtros que con la otra versión
TOTALYTD(
[Total Ingresos],
DimCalendar[DateKey]
)
Last YEAR Function
Total Ingresos LY = //Last year
CALCULATE(
[Total Ingresos],
//SAMEPERIODLASTYEAR(DimCalendar[DateKey]) //Syntax Sugar, mas dificil de manipular
DATEADD(DimCalendar[DateKey], -1, YEAR) //Otra manera, mas facil de usar y de manipular para el fin
)
Last month 👍
Total Ingresos LM = //Last month
CALCULATE(
[Total Ingresos],
DATEADD(DimCalendar[DateKey], -1 , MONTH)
)
Copos de nieve (jerarquias ) => normalizaciones de datos (db)
En Power BI lo mejor es Desnormalizar las dimensiones.
Para desnormalizar , desde PQ combinar consultas, parto desde la subcategoria para mergear con la categoria. Desde subcategory me traigo category sin repetir el id que ya lo tengo. Deshabilito la carga en category para reducir el modelo
RANKX
Rank Ingresos Tiendas =
RANKX(
ALL(DimStores), //Toda la tabla como primer parametro
[Total Ingresos Netos], //Valor para rankear
,
ASC //default es DESC , orden para rank ASC el # mas alto tiene la ultima posicion != DESC
)
Rank Ingresos Stores =
RANKX(
ALL(DimStores[Store]), //Para ordenar que tome un campo
[Total Ingresos Netos]
)
Para emular el ALLSELECTED con el ALL tengo que usar la columna especifica en el ALL en un contexto de filtros
SWITCH() => Condicional
En columna calculada:
Tamaño Tienda =
SWITCH(
TRUE(), //Va true para especificar cuando se cumplen las condiciones abajo hazme esto o lo otro
DimStores[SellingAreaSize] <= 500,"Pequeña",
DimStores[SellingAreaSize] <= 800,"Mediana",
DimStores[SellingAreaSize] > 800,"Grande"
)
Seleccion + Con shift +alt + down => copia la linea para abajo
En medida:
Se necesita referenciar una medida ya creada para ejecutarlo
Rank Ingresos Tiendas Cat =
SWITCH(
TRUE(),
[Rank Ingresos Tiendas] <= 10, "Top 10",
[Rank Ingresos Tiendas] <= 25, "Sobresaliente",
[Rank Ingresos Tiendas] <= 50, "Bueno",
[Rank Ingresos Tiendas] <= 100, "Regular",
"Incompetente"
)
Se pueden usar emojis muchas veces
Rank Ingresos Tiendas Cat =
SWITCH(
TRUE(),
[Rank Ingresos Tiendas] <= 10, "⭐⭐⭐⭐⭐",
[Rank Ingresos Tiendas] <= 25, "⭐⭐⭐⭐",
[Rank Ingresos Tiendas] <= 50, "⭐⭐⭐",
[Rank Ingresos Tiendas] <= 100, "⭐⭐",
"⭐"
)
Tooltips
En configuracion del lienzo selecciono "informacion sobre herramientas" en tipo para definirlo como tooltip y creo la/las visualizaciones que deseo mostrar como toolkip. Luego en la visualizacion que deseo en la parte de opciones generales, habilito la opcion de informacion sobre herramientas y selecciono el tooltip creado.
Se puede modificar la pagina seleccionando en vez de informacion sobre herramientas , personalizado y le cambio el tamaño
Titulo dinamico con DAX:
Titulo Ingresos =
"Total Ingresos: " & FORMAT([Total Ingresos Netos], "$ #,##0")
Lo puedo aplicar en el titulo del tooltip de grafico para juntar visualizacion de card con la de treemap
Condicional con emojis en titulo DAX:
Título Devoluciones =
VAR indicador = IF([Ratio Devoluciones] <= 0.01,"✅","❌")
RETURN
"% Devoluciones: " & FORMAT([Ratio Devoluciones],"0.00%" & indicador &
" - Cantidad: " & FORMAT([Total Ordenes Devueltas], "0,0"))
Filtros en segmentadores => Para que no muestren registros sin datos (desde el panel de filtros, campo de filtrado => not blank)
Filtros dinamicos en el titulo:
Titulo Filtros =
var FiltroAnio = SELECTEDVALUE(DimCalendar[Año],"Multiple") //Segundo parametro es un resultado alternativo
var FiltroProd = SELECTEDVALUE(DimProduct[ProductCategory],"Multiple") //Segundo parametro es un resultado alternativo
var FiltroCont = SELECTEDVALUE(DimStores[ContinentName],"Multiple") //Segundo parametro es un resultado alternativo
RETURN
"Comparativa de Total Ingresos vs Año Anterior segmentado por:
- Año: " & FiltroAnio &
" - Producto: " & FiltroProd & "- Continente: " & FiltroCont
No pasa nada si el mismo nombre de variable se repite en != medidas, solo se reconoce en el ambiente de la medida
Título Ingresos Variacion LY =
VAR indicador = IF([Total Ingresos Variacion LY] < 0 , "❌", "✅")
RETURN
"Total Ingresos : " & FORMAT([Total Ingresos Netos], "$0,0") & indicador
Parametros:
Para crear escenarios ante != situaciones que puedan pasar (What if)
Parametros:
Modelado => Parametro nuevo => Intervalo numerico
Ejemplo => Que pasaria si los ingresos (o los costos) aumentan un % porciento
Genera una fx DAX
Parámetro UnitPrice = GENERATESERIES(0, 0.5, 0.01)
Se puede cambiar desde la fx dax el inicio, el limite y el salto , ademas de ponerle otro formato de datos
Me crea un campo (el otro que el que usa el segmentador) en la nueva tabla, que es el que podriamos utilizar en una medida para hacer simulaciones
Ejemplo medida 👍
Simulacion Total Ingresos =
SUMX(FactSales,
(FactSales[SalesQuantity] - FactSales[ReturnQuantity]) *
FactSales[Dcto Mayoreo] *
RELATED(DimProduct[UnitPrice]) * (1 + 'Parámetro UnitPrice'[Valor de Parámetro UnitPrice]) *
( 1 - RELATED(DimPromotion[DiscountPercent]) )
)
Forma mas sencilla de llegar a lo mismo :
Sim Total Costos =
[Total Costos] * ('Parámetro Costos'[Valor de Parámetro Costos] + 1 )
Sim Total Beneficios =
[Simulacion Total Ingresos] - [Sim Total Costos]
Sim % Margen =
[Sim Total Beneficios] / [Simulacion Total Ingresos]
Modelado => Parametro nuevo => Campo
Se pueden seleccionar diferentes categorias de diferentes dimensiones, o diferentes jerarquias
Crea expresion DAX :
Parámetro Categoria = {
("ChannelName", NAMEOF('DimChannel'[ChannelName]), 0),
("ContinentName", NAMEOF('DimStores'[ContinentName]), 1),
("ProductCategory", NAMEOF('DimProduct'[ProductCategory]), 2)
}
Con esto se crea un segmentador en cualquier visualizacion para que seleccionemos la segmentacion que queremos ver
Otro uso:
Parámetro Medidas = {
("Total Ingresos Netos", NAMEOF('Medidas'[Total Ingresos Netos]), 0),
("Total Costos", NAMEOF('Medidas'[Total Costos]), 1),
("Total Beneficios", NAMEOF('Medidas'[Total Beneficios]), 2),
("% Margen", NAMEOF('Medidas'[% Margen]), 3),
("Total Ordenes", NAMEOF('Medidas'[Total Ordenes]), 4),
("Cantidad Real", NAMEOF('Medidas'[Cantidad Real]), 5)
}
Con esto, agrego las medidas que quiera y las utilizo para ir creando visualizaciones dinamicas
Se puede crear un parametro con las fechas para decidir como ver la data
Tabla Calendario con DAX y M
Beneficios
Time Intelligence
Adición de columnas
Mostrar datos sin registros
Consistencia visual
Evita errores en funciones de Time Intelligence
Evita columnas sin orden
Evita un bajo desempeño
Proceso de creación de tablas Calendario => Aplica tanto para DAX como para M:
1) Lista de fechas únicas:
Definir data type : date
Cubrir todas las fechas del modelo (Fact table en especifico)
Tip => 01 /01/minyear - 31/12/maxyear
2) Adicionar columnas
Mes , dia , semana, nombre corto etcetera
Los primeros dos pasos toman la mayor cantidad de tiempo en el proceso, se pueden automatizar para cualquier reporte
3) Mark as Date Table
4) Definir la relacion con las fact (la tabla calendario es dim, en un modelo estrella se relaciona con cada fact por el campo fecha correspondiente, usando el campo de tipo date y en los slicers/visualizaciones tomarlos desde la calendar table para que surjan los efectos deseados)
5) Ajustes a columnas (orden , etcetera, ) y poner que los campos numericos no se sumarizen
Para crear tabla en DAX (Power BI) :
Desde pestaña de modeling o en la vista de tabla (Table tools) => New table
CALENDARAUTO() => Esta funcion lo que hace es de todo el modelo, los campos date toma el año minimo y el maximo y crea un listado con valores unicos. Arranca de Enero por mas que los datos empiecen otro mes posterior, toma solo el año.
Para analisis rapido
Importante marcar como tipo date el data type (lo pone como datetime automaticamente)
Cuando cargo una fuente de datos posterior, con algun campo de fecha date , automaticamente el CALENDARAUTO() se recalcula a minyear & maxyear
CALENDAR()
Otra funcion, mas personificable, toma una tabla fact de type date , y se le puede poner con date mes / dia de inicio y fin
Dim_Calendar DAX =
CALENDAR(
DATE(
YEAR(
MIN(Fact_Tickets[Fecha])),01,01),
DATE(
YEAR(
MAX(Fact_Tickets[Fecha])),12,31)
)
Agrego columnas para la jerarquia segun necesidad, mediante transformacion de datos desde dax:
Año =
YEAR('Dim_Calendar DAX'[Date])
Es mas eficiente crear la tabla calendario en M (Power Query)
Codigo reutilizable para la generacion de la dim calendar table en DAX:
1) Creo una nueva tabla con este codigo
Dim_Calendar DAX =
ADDCOLUMNS ( //Agrega columnas con clave, valor
CALENDAR
( DATE
( YEAR
( MIN ( Fact_Tickets[Fecha])), 01, 01), //Se cambia por mi campo type date
DATE
( YEAR
( MAX( Fact_Tickets[Fecha]) ), 12, 31 ) ), //Se cambia por mi campo type date
"FechaSK", FORMAT ( [Date], "YYYYMMDD" ),
"#Año", YEAR ( [Date] ),
"#Trimestre", QUARTER ( [Date] ),
"#Mes", MONTH ( [Date] ),
"#Día", DAY ( [Date] ),
"Trimestre", "T" & FORMAT ( [Date], "Q" ),
"Mes", FORMAT ( [Date], "MMMM" ),
"MesCorto", FORMAT ( [Date], "MMM" ),
"#DíaSemana", WEEKDAY ( [Date],2 ),
"#SemanaAño", WEEKNUM ( [Date],2 ),
"CierreSemana", ( [Date] + 7 - WEEKDAY( [Date],2 ) ),
"Día", FORMAT ( [Date], "DDDD" ),
"DíaCorto", FORMAT ( [Date], "DDD" ),
"AñoTrimestre", FORMAT ( [Date], "YYYY" ) & "/T" & FORMAT ( [Date], "Q" ),
"Año#Mes", FORMAT ( [Date], "YYYY/MM" ),
"AñoMesCorto", FORMAT ( [Date], "YYYY/mmm" ),
"InicioMes", EOMONTH( [Date], -1) + 1,
"FinMes", EOMONTH( [Date], 0)
)
Los campos # Ayudan a ordenar las columnas
2) Cambio el tipo de dato de las columnas Date y CierreSemana por date only
3) Marco la tabla desde table tools, opciones del calendario => Marcar como calendar table para decirle a power bi que es una tabla calendario
4) Relacionar en el modelo(esquema) la tabla creada
5) Ajustes a columnas (orden , etcetera, ) y poner que los campos numericos no se sumarizen
La tabla se pone en el idioma que tenga configurado en la configuracion regional de power bi
Con tabla calendario, fechas unicas, puedo modificar la medida para que muestre tambien los dias que no hubo datos:
Tengo que con el click derecho en la parte de datos de fecha de la visualizacion, seleccionar mostrar valores sin datos y modificar la medida de esta manera:
Total Tickets =
IF(ISBLANK(COUNTROWS(Fact_Tickets) ),0,COUNTROWS(Fact_Tickets))
Calendar Table (M - Power Query):
Pasos para crearla desde 0 (M - Power Query):
1) New blank query
2) Edito el origen para que me tome mi fact o el campo que quiera usar para basar los minimos y maximos
3) Formulas de min y max, con fx desde la barra de formulas agrego un nuevo paso:
let
Origen = Fact_Tickets[Fecha],
FechaInicio = #date(Date.Year(List.Min(Origen)),1,1),
FechaMax = #date(Date.Year(List.Max(Origen)),12,31)
in
FechaMax
4) Creo la lista, uso Number.From porque el {x...y} => solo toma numeros, no fechas para crear una lista entre min y max
5) Selecciono a la tabla (to table) para convertir la lista en una tabla y tener toda la funcionalidad de query editor
6) Cambio el tipo de dato a type date
7)Luego desde add column parado en mi campo date puedo agregar las columnas que necesite (year, month, etc )
Advanced editor de estos pasos:
let
Origen = Fact_Tickets[Fecha],
FechaInicio = #date(Date.Year(List.Min(Origen)),1,1),
FechaFin = #date(Date.Year(List.Max(Origen)),12,31),
ListaFechas = {Number.From(FechaInicio)..Number.From(FechaFin)},
#"Convertida en tabla" = Table.FromList(ListaFechas, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
DateType = Table.TransformColumnTypes(#"Convertida en tabla",{{"Column1", type date}}),
#"Columnas con nombre cambiado" = Table.RenameColumns(DateType,{{"Column1", "Date"}}),
#"Año insertado" = Table.AddColumn(#"Columnas con nombre cambiado", "Año", each Date.Year([Date]), Int64.Type),
#"Mes insertado" = Table.AddColumn(#"Año insertado", "Mes", each Date.Month([Date]), Int64.Type),
#"Día insertado" = Table.AddColumn(#"Mes insertado", "Día", each Date.Day([Date]), Int64.Type)
in
#"Día insertado"
Automatic M Calendar Table Generation (Power Query - Advanced Editor)
let
Source = #"FactTable"[Fecha],
FechaInicio = #date(Date.Year(List.Min(Source)),1,1),
FechaFinal = #date(Date.Year(List.Max(Source)),12,31),
ListaInicioFinal = {Number.From(FechaInicio)..Number.From(FechaFinal)},
#"Converted to Table" = Table.FromList(ListaInicioFinal, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type date}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1", "Fecha"}}),
#"Added Custom Column" = Table.AddColumn(#"Renamed Columns", "Custom", each Text.Combine({Date.ToText([Fecha], "yyyy"), Date.ToText([Fecha], "MM"), Date.ToText([Fecha], "dd")}), type text),
#"Inserted Year" = Table.AddColumn(#"Added Custom Column", "Year", each Date.Year([Fecha]), Int64.Type),
#"Inserted Quarter" = Table.AddColumn(#"Inserted Year", "Quarter", each Date.QuarterOfYear([Fecha]), Int64.Type),
#"Inserted Month" = Table.AddColumn(#"Inserted Quarter", "Month", each Date.Month([Fecha]), Int64.Type),
#"Inserted Day" = Table.AddColumn(#"Inserted Month", "Day", each Date.Day([Fecha]), Int64.Type),
#"Inserted Merged Column" = Table.AddColumn(#"Inserted Day", "Merged", each Text.Combine({"T", Text.From([Quarter], "es-MX")}), type text),
#"Inserted Month Name" = Table.AddColumn(#"Inserted Merged Column", "Month Name", each Date.MonthName([Fecha]), type text),
#"Inserted First Characters" = Table.AddColumn(#"Inserted Month Name", "First Characters", each Text.Start([Month Name], 3), type text),
#"Inserted Day of Week" = Table.AddColumn(#"Inserted First Characters", "Day of Week", each Date.DayOfWeek([Fecha]), Int64.Type),
#"Inserted Week of Year" = Table.AddColumn(#"Inserted Day of Week", "Week of Year", each Date.WeekOfYear([Fecha]), Int64.Type),
#"Inserted Week of Month" = Table.AddColumn(#"Inserted Week of Year", "Week of Month", each Date.WeekOfMonth([Fecha]), Int64.Type),
#"Inserted End of Week" = Table.AddColumn(#"Inserted Week of Month", "End of Week", each Date.EndOfWeek([Fecha],Day.Monday), type date),
#"Inserted Day of Year" = Table.AddColumn(#"Inserted End of Week", "Day of Year", each Date.DayOfYear([Fecha]), Int64.Type),
#"Inserted Day Name" = Table.AddColumn(#"Inserted Day of Year", "Day Name", each Date.DayOfWeekName([Fecha]), type text),
#"Inserted First Characters1" = Table.AddColumn(#"Inserted Day Name", "First Characters.1", each Text.Start([Day Name], 3), type text),
#"Inserted Merged Column1" = Table.AddColumn(#"Inserted First Characters1", "Merged.1", each Text.Combine({Text.From([Year], "es-MX"), [Merged]}, "/"), type text),
#"Inserted First Characters2" = Table.AddColumn(#"Inserted Merged Column1", "First Characters.2", each Text.Start([Custom], 6), type text),
#"Split Column by Position" = Table.SplitColumn(#"Inserted First Characters2", "First Characters.2", Splitter.SplitTextByPositions({0, 4}, false), {"First Characters.2.1", "First Characters.2.2"}),
#"Merged Columns" = Table.CombineColumns(#"Split Column by Position",{"First Characters.2.1", "First Characters.2.2"},Combiner.CombineTextByDelimiter("/", QuoteStyle.None),"Merged.3"),
#"Inserted Merged Column2" = Table.AddColumn(#"Merged Columns", "Merged.2", each Text.Combine({Text.From([Year], "es-MX"), "/", [First Characters]}), type text),
#"Replaced Value" = Table.ReplaceValue(#"Inserted Merged Column2",0,7,Replacer.ReplaceValue,{"Day of Week"}),
#"Renamed Columns1" = Table.RenameColumns(#"Replaced Value",{{"Custom", "FechaSK"}, {"Year", "#Año"}, {"Quarter", "#Trimestre"}, {"Month", "#Mes"}, {"Day", "#Día"}, {"Merged", "Trimestre"}, {"Month Name", "Mes"}, {"First Characters", "MesCorto"}, {"Day of Week", "#DíaSemana"}, {"Week of Year", "#SemanaAño"}, {"Week of Month", "#SemanaMes"}, {"End of Week", "CierreSemana"}, {"Day of Year", "#DíaAño"}, {"Day Name", "Día"}, {"First Characters.1", "DíaCorto"}, {"Merged.1", "AñoTrimestre"}, {"Merged.3", "Año#Mes"}, {"Merged.2", "AñoMesCorto"}}),
#"Inserted Start of Month" = Table.AddColumn(#"Renamed Columns1", "Start of Month", each Date.StartOfMonth([Fecha]), type date),
#"Renamed Columns2" = Table.RenameColumns(#"Inserted Start of Month",{{"Start of Month", "InicioMes"}}),
#"Inserted End of Month" = Table.AddColumn(#"Renamed Columns2", "End of Month", each Date.EndOfMonth([Fecha]), type date),
#"Renamed Columns3" = Table.RenameColumns(#"Inserted End of Month",{{"End of Month", "FinMes"}})
in
#"Renamed Columns3"
Ya despues se formatean los datos (fecha y cierre de semana type date, y los que sirven para ordenar por number) y se generan las relaciones en el esquema hacia el campo date
=> Solo se puede marcar una sola tabla calendario por reporte (Buena practica)
Ya luego cambiar para que los campos de texto se ordenen por campos # como hice anteriormente en la calendar dax table
proyecto publicado:
https://app.powerbi.com/view?r=eyJrIjoiZTJjZmFmNGYtZmEwOC00YjQ3LThlZTYtMzhhZjhlZDk4YTBmIiwidCI6IjRjODE4Zjc5LWFiODQtNDU1Mi05YjdjLTJmZTcxNWIwZDBkNSIsImMiOjR9
Power BI Service & Mobile:
!= Productos :
PBI Desktop => Dev (Crea reportes)
PBI Service => Para compartir con otros usuarios o subir a la web (visualizarlos)
PBI Mobile => Visualization
Tipos de licencia:
Free:
Licencia personal, no permite colaborar
Permite crear reportes y publicarlos en el servicio (My Workspace) => Permite crear de cualquier visualizacion que tengamos paneles / dashboard de una sola pagina
Nos permite crear un data gateway (para programar actualizacion a nuestros datos)
Nos deja tener visualizacion (desktop/mobile) a nuestros reportes
Pro(Colaboracion):
Mismas funciones que Free
Multiples workspaces (10 usd por usuario por mes), se pueden compartir acceso
Desde la vista mobile, se puede crear apps
Escenarios y recomendaciones para utilizar cuentas:
Free:
-Visualizar reportes personales sin compartilos con otros
-Publicar en web si no hay problema con confidencialidad de datos
-Almacenar reportes en la nube y verlos en cualquier dispositivo
Pro:
-Modelo de datos <= 1GB
-Permite almacenar hasta 10 gb por espacio de trabajo
-Compartir reportes, dashboards o Apps con otros usuarios
-Colaborar, dataflows, notificaciones, etc para toma de decisiones
-Actualizaciones de datos automaticas calendarizadas
Premium:
-Modelo de datos <= 100 GB
-Capacidad de almacenamiento ilimitada
-Capacidades de almacenamiento mayores y mejor desempeño
-Datamarts, y gobierno de datos(compartir con todo tipo de usuarios)
Los datamarts permiten crear y usar todas las funcionalidades de power bi desde la web/nube (mac, mobile o donde fuera se accede a Power Query)
Publicacion de PBIX en Power BI Service & PBI Service & Workspace features:
Al publicar desde local => archivo .pbix
Se genera:
Conjunto de datos (dataset)
Informe
Un conjunto de datos permite hacer multiples visualizaciones.
Es importante no compartir con usuarios el archivo .pbix (por la informacion confidencial que pueda llegar a tener).
Para actualizar el pbix hay que reemplazar el reporte. Si solo actualizamos la fuente de datos se actualiza el gateway (no es necesario volver a publicar).
Cuando publico el informe en la web, se puede poner una imagen de marcador de posicion , que sale antes de cargar el informe y el usuario debe dar click en ella para que se abra este. Sirve para no hacer lenta la carga del sitio web con el informe.
Desde el engranaje del service de pbi, se pueden administrar los codigos para insertar, para cambiar o remover las url compartidas en la web.
Desde el service, se puede compartir el area de trabajo agregando colaboradores segun permiso deseado, desde admin (crud total, hasta visor (only read)).
A su vez, se puede compartir tanto el informe, como el dataset (desde este ultimo se pueden crear nuevos informes también).
Los marcadores que figuran en el reporte desde el panel superior se aplican solo para ese usuario, y permiten guardar un contexto del reporte para volver a el. Util para el usuario y para reuniones.
Desde el panel de mostrar mas marcadores se modifica para todos (no recomendado para el usuario ). => Deberian estar ocultos
Paneles (Dashboards) desde Power BI Service:
Sirven para tomar visualizaciones de != reportes y consolidarlo en la misma pagina (util para finanzas, KPI globales).
Se pueden crear desde el workspace => nuevo(new) => panel (dashboard)
O desde cualquier reporte , dentro de alguna visualizacion desde anclar
Para sumar visualizaciones al panel(dashboard), tengo que irme a cada reporte y poner en la visualizacion deseada anclar y selecciono el panel creado(se suman con los filtros creados dentro de esa visualizacion si los tienen, es util agregarle el titulo dentro del panel para contextualizar y que no se malinterprete la info). Una vez sumadas, dentro del panel puedo editar la UI, formas y tamaños , también tema del panel.
Se pueden anclar reportes enteros a un panel (desde el reporte voy en la cinta de opciones superior a anclar a un panel)
Panel creado:
https://app.powerbi.com/groups/ad620fb6-86f6-4448-b183-12b784d84330/dashboards/b8b54ea5-442e-4d0f-8076-1443dc7cdc78?experience=power-bi
Para mover informes entre areas de trabajo se crea una copia y se pone en la area de trabajo destino. Solo copia el informe, para el conjunto de datos habria que removerlo y volver a subirlo.
Aplicaciones en Power BI Service:
Desde el area de trabajo => Crear Aplicacion
Es mas intuitivo para el usuario final que compartir un reporte .pbix
Primera app publicada
https://app.powerbi.com/Redirect?action=OpenApp&appId=e2143ec8-544a-49f6-8a34-c8dcec7fe482&ctid=4c818f79-ab84-4552-9b7c-2fe715b0d0d5&experience=power-bi
Suscripciones y vista mobile =>
Vista mobile, se puede crear desde service & desktop, desde 0 se incluye lo que yo quiera, usar elementos anchos es buena practica. Una vez guardado se accede desde celular, es buena practica habilitar opcion multiple porque el celular no tiene ctrl
Suscripciones => Se envia foto con la frecuencia que yo establezca al correo
Configurar alertas:
Aplica por visualización (funciona para tarjeta, medidor y kpi)
Se configuran con un intervalo numerico
RLS (Row level security ):
Se configura desde power bi desktop
Escenario => Filtrar por continente con RLS (Proyecto DAX)
Modelado => Administrar roles
Creo el filtro, hecho en proyecto dax.pbix
Europe Manager => Fact sales [Continent Name] = "Europe"
Guardo, publico el reporte en el servicio.
Desde el powerbi service:
Conjunto de datos => seguridad => me aparecen los roles para incluir a determinadas personas via su correo electronico
Data Gateway:
Desde power bi service, en descargas en la parte superior derecha, me bajo la puerta de enlace de datos (data gateway)
Tengo que poner el = mail que uso en el workspace y en power bi desktop (son =)
Desde el origen de datos o modelo semantico, voy a programar actualizacion:
Editar credenciales => poner organizacional y ya se habilita el refresh. Se puede programar diaria o semanalmente y ver el historial de actualizacion desde esa pestaña
Sin el datagateway, puedo usar un servicio cloud como one drive o drive para subir el xls y que se vaya actualizando automaticamente con cada actuaizacion (se carga como web con el link del xls cloud)
Desde power bi service, area de trabajo en configuracion se puede personalizar distintas funcionalidades a nivel administracion de espacio de trabajo , logos , portadas y permisos
Desde excel me puedo a conectar directamente al conjunto de datos de los reportes con mi misma cuenta que este logueado en Excel.
Con esto puedo crear tablas dinamicas directamente a la fuente de datos de pbi
Puedo acceder a != conjuntos de datos y analizarlos en un mismo archivo Excel
Errores comunes y tips con Power Query:
Tips:
- Definir como tablas los datos en Excel
- Revisar los tipos de datos de los campos
- Renombrar pasos aplicados
- Menos pasos es mejor (mayor rendimiento)
- Query editor (Power Query) para corrección y limpieza de tablas/datos. DAX Para operaciones/cálculos
- Habilitar opciones de pestaña "View" / "Vista" (Barra de formulas siempre visible)
Al usar tablas en excel, si estas se mueven, mientras tome en pbi como tabla me lo va a seguir tomando. Verificar que tome todas las celdas
Cuando uso una carpeta donde ahi se tiran archivos que deberian irse actualizando, selecciono carpeta como origen de datos y pongo combinar y transformar datos.
Una vez ahi, verifico que tome todo. Tips>
Si selecciono de ejemplo una tabla, todas las tablas se deben llamar igual
La estructura de datos de TODOS los archivos debe ser la misma
Si selecciono una hoja, se debe llamar igual en cada archivo también.
Conectar PDF:
Se usa el conector PDF
Cuando las tablas vienen en distinta hoja, para anexar columnas deben ser los encabezados iguales, si no los tiene le saco los encabezados a la que los tenga para normalizar los datos.
Fuentes con diferente formato ejemplo fecha:
Cuando uso el locale/ Usar configuracion regional => debo chequear la configuracion de la computadora (idioma de teclado, de windows , configuracion regional) y la de pbi tanto global como local
Se pone el tipo de dato en origen en el desplegable, y power query lo transforma segun la configuracion que uno tenga en su maquina
Copiar consultas entre reportes (Power query):
Desde editor avanzado me puedo llevar una tabla de un reporte a otro
Tambien desde la consulta => click derecho Copy/Copiar y la pego y funciona
Datasets:
kaggle.com/datasets
Fondos en pptx:
Se diseñan desde estilos, o desde insertar formas , el texto es mas recomendable agregarselo desde pbi
Se guardan como png o jpg y se insertan de fondo en el pbi
Recursos:
flaticon => iconos para el reporte
power bi layout => googlear, ideas para la visual del reporte (idem dashboard layout)
Tips con visualizaciones de matriz:
En Proyecto DAX - Bonus => Matriz ampliada , buenas ideas
Cuando deshabilito los iconos en desktop, impactan en service, no asi en desktop
Tab M2 tiene buena idea de formato condicional por dia en base a colores y margen de utilidad con slicers
Decomposition tree => arbol de visualizacion
Exploratoria
Practica en DAX - Bonus (Tab decomposition tree)
Para la toma de decisiones, saber como esta compuesto un determinado valor/metrica y tener en cuenta sus mayores influencias que lo componentes
Key influencers:
Analizar => medidas / categorias (Es recomendable usar categorias y no medidas)
Explicar por => categorias de alto nivel
Múltiples formas de personalizar interacciones:
En Analytics.pbix => ideas interesantes con bookmarks, fechas y estados que cambian al hacer click. Emulación de la pagina de Analytics de youtube.
Interesantes ideas en youtube idea1, 2 y 3
Actualizaciones de pbi e ideas para los reportes:
Proyecto Tickets Report - Actualizacion 2020-jun.pbix
Tickets de soporte técnico
CURSO Terminado
-----------------------------------------------------------0-----------------------------------------------------------
**Para ver en algun momento**
Playlist para ver en algun momento:
https://www.youtube.com/playlist?list=PLXR1MU_rf6FLumpTjiArxZ_Z3kCCEYSNH
Llegue hasta 1X02 (10')
Bonus - Formato condicional cambiando medidas:
https://www.youtube.com/watch?v=vWsEXytMdmY
Reporte Merx:
Aprende a hacer reporte Merx:
https://www.datdata.com/introduccion
Aprende a crear modelo estrella Merx:
https://youtu.be/RLIORzfMlOU
Reportes de ejemplo publicados:
https://www.datdata.com/ejemplos
Links para profundizar:
https://learn.microsoft.com/es-es/power-bi/consumer/end-user-license
https://learn.microsoft.com/es-es/power-bi/fundamentals/service-features-license-type
https://learn.microsoft.com/es-es/power-bi/enterprise/service-admin-purchasing-power-bi-pro
https://learn.microsoft.com/es-es/power-bi/enterprise/service-premium-what-is
https://learn.microsoft.com/es-es/power-bi/enterprise/service-premium-faq
https://learn.microsoft.com/es-es/power-bi/enterprise/service-premium-per-user-faq
Video para profundizar en metricas y cuadros de mando en PBI Service:
https://www.youtube.com/watch?v=hHFPO9wCLvw