MOD https://interactivechaos.ovh/es es Cálculo del año y mes fiscal correspondientes a cada fecha https://interactivechaos.ovh/es/dax/scenario/calculo-del-ano-y-mes-fiscal-correspondientes-cada-fecha <span class="field field--name-title field--type-string field--label-hidden">Cálculo del año y mes fiscal correspondientes a cada fecha</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mar, 09/07/2019 - 13:01</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>En este escenario partimos de una tabla calendario en la que se incluyen campos para el año y el número de mes:</p> <img alt="Tabla calendario" data-entity-type="file" data-entity-uuid="b61fe087-d3d8-4380-91bb-c1f556178ac0" src="/sites/default/files/inline-images/escenario-dax-0082.png" class="align-center" width="520" height="400" loading="lazy" /><p>El objetivo es añadir una columna con el año fiscal y otra con el mes fiscal. Para esto vamos a suponer que el mes en el que termina el año fiscal es marzo (tercer mes del año), lo que podremos modificar en cada bloque de código fácilmente.</p> <p>Para el cálculo del año fiscal vamos a comparar el mes incluido en cada fila con el mes en el que termina el año fiscal: si es superior, sumaremos 1 al valor del año:</p> <div class="codigo"> <p>FY = <br />     VAR<br />         UltimoMes = 3<br />     RETURN<br />         'Calendar'[Año] + <br />         IF(<br />             MONTH('Calendar'[Date]) &gt; UltimoMes;<br />             1;<br />             0<br />         )</p> </div> <img alt="Calendario con el campo correspondiente al año fiscal" data-entity-type="file" data-entity-uuid="91048b56-9864-408e-b66b-e30f09799deb" src="/sites/default/files/inline-images/escenario-dax-0083.png" class="align-center" width="433" height="434" loading="lazy" /><p>En el código anterior definimos la variable "UltimoMes" con el valor correspondiente al último mes del año fiscal (3) usando la función <a href="/dax/function/var">VAR</a>, y devolvemos el valor del campo <em>Año</em> sumándole 1 o no en función de que el mes de la fecha sea o no superior al último mes del año fiscal. Para esto extraemos el mes de la fecha con la función <a href="/dax/function/month">MONTH</a> y realizamos la comparación con <a href="/dax/function/if">IF</a>. En la imagen anterior se muestran fechas de marzo y abril para ver el salto de un período al otro.</p> <p>Un par de notas interesantes: Los nombres de las variables no pueden contener espacios, guiones, vocales acentuadas... de ahí el nombre de "UltimoMes". Y observa que es posible incrustar una función (IF, en este caso) donde se espera un valor númerico (siempre que la función devuelva un valor adecuado).</p> <p>Para añadir el mes fiscal, podemos restar al mes de la fecha (que extraeremos con la función <a href="/dax/function/month">MONTH</a>) el último mes del año fiscal. Esto devolverá un número positivo para los meses posteriores a éste (abril = 1, mayo = 2...), pero un número negativo o cero para los anteriores (enero = -2, febrero = -1 y marzo = 0). Para solucionar esto podemos simplemente calcular el módulo de la resta y 12 usando la función <a href="/dax/function/mod">MOD</a> y sumando 1 al resultado (el módulo devolverá cero para marzo, por ejemplo):</p> <div class="codigo"> <p>FM = <br />     VAR<br />         UltimoMes = 3<br />     RETURN<br />         MOD(MONTH('Calendar'[Date]) - UltimoMes; 12) + 1</p> </div> <img alt="Calendario con el campo correspondiente al mes fiscal" data-entity-type="file" data-entity-uuid="a3f6c097-0ac4-40e9-bade-3ad0519a03ea" src="/sites/default/files/inline-images/escenario-dax-0084.png" class="align-center" width="486" height="408" loading="lazy" /><p> </p> </div> <div class="field field--name-field-funciones-dax-involucradas field--type-entity-reference field--label-above"> <div class="field__label">Funciones DAX involucradas</div> <div class="field__items"> <div class="field__item"><a href="/es/taxonomy/term/68" hreflang="es">VAR</a></div> <div class="field__item"><a href="/es/taxonomy/term/29" hreflang="es">IF</a></div> <div class="field__item"><a href="/es/taxonomy/term/42" hreflang="es">MONTH</a></div> <div class="field__item"><a href="/es/taxonomy/term/94" hreflang="es">MOD</a></div> </div> </div> Tue, 09 Jul 2019 11:01:19 +0000 admin 1158 at https://interactivechaos.ovh