├── % YTD Respecto PY.dax ├── Acumulado Histórico.dax ├── Alfabeto Occidental.dax ├── BTD Cálculo.dax ├── CTD Cálculo.dax ├── Calemndario Método 2.dax ├── Calendario Extendido.dax ├── Calendario Fiscal ES.txt ├── Calendario Simple.dax ├── Clasificación ABC Dinámico.dax ├── ConstructorDeCalendarioSimple ├── HTD Cálculo.dax ├── Horas_MinutosySegundos.dax ├── IsLeapYear.dax ├── MTD Cálculo.dax ├── PY Cálculo.dax ├── PY Total.dax ├── QTD Cálculo.dax ├── README.md ├── STD Cálculo.dax ├── YTD Cálculo.dax ├── YTD Fiscal.dax └── YTDdPY_Total.dax /% YTD Respecto PY.dax: -------------------------------------------------------------------------------- 1 | % Acumulado Respecto al Total de Año Anterior = 2 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 3 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 4 | // Copie y pegue la expresión desde el propio DAX Studio. 5 | VAR ListaDeFechas = 6 | IF( 7 | HASONEVALUE( Calendario[Año] ) ; 8 | VAR ValorAcumuladoALaFecha = 9 | CALCULATE( 10 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 11 | DATESYTD( Calendario[Fecha] ) 12 | ) 13 | VAR TotalDelAnPasado = 14 | CALCULATE( 15 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 16 | PARALLELPERIOD( 17 | Calendario[Fecha] ; 18 | -1 ; 19 | YEAR 20 | ) 21 | ) 22 | RETURN 23 | DIVIDE( ValorAcumuladoALaFecha ; TotalDelAnPasado ) ; 24 | "Seleccione 1 año" 25 | ) -------------------------------------------------------------------------------- /Acumulado Histórico.dax: -------------------------------------------------------------------------------- 1 | HTD Ingresos = 2 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 3 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 4 | // Copie y pegue la expresión desde el propio DAX Studio. 5 | CALCULATE ( 6 | "REFERENCA_A_TU_MEDIDA_AQUÍ" ; 7 | FILTER ( 8 | ALL ( Calendario[Fecha] ) ; 9 | Calendario[Fecha] <= MAX ( Calendario[Fecha] ) 10 | ) ; 11 | ALL ( Calendario ) 12 | ) -------------------------------------------------------------------------------- /Alfabeto Occidental.dax: -------------------------------------------------------------------------------- 1 | Alfabeto Occidental = 2 | SELECTCOLUMNS( 3 | GENERATESERIES( 4 | UNICODE("a"); 5 | UNICODE("z") 6 | ); 7 | "Letra"; 8 | UNICHAR([Value]) 9 | ) -------------------------------------------------------------------------------- /BTD Cálculo.dax: -------------------------------------------------------------------------------- 1 | BTD Cálculo = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | CALCULATE ( 15 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 16 | FILTER ( 17 | ALL ( Calendario ); 18 | Calendario[Fecha] <= MAX ( Calendario[Fecha] ) 19 | && YEAR ( Calendario[Fecha] ) = YEAR ( MAX ( Calendario[Fecha] ) ) 20 | && ROUNDUP ( MONTH ( Calendario[Fecha] ) / 2; 0 ) 21 | = MAX ( Calendario[Bimestre] ) 22 | ); 23 | ALL ( Calendario ) 24 | ) -------------------------------------------------------------------------------- /CTD Cálculo.dax: -------------------------------------------------------------------------------- 1 | CTD Cálculo = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | CALCULATE ( 15 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 16 | FILTER ( 17 | ALL ( Calendario ); 18 | Calendario[Fecha] <= MAX ( Calendario[Fecha] ) 19 | && YEAR ( Calendario[Fecha] ) = YEAR ( MAX ( Calendario[Fecha] ) ) 20 | && ROUNDUP ( MONTH ( Calendario[Fecha] ) / 4; 0 ) 21 | = MAX ( Calendario[Cuatrimestre] ) 22 | ); 23 | ALL ( Calendario ) 24 | ) -------------------------------------------------------------------------------- /Calemndario Método 2.dax: -------------------------------------------------------------------------------- 1 | Calendario = 2 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 3 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 4 | // Copie y pegue la expresión desde el propio DAX Studio. 5 | VAR ListaDeFechas = 6 | CALENDAR( 7 | DATE( 8 | YEAR ( MIN( "ESCRIBA_AQUÍ_SU_COLUMNA_CON_LA_FECHA_MÁS_PEQUEÑA" ) ) ; 9 | 1 ; 10 | 1 11 | ) ; 12 | DATE( 13 | YEAR( MAX( "ESCRIBA_AQUÍ_SU_COLUMNA_CON_LA_FECHA_MÁS_GRANDE" ) ) ; 14 | 12 ; 15 | 31 16 | ) 17 | ) 18 | // CALENDARAUTO () 19 | RETURN 20 | GENERATE ( 21 | ListaDeFechas; 22 | VAR Fecha = [Date] 23 | VAR An = 24 | YEAR ( Fecha ) 25 | VAR Trimestre = 26 | QUARTER ( Fecha ) 27 | VAR TrimestrePrefijo = 28 | "Trimestre" & QUARTER ( Fecha ) 29 | VAR MesNumero = 30 | MONTH ( Fecha ) 31 | VAR MesNombre = 32 | FORMAT ( Fecha; "mmmm" ) 33 | VAR DSNumero = 34 | WEEKDAY ( Fecha; 2 ) 35 | VAR DSNombre = 36 | FORMAT ( Fecha; "dddd" ) 37 | VAR Dia = 38 | DAY( Fecha ) 39 | VAR Semana = 40 | WEEKNUM( Fecha ) 41 | RETURN 42 | ROW ( 43 | "Año"; An; 44 | "Trimestre"; Trimestre; 45 | "Trimestre Prefijo"; TrimestrePrefijo; 46 | "Mes Número"; MesNumero; 47 | "Mes Nombre"; MesNombre; 48 | "DS Número"; DSNumero; 49 | "DS Nombre"; DSNombre ; 50 | "Día"; Dia ; 51 | "Semana" ; Semana 52 | ) 53 | ) 54 | -------------------------------------------------------------------------------- /Calendario Extendido.dax: -------------------------------------------------------------------------------- 1 | Calendario = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2 (Si es requerido): 9 | // 10 | // Reemplace → "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_PEQUEÑA" por el nombre de la columna en tu modelo de datos 11 | // De la cual deseas considerar la fecha más pequeña, ejemplo: Pedidos[Fecha de Envio] 12 | // Lo propio con → "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_GRANDE" 13 | // 14 | // * Realice los cambios en nombres de campos que correspondan 15 | VAR ListaDeFechas = 16 | CALENDARAUTO () 17 | /* 18 | CALENDAR( 19 | DATE( 20 | YEAR ( MIN( "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_PEQUEÑA" ) ) ; 21 | 1 ; 22 | 1 23 | ) ; 24 | DATE( 25 | YEAR( MAX( "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_GRANDE" ) ) ; 26 | 12 ; 27 | 31 28 | ) 29 | ) 30 | */ 31 | VAR ListsDeFechasNuevoNombre = 32 | SELECTCOLUMNS( 33 | ListaDeFechas ; 34 | "Fecha" ; 35 | [Date] 36 | ) 37 | RETURN 38 | GENERATE ( 39 | ListsDeFechasNuevoNombre; 40 | VAR Fecha = 41 | [Fecha] 42 | VAR An = 43 | YEAR ( Fecha ) 44 | VAR Semestre = 45 | IF( 46 | MONTH( Fecha ) <= 6 ; 47 | 1 ; 48 | 2 49 | ) 50 | VAR SemestrePrefijo = 51 | "Semestre " & 52 | IF( 53 | MONTH( Fecha ) <= 6 ; 54 | 1 ; 55 | 2 56 | ) 57 | VAR Cuatrimestre = 58 | ROUNDUP( 59 | DIVIDE( 60 | MONTH( Fecha ) ; 61 | 4 62 | ) ; 63 | 0 64 | ) 65 | VAR CuatrimestrePrefijo = 66 | "Cuatrimestre " & 67 | ROUNDUP( 68 | DIVIDE( 69 | MONTH( Fecha ) ; 70 | 4 71 | ) ; 72 | 0 73 | ) 74 | VAR Trimestre = 75 | -- Si la columna Trimestre te presenta error, por favor utiliza la siguiente función: INT ( FORMAT ( Fecha ; "q" ) ) 76 | QUARTER ( Fecha ) 77 | VAR TrimestrePrefijo = 78 | -- Si la columna Trimestre Prefijo te presenta error, por favor utiliza la siguiente función: "Trimestre " & FORMAT ( Fecha ; "q" ) 79 | "Trimestre " & QUARTER ( Fecha ) 80 | VAR Bimestre = 81 | ROUNDUP( 82 | DIVIDE( 83 | MONTH( Fecha ) ; 84 | 2 85 | ) ; 86 | 0 87 | ) 88 | VAR BimestrePrefijo = 89 | "Bimestre" & 90 | ROUNDUP( 91 | DIVIDE( 92 | MONTH( Fecha ) ; 93 | 2 94 | ) ; 95 | 0 96 | ) 97 | VAR MesNumero = 98 | MONTH ( Fecha ) 99 | VAR MesNombre = 100 | FORMAT ( Fecha; "mmmm" ) 101 | VAR MesNombreMayuscula = 102 | ( 103 | VAR PrimeraLetra = 104 | LEFT( FORMAT ( Fecha; "mmmm" ) ) 105 | VAR PrimeraLetraEnMayuscula = 106 | UPPER( PrimeraLetra ) 107 | VAR SegundaLetraEnAdelante = 108 | MID( 109 | FORMAT ( Fecha; "mmmm" ) ; 110 | 2 ; 111 | LEN( FORMAT ( Fecha; "mmmm" ) ) 112 | ) 113 | VAR MesPrimeraLetraEnMayuscula = 114 | PrimeraLetraEnMayuscula & SegundaLetraEnAdelante 115 | RETURN 116 | MesPrimeraLetraEnMayuscula 117 | ) 118 | VAR DSNumero = 119 | WEEKDAY ( Fecha; 2 ) 120 | VAR DSNombre = 121 | FORMAT ( Fecha; "dddd" ) 122 | VAR Dia = 123 | DAY( Fecha ) 124 | VAR Semana = 125 | WEEKNUM( Fecha ) 126 | -- Estas son columnas técnicas, por lo que debería ocultarse en la vista de informe 127 | -- Para más información sobre columnas técnicas: https://www.excelfreeblog.com/tablas-de-calendario-porque-son-la-bomba/ 128 | VAR AnMesNumero = 129 | YEAR( Fecha ) * 100 + MONTH( Fecha ) 130 | VAR AnTrimestreNumero = 131 | YEAR( Fecha ) * 100 + QUARTER( Fecha ) 132 | RETURN 133 | ROW ( 134 | "Año"; An; 135 | "Semestre" ; Semestre ; 136 | "Semestre Prefijo" ; SemestrePrefijo ; 137 | "Cuatrimestre" ; Cuatrimestre ; 138 | "Cuatrimestre Prefijo" ; CuatrimestrePrefijo ; 139 | "Trimestre"; Trimestre ; 140 | "Trimestre Prefijo"; TrimestrePrefijo ; 141 | "Bimestre" ; Bimestre ; 142 | "Bimestre Prefijo" ; BimestrePrefijo ; 143 | "Mes Número"; MesNumero ; 144 | "Mes Nombre"; MesNombre ; 145 | "Mes Nombre Mayus" ; MesNombreMayuscula ; 146 | "DS Número"; DSNumero ; 147 | "DS Nombre"; DSNombre ; 148 | "Día"; Dia ; 149 | "Semana" ; Semana ; 150 | -- Estas son columnas técnicas, por lo que debería ocultarse en la vista de informe 151 | -- Para más información sobre columnas técnicas: https://www.excelfreeblog.com/tablas-de-calendario-porque-son-la-bomba/ 152 | "Año Mes Número" ; AnMesNumero ; 153 | "Año Trimestre Número" ; AnTrimestreNumero 154 | ) 155 | ) -------------------------------------------------------------------------------- /Calendario Fiscal ES.txt: -------------------------------------------------------------------------------- 1 | Calendario Fiscal = 2 | VAR FirstFiscalMonth = 3 -- First month of the fiscal year 3 | VAR FirstDayOfWeek = 0 -- 0 = Sunday, 1 = Monday, ... 4 | VAR FirstSalesDate = 5 | MIN ( Pedidos[Fecha de Pedido] ) 6 | VAR LastSalesDate = 7 | MAX ( Pedidos[Fecha de Llegada] ) 8 | VAR FirstFiscalYear = 9 | -- Customizes the first fiscal year to use 10 | YEAR ( FirstSalesDate ) 11 | + 1 12 | * ( 13 | MONTH ( FirstSalesDate ) >= FirstFiscalMonth 14 | && FirstFiscalMonth > 1 15 | ) 16 | VAR LastFiscalYear = 17 | -- Customizes the last fiscal year to use 18 | YEAR ( LastSalesDate ) 19 | + 1 20 | * ( 21 | MONTH ( LastSalesDate ) >= FirstFiscalMonth 22 | && FirstFiscalMonth > 1 23 | ) 24 | RETURN 25 | GENERATE ( 26 | VAR FirstDay = 27 | DATE ( FirstFiscalYear - 1 * ( FirstFiscalMonth > 1 ), FirstFiscalMonth, 1 ) 28 | VAR LastDay = 29 | DATE ( LastFiscalYear + 1 * ( FirstFiscalMonth = 1 ), FirstFiscalMonth, 1 ) - 1 30 | RETURN 31 | CALENDAR ( FirstDay, LastDay ), 32 | VAR CurrentDate = [Date] 33 | VAR Yr = 34 | YEAR ( CurrentDate ) -- Year Number 35 | VAR Mn = 36 | MONTH ( CurrentDate ) -- Month Number (1-12) 37 | VAR Mdn = 38 | DAY ( CurrentDate ) -- Day of Month 39 | VAR DateKey = Yr * 10000 + Mn * 100 + Mdn 40 | VAR Wd = 41 | -- Weekday Number (0 = Sunday, 1 = Monday, ...) 42 | WEEKDAY ( 43 | CurrentDate + 7 - FirstDayOfWeek, 44 | 1 45 | ) 46 | VAR WorkingDay = 47 | -- Working Day (1 = working, 0 = non-working) 48 | ( 49 | WEEKDAY ( CurrentDate, 1 ) IN { 2, 3, 4, 5, 6 } 50 | ) 51 | VAR Fyr = -- Fiscal Year Number 52 | Yr + 1 * ( FirstFiscalMonth > 1 53 | && Mn >= FirstFiscalMonth ) 54 | VAR Fmn = -- Fiscal Month Number (1-12) 55 | Mn - FirstFiscalMonth + 1 + 12 * ( Mn < FirstFiscalMonth ) 56 | VAR Fqrn = 57 | -- Fiscal Quarter (string) 58 | ROUNDUP ( Fmn / 3, 0 ) 59 | VAR Fmqn = 60 | MOD ( FMn - 1, 3 ) + 1 61 | VAR Fqr = 62 | -- Fiscal Quarter (string) 63 | FORMAT ( Fqrn, "\Q0" ) 64 | VAR FirstDayOfYear = 65 | DATE ( Fyr - 1 * ( FirstFiscalMonth > 1 ), FirstFiscalMonth, 1 ) 66 | VAR Fydn = 67 | SUMX ( 68 | CALENDAR ( FirstDayOfYear, CurrentDate ), 69 | 1 70 | * ( 71 | MONTH ( [Date] ) <> 2 72 | || DAY ( [Date] ) <> 29 73 | ) 74 | ) 75 | RETURN 76 | ROW ( 77 | "DateKey", INT ( DateKey ), 78 | "Sequential Day Number", INT ( [Date] ), 79 | "Year Month", FORMAT ( CurrentDate, "mmm yyyy" ), 80 | "Year Month Number", 81 | Yr * 12 + Mn - 1, 82 | "Fiscal Year", "FY " & Fyr, 83 | "Fiscal Year Number", Fyr, 84 | "Fiscal Year Quarter", 85 | "F" & Fqr & "-" & Fyr, 86 | "Fiscal Year Quarter Number", 87 | CONVERT ( Fyr * 4 + FQrn - 1, INTEGER ), 88 | "Fiscal Quarter", "F" & Fqr, 89 | "Month", FORMAT ( CurrentDate, "mmm" ), 90 | "Fiscal Month Number", Fmn, 91 | "Fiscal Month in Quarter Number", Fmqn, 92 | "Day of Week", FORMAT ( CurrentDate, "ddd" ), 93 | "Day of Week Number", Wd, 94 | "Day of Month Number", Mdn, 95 | "Day of Fiscal Year Number", Fydn, 96 | "Working Day", IF ( WorkingDay, "Working Day", "Non-Working Day" ) 97 | ) 98 | ) 99 | -------------------------------------------------------------------------------- /Calendario Simple.dax: -------------------------------------------------------------------------------- 1 | Calendario = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2 (Si es requerido): 9 | // 10 | // Reemplace → "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_PEQUEÑA" por el nombre de la columna en tu modelo de datos 11 | // De la cual deseas considerar la fecha más pequeña, ejemplo: Pedidos[Fecha de Envio] 12 | // Lo propio con → "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_GRANDE" 13 | // 14 | // * Realice los cambios en nombres de campos que correspondan 15 | VAR ListaDeFechas = 16 | CALENDARAUTO () 17 | /* 18 | CALENDAR( 19 | DATE( 20 | YEAR ( MIN( "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_PEQUEÑA" ) ) ; 21 | 1 ; 22 | 1 23 | ) ; 24 | DATE( 25 | YEAR( MAX( "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_GRANDE" ) ) ; 26 | 12 ; 27 | 31 28 | ) 29 | ) 30 | */ 31 | VAR ListsDeFechasNuevoNombre = 32 | SELECTCOLUMNS( 33 | ListaDeFechas ; 34 | "Fecha" ; 35 | [Date] 36 | ) 37 | RETURN 38 | GENERATE ( 39 | ListsDeFechasNuevoNombre; 40 | VAR Fecha = 41 | [Fecha] 42 | VAR An = 43 | YEAR ( Fecha ) 44 | VAR Trimestre = 45 | -- Si la columna Trimestre te presenta error, por favor utiliza la siguiente función: INT ( FORMAT ( Fecha ; "q" ) ) 46 | QUARTER ( Fecha ) 47 | VAR TrimestrePrefijo = 48 | -- Si la columna Trimestre Prefijo te presenta error, por favor utiliza la siguiente función: "Trimestre " & FORMAT ( Fecha ; "q" ) 49 | "Trimestre " & QUARTER ( Fecha ) 50 | VAR MesNumero = 51 | MONTH ( Fecha ) 52 | VAR MesNombre = 53 | FORMAT ( Fecha; "mmmm" ) 54 | VAR DSNumero = 55 | WEEKDAY ( Fecha; 2 ) 56 | VAR DSNombre = 57 | FORMAT ( Fecha; "dddd" ) 58 | VAR Dia = 59 | DAY( Fecha ) 60 | VAR Semana = 61 | WEEKNUM( Fecha ) 62 | RETURN 63 | ROW ( 64 | "Año"; An; 65 | "Trimestre"; Trimestre ; 66 | "Trimestre Prefijo"; TrimestrePrefijo ; 67 | "Mes Número"; MesNumero ; 68 | "Mes Nombre"; MesNombre ; 69 | "DS Número"; DSNumero ; 70 | "DS Nombre"; DSNombre ; 71 | "Día"; Dia ; 72 | "Semana" ; Semana 73 | ) 74 | ) -------------------------------------------------------------------------------- /Clasificación ABC Dinámico.dax: -------------------------------------------------------------------------------- 1 | Clasificación ABC = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Aplique la combinación Ctrl + Shift + L y reemplaze a necesidad. 6 | // 7 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), otra opción: 8 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 9 | // Copie y pegue la expresión desde el propio DAX Studio. 10 | // 11 | // ----------------------------------------- 12 | // ----------- | INSTRUCCIONES | ----------- 13 | // ----------------------------------------- 14 | // 15 | VAR A_Porcentaje = 16 | 0,7 17 | // Escriba aquí el porcentaje que representa la categoría A, es decir, 18 | // Si los productos en la categoría A representan el 70% de los ingresos, 19 | // Deje el valor 0,7. De lo contrario cambiar a necesidad. 20 | VAR B_Porcentaje = 21 | 0,2 22 | // Escriba aquí el porcentaje que representa la categoría B, es decir, 23 | // Si los productos en la categoría representa el 20% de los ingresos, 24 | // Deje el valor 0,7. De lo contrario cambiar a necesidad 25 | 26 | // Reemplace → "CAMPO_CON_ID_PRODUCTO_EN_TABLA_DE_BÚSQUEDA" por la referencia a la columna que 27 | // Contiene la lista de productos o elementos a determinar la categoría ABC, importante, 28 | // Para un correcto funcionamiento debe pertenecer a una tabla de búsqueda, ejemplo: 29 | // SKUProdcutos[SKU] 30 | // 31 | // Reemplace → "CAMPO_CON_VALORES_EN_TABLA_DE_HECHOS" por la referencia a la columna que 32 | // Contiene los ingresos, costos, unidades, etc. Etc. Importante, 33 | // Para un correcto funcionamiento debe pertenecer a una tabla de transaccional, ejemplo: 34 | // Pedidos[Ingresos] 35 | 36 | RETURN 37 | IF( 38 | HASONEVALUE( "CAMPO_CON_ID_PRODUCTO_EN_TABLA_DE_BÚSQUEDA" ) ; 39 | 40 | // Lista De Productos y Producto Acutal 41 | VAR SKUActual = 42 | VALUES( "CAMPO_CON_ID_PRODUCTO_EN_TABLA_DE_BÚSQUEDA" ) 43 | VAR ListaDeSKUs = 44 | ALL( "CAMPO_CON_ID_PRODUCTO_EN_TABLA_DE_BÚSQUEDA" ) 45 | 46 | // Tabla con Ingresos por producto e Ingresos Total (Según filtros externos) 47 | VAR ListaDeSKUsConIng = 48 | ADDCOLUMNS( 49 | ListaDeSKUs ; 50 | "@IngTot" ; 51 | CALCULATE( 52 | SUM( "CAMPO_CON_VALORES_EN_TABLA_DE_HECHOS" ) ; 53 | REMOVEFILTERS( "CAMPO_CON_ID_PRODUCTO_EN_TABLA_DE_BÚSQUEDA" ) 54 | ) ; 55 | "@IngxPrdct" ; 56 | CALCULATE( SUM( "CAMPO_CON_VALORES_EN_TABLA_DE_HECHOS" ) ) 57 | ) 58 | 59 | // Determinación de Incrementos 60 | VAR ListaDeSKUsconIncrementos = 61 | ADDCOLUMNS( 62 | ListaDeSKUsConIng ; 63 | "@IncIng" ; 64 | SUMX( 65 | VAR IngAcutal = [@IngxPrdct] 66 | RETURN 67 | FILTER( 68 | ListaDeSKUsConIng ; 69 | [@IngxPrdct] >= IngAcutal 70 | ) ; 71 | [@IngxPrdct] 72 | ) 73 | ) 74 | 75 | // Determinación de Porcentaje de Incremento 76 | VAR ListaDeSKUsConPorcentajes = 77 | ADDCOLUMNS( 78 | ListaDeSKUsconIncrementos ; 79 | "@PctInc" ; 80 | DIVIDE( 81 | [@IncIng] ; 82 | [@IngTot] 83 | ) 84 | ) 85 | 86 | // Aginación de Categoría A, B o C 87 | VAR CategoriaABC = 88 | ADDCOLUMNS( 89 | ListaDeSKUsConPorcentajes ; 90 | "@ABC" ; 91 | SWITCH( 92 | TRUE() ; 93 | [@PctInc] <= A_Porcentaje ; "A" ; 94 | [@PctInc] <= A_Porcentaje + B_Porcentaje ; "B" ; 95 | "C" 96 | ) 97 | ) 98 | 99 | // Selección de Categoría Actual según el contexto dde filtro original 100 | VAR SeleccionDeCategoria = 101 | SELECTCOLUMNS( 102 | FILTER( 103 | CategoriaABC ; 104 | "CAMPO_CON_ID_PRODUCTO_EN_TABLA_DE_BÚSQUEDA" = SKUActual 105 | ) ; 106 | "ABC_Seleccionado" ; 107 | [@ABC] 108 | ) 109 | 110 | RETURN 111 | SeleccionDeCategoria ; 112 | 113 | BLANK() 114 | 115 | ) -------------------------------------------------------------------------------- /ConstructorDeCalendarioSimple: -------------------------------------------------------------------------------- 1 | Calendario = 2 | -- Punto No. 1: 3 | -- 4 | -- Si necesitas cambiar el separador de lista de esta expresión de Coma (,) a Coma ;), por favor: 5 | -- Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | -- Copie y pegue la expresión desde el propio DAX Studio. 7 | -- 8 | -- Punto No. 2 (Si es requerido): 9 | -- 10 | -- Reemplace → "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_PEQUEÑA" por el nombre de la columna en tu modelo de datos 11 | -- De la cual deseas considerar la fecha más pequeña, ejemplo: Pedidos[Fecha de Envio] 12 | -- Lo propio con → "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_GRANDE" 13 | -- 14 | -- * Realice los cambios en nombres de campos que correspondan 15 | VAR ListaDeFechas = 16 | CALENDARAUTO () 17 | /* 18 | CALENDAR( 19 | DATE( 20 | YEAR ( MIN( "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_PEQUEÑA" ) ) , 21 | 1 , 22 | 1 23 | ) , 24 | DATE( 25 | YEAR( MAX( "NOMBRE_DE_LA_COLUMNA_CON_LA_FECHA_MÁS_GRANDE" ) ) , 26 | 12 , 27 | 31 28 | ) 29 | ) 30 | */ 31 | VAR ListsDeFechasNuevoNombre = 32 | SELECTCOLUMNS( 33 | ListaDeFechas , 34 | "Fecha" , 35 | [Date] 36 | ) 37 | RETURN 38 | GENERATE ( 39 | ListsDeFechasNuevoNombre, 40 | VAR Fecha = 41 | [Fecha] 42 | VAR An = 43 | YEAR ( Fecha ) 44 | VAR Trimestre = 45 | -- Si la columna Trimestre te presenta error, por favor utiliza la siguiente función: INT ( FORMAT ( Fecha , "q" ) ) 46 | QUARTER ( Fecha ) 47 | VAR TrimestrePrefijo = 48 | -- Si la columna Trimestre Prefijo te presenta error, por favor utiliza la siguiente función: "Trimestre " & FORMAT ( Fecha , "q" ) 49 | "Trimestre " & QUARTER ( Fecha ) 50 | VAR MesNumero = 51 | MONTH ( Fecha ) 52 | VAR MesNombre = 53 | FORMAT ( Fecha, "mmmm" ) 54 | VAR DSNumero = 55 | WEEKDAY ( Fecha, 2 ) 56 | VAR DSNombre = 57 | FORMAT ( Fecha, "dddd" ) 58 | VAR Dia = 59 | DAY( Fecha ) 60 | VAR Semana = 61 | WEEKNUM( Fecha ) 62 | RETURN 63 | ROW ( 64 | "Año", An, 65 | "Trimestre", Trimestre , 66 | "Trimestre Prefijo", TrimestrePrefijo , 67 | "Mes Número", MesNumero , 68 | "Mes Nombre", MesNombre , 69 | "DS Número", DSNumero , 70 | "DS Nombre", DSNombre , 71 | "Día", Dia , 72 | "Semana" , Semana 73 | ) 74 | ) 75 | -------------------------------------------------------------------------------- /HTD Cálculo.dax: -------------------------------------------------------------------------------- 1 | HTD Ingresos = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | CALCULATE ( 15 | "REFERENCA_A_TU_MEDIDA_AQUÍ" ; 16 | FILTER ( 17 | ALL ( Calendario[Fecha] ) ; 18 | Calendario[Fecha] <= MAX ( Calendario[Fecha] ) 19 | ) ; 20 | ALL ( Calendario ) 21 | ) -------------------------------------------------------------------------------- /Horas_MinutosySegundos.dax: -------------------------------------------------------------------------------- 1 | Horas_MinutosySegundos = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | VAR Horas = 8 | SELECTCOLUMNS ( GENERATESERIES ( 1; 12; 1 ); "Hora"; [Value] ) 9 | VAR Minutos = 10 | SELECTCOLUMNS ( GENERATESERIES ( 0; 59; 1 ); "Minutos"; [Value] ) 11 | VAR Segundos = 12 | SELECTCOLUMNS ( GENERATESERIES ( 0; 59; 1 ); "Segundos"; [Value] ) 13 | VAR Periodo = 14 | SELECTCOLUMNS ( { ( "AM" );( "PM" ) }; "AM/PM"; [Value] ) 15 | VAR HorasMinutos = 16 | GENERATEALL ( Horas; Minutos ) 17 | VAR HorasMinutosSegundos = 18 | GENERATEALL ( HorasMinutos; Segundos ) 19 | VAR HoraMinutosSegundosAMPM = 20 | GENERATEALL ( HorasMinutosSegundos; Periodo ) 21 | VAR ColumnaDeTiempo = 22 | SELECTCOLUMNS ( 23 | ADDCOLUMNS ( 24 | HoraMinutosSegundosAMPM; 25 | "Tiempo"; TIMEVALUE ( 26 | FORMAT ( [Hora]; "00" ) & ":" 27 | & FORMAT ( [Minutos]; "00" ) & ":" 28 | & FORMAT ( [Segundos]; "00" ) & " " & [AM/PM] 29 | ) 30 | ); 31 | "Tiempo"; [Tiempo] 32 | ) 33 | RETURN 34 | ADDCOLUMNS( 35 | ColumnaDeTiempo ; 36 | "Hora" ; HOUR( [Tiempo] ) ; 37 | "Minutos" ; MINUTE( [Tiempo] ) ; 38 | "Segundos" ; SECOND( [Tiempo] ) 39 | ) -------------------------------------------------------------------------------- /IsLeapYear.dax: -------------------------------------------------------------------------------- 1 | IsLeapYear = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | IF ( 15 | HASONEVALUE ( Calendario[Año] ); 16 | VAR AnSeleccionado = 17 | INT ( VALUES ( Calendario[Año] ) ) 18 | VAR DivisibleEn4 = 19 | MOD ( AnSeleccionado; 4 ) = 0 20 | VAR DivisibleEn100 = 21 | MOD ( AnSeleccionado; 100 ) = 0 22 | VAR DivisibleEn400 = 23 | MOD ( AnSeleccionado; 400 ) = 0 24 | VAR EsAnBisiesto = 25 | IF ( 26 | ( DivisibleEn4 && NOT ( DivisibleEn100 ) ) 27 | || DivisibleEn400; 28 | TRUE (); 29 | FALSE () 30 | ) 31 | RETURN 32 | EsAnBisiesto 33 | ) -------------------------------------------------------------------------------- /MTD Cálculo.dax: -------------------------------------------------------------------------------- 1 | MTD Cálculo = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | CALCULATE( 15 | [Ingresos Tot] ; 16 | DATESMTD( 17 | Calendario[Fecha] 18 | ) 19 | ) -------------------------------------------------------------------------------- /PY Cálculo.dax: -------------------------------------------------------------------------------- 1 | PY Cálculo = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | CALCULATE( 15 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 16 | DATEADD( 17 | Calendario[Fecha] ; 18 | -1 ; 19 | YEAR 20 | ) 21 | ) -------------------------------------------------------------------------------- /PY Total.dax: -------------------------------------------------------------------------------- 1 | PY Total = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | IF( 15 | HASONEVALUE( Calendario[Año] ) ; 16 | CALCULATE( 17 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 18 | PARALLELPERIOD( 19 | Calendario[Fecha] ; 20 | -1 ; 21 | YEAR 22 | ) 23 | ) 24 | ) -------------------------------------------------------------------------------- /QTD Cálculo.dax: -------------------------------------------------------------------------------- 1 | QTD Cálculo = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | IF( 15 | HASONEVALUE( Calendario[Mes Nombre] ) ; 16 | CALCULATE( 17 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 18 | DATESQTD( Calendario[Fecha] ) 19 | ) 20 | ) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RecetasDAX 2 | Recetas del Lenguaje DAX para Copiar y Pegar 3 | -------------------------------------------------------------------------------- /STD Cálculo.dax: -------------------------------------------------------------------------------- 1 | STD Cálculo = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | CALCULATE ( 15 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 16 | FILTER ( 17 | ALL ( Calendario ); 18 | Calendario[Fecha] <= MAX ( Calendario[Fecha] ) 19 | && YEAR ( Calendario[Fecha] ) = YEAR ( MAX ( Calendario[Fecha] ) ) 20 | && ROUNDUP ( MONTH ( Calendario[Fecha] ) / 6; 0 ) 21 | = MAX ( Calendario[Semestre] ) 22 | ); 23 | ALL ( Calendario ) 24 | ) 25 | -------------------------------------------------------------------------------- /YTD Cálculo.dax: -------------------------------------------------------------------------------- 1 | YTD Cálculo = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | IF( 15 | HASONEVALUE( Calendario[Año] ) ; 16 | CALCULATE( 17 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 18 | DATESYTD( 19 | Calendario[Fecha] 20 | ) 21 | ) ; 22 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" 23 | ) 24 | -------------------------------------------------------------------------------- /YTD Fiscal.dax: -------------------------------------------------------------------------------- 1 | YTD Fiscal = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | CALCULATE( 15 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 16 | DATESYTD( 17 | Calendario[Fecha] ; 18 | // Modifciar el final del año aquí, con la escritura: MM-YY 19 | "06-30" 20 | ) 21 | ) -------------------------------------------------------------------------------- /YTDdPY_Total.dax: -------------------------------------------------------------------------------- 1 | YTD/PY_Total = 2 | // Punto No. 1: 3 | // 4 | // Si necesitas cambiar el separador de lista de esta expresión de Punto y Coma (;) a Coma (,), por favor: 5 | // Abra este archivo con DAX Studio (https://daxstudio.org/) y utilce el comando: Swap Delimertes y luego 6 | // Copie y pegue la expresión desde el propio DAX Studio. 7 | // 8 | // Punto No. 2: 9 | // 10 | // Reemplace → "REFERENCIA_A_TU_MEDIDA_AQUÍ" por la referencia a la medida que desea acumular, ejemplo: 11 | // [Ingresos Tot] 12 | // 13 | // * Realice los cambios en nombres de campos que correspondan 14 | VAR YTD_Calculo = 15 | CALCULATE( 16 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 17 | DATESYTD( Calendario[Fecha] ) 18 | ) 19 | VAR PYTotal_Calculo = 20 | IF( 21 | HASONEVALUE( Calendario[Año] ) ; 22 | CALCULATE( 23 | "REFERENCIA_A_TU_MEDIDA_AQUÍ" ; 24 | PARALLELPERIOD( 25 | Calendario[Fecha] ; 26 | -1 ; 27 | YEAR 28 | ) 29 | ) 30 | ) 31 | VAR Seguimiento = 32 | DIVIDE( 33 | YTD_Calculo ; 34 | PYTotal_Calculo 35 | ) 36 | RETURN 37 | Seguimiento --------------------------------------------------------------------------------