Inteligencia de tiempo

  • alainlugo
    Participante

      Buenas tardes Estimados, espero se encuentren muy bien, en esta oportunidad me gustaría hacer una consulta en cuanto a las opciones de Inteligencia de Tiempo, este es un tema fundamental en los procesos de análisis de datos y nos pone muy creativos, paso a explicar la duda,  tengo una tabla calendario con días laborales, feriados, temporadas de vacaciones, etc, y quise hacer el calculo de LY  utilizando la función de SAMEPERIODLASYEAR,
      (Ventas LY = CALCULATE([Venta], SAMEPERIODLASTYEAR(Dates[Date]))

      Pero cuando tengo un segmentador seleccionando fechas como jueves santo, viernes santo o lunes de carnaval y martes de carnaval los resultados que me devuelve no son los correspondientes a estas fechas ya que cuando busca el valor del año pasado ese valor corresponde al mismo día pero las fechas de semana santa o carnavales son diferentes, intente condicionar el calculo utilizando las funciones de FILTER y KEEPFILTER pero no obtuve resultado de hecho en la primera me salía un error y en la segunda me salía en blanco la tabla, ahora también tengo la duda si la función sameperiodlastyear es la que debo utilizar?

      Seria de gran ayuda si podrían guiarme a solventar esta inquietud,

      De antemano gracias por la atencion,

      Saludos

    • alainlugo
      Participante

        Buenas noches estimados, luego de realizar varias pruebas pude obtener el valor esperado, a continuacion les comparto el codigo DAX

        Ventas LY HolidayName =

        CALCULATE([Ventas],

            FILTER( ALL(Dates),

            Dates[HolidayID] = SELECTEDVALUE(Dates[HolidayID]) && Dates[Year] = SELECTEDVALUE(Dates[Year]) -1))

        DAX

        Con esto puedo obtener el valor esperado para cualquier feriado, con los valores de las fechas correspondientes, asi como muestra la imagen, ahora el inconveniente es que no puedo obtener el total , es decir solo tengo el total de ventas (6.860), tienen alguna sugerencia de que debo agregar al codigo para obtener los totales,

         

        Saludos,

         

         

        dlom
        Participante

          Está genial la fórmula que creaste Alain!

          Con respecto a la duda, a qué totales te refieres? Porque sí se ve el total en la tabla (6860). ¿Te refieres al total de las otras columnas, al total del año pasado, de otros cálculos o a cuál?

          Estoy atento.

          alainlugo
          Participante

            Gracias Estimado, esto ayuda a poder definir las nuevas estrategias de ventas de los holidays,  espero que le pueda servir este calculo a alguna persona de la comunidad, en cuanto a los totales me refiero al total de la otras columnas, solo pude obtener el de las ventas que es 6860, con el total de las otras columnas podria ver las variaciones totales en esos periodos de holidays y asi obtener un vision completa,  estuve revisando en formato del objeto visual y no encontre opcion,

            Nuevamente de antemano gracias por la colaboracion,

            Saludos

            dlom
            Participante

              Como ya tienes la lógica para la medida, para hacerlo para las otras columnas, simplemente tienes que cambiar esta parte en tu fórmula con la medida que quieres comparar:

               

              De hecho este cambio lo vemos en el minuto 5:00 de esta clase https://www.datdata.com/products/certificacion-oficial-por-microsoft-de-power-bi/categories/3567095/posts/11910392.

              alainlugo
              Participante

                Gracias por la colaboracion, Saludos

                alainlugo
                Participante

                  Buenas noches, paso por aqui nuevamente, ya que, se me presento un inconveniente con la expresion anterior la cual me muestra las ventas del año anterior tomando en cuenta el feriado, a continuacion copio nuevamente la expresion:

                  Ventas LY HolidayName =

                  CALCULATE([Ventas],

                  FILTER( ALL(Dates),

                  Dates[HolidayID] = SELECTEDVALUE(Dates[HolidayID]) && Dates[Year] = SELECTEDVALUE(Dates[Year]) -1))

                   

                  Cuando aplico el filtro me aparece la venta actual y la venta del año anterior del feriado seleccionado,  pero cuando quise seleccionar otra opcion del filtro o segmentador, la tabla me elimima el ultimo valor, es decir me borra el ultimo cliente,   con los tres primeros valores del filtro todo fuciona bien, tengo mis 37 clientes pero cuando elijo el cuarto o quinto valor ocurre lo antes mencionado, solo 36 clientes

                  primera vez que me sucede esto, todo los valores del filtro han funcionado bien, pero en este caso se presento este error, que podria sugerirme, gracias por la atencion

                  dlom
                  Participante

                    Quizás desaparece porque esa dimensión (ese cliente) no tiene valor de la medida con esos filtros aplicados.

                    El default en Power BI es no mostrar las dimensiones que no tienen valor en alguna medida de la visualización.

                    Lo que puedes hacer es hacer clic derecho el campo de la dimensión en la medida (en el ejemplo de la imagen sería en donde está el punto #2) y seleccionar la opción de "Mostrar elementos sin datos".

                     

                    La otra es agregar un "+ 0" (sumarle cero a tu medida) al final de la medida para que la medida regrese cero en lugar de BLANK. Quedaría algo asi:

                    Ventas LY HolidayName =
                    CALCULATE([Ventas],
                    FILTER( ALL(Dates),
                    Dates[HolidayID] = SELECTEDVALUE(Dates[HolidayID]) && Dates[Year] = SELECTEDVALUE(Dates[Year]) -1)) + 0

                     

                    Este es un pequeño hack que en ocasiones ayuda, pero en otras ocasiones te puede generar comportamientos no esperados, por lo que es importante que valides que sí te está sirviendo en tu caso y no te afecta en otras visualizaciones.

                  Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
                  • Debes estar registrado para responder a este debate.