Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Recuento de días en una medida en lugar de columna calculada

Número de días en el cuidado : IF(ISBLANK([END_DATE]),DATEDIFF([START_DATE],TODAY(),DAY),DATEDIFF([START_DATE],[END_DATE],DAY))
Por favor, ¿alguien puede ayudarme con lo anterior?
Necesito que la misma lógica anterior se traduzca en una medida,ya que la columna calculada afecta significativamente al rendimiento en Power BI.
Tengo una tabla con las columnas 'PERSON_ID, START_DATE, END_DATE'. Necesito tener una medida que me dé lo siguiente:
PERSON_ID con START_DATE y END_DATE, por lo tanto, dame el número de días
PERSON_ID con START_DATE y sin END_DATE, por lo tanto, dame el número de días desde START_DATE hasta hoy.
Gracias
Dan.
1 ACCEPTED SOLUTION

Hey @dwidrascuBG ,

basado en mis datos de muestra:

TomMartens_0-1597315628323.png

aquí está la medida correcta, tenga en cuenta el primer parámetro ligeramente cambiado de la función SUMX:

measure name = 
SUMX(
	VALUES('table')
	,var _today = TODAY()
	var _startdate = [START_DATE]
	var _enddate = [END_DATE]
	var __enddate = IF(NOT(ISBLANK(_enddate)) , _enddate , _today)
	return
	DATEDIFF(_startdate,__enddate,DAY)
)

mi tabla visual:

TomMartens_1-1597315783137.png

Dudo que el enfoque de la medida acelere el loadig de lo visual.

Un calculado se evalutated una sola vez, esto sucede cuando se carga el modelo de datos. Si hablamos de Power BI Desktop, esto sucede cuando abre el informe, cuando actualiza los datos subyacentes o cuando cambia un calculatio.

De hecho, una medida sólo se aplaudirá cuando sea necesario, por lo que básicamente se debe usar una medida en lugar de una columna calculada, ya que el pie de memoria general será más pequeño usando una medida.

Pero, en este caso especial, si usted está apuntando a acelerar el tiempo de carga de un objeto visual específico, mi suposición es que, la columna calculada será más rápida que la medida, ya que el valor de las columnas calculadas sólo tiene que ser visualizado donde la medida tiene que ser evaluada y luego visualizada.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

View solution in original post

10 REPLIES 10
TomMartens
Super User
Super User

Hey @dwidrascuBG ,

debe considerar este DAX para una columna calculada, ya que esto está utilizando variables para evitar varias evaluaciones de columna dentro del IF

column name = 
var _today = TODAY()
var _startdate = [START_DATE]
var _enddate = [END_DATE]
var __enddate = IF(NOT(ISBLANK(_enddate)) , _enddate , _today)
return
DATEDIFF(_startdate,__enddate,DAY)

Como la fecha de inicio y finalización se puede considerar como propiedades de la PERSON_ID la medida tendrá un aspecto similar:

measure name =
SUMX(
	VALUES('tablename'[PERSON_ID])
	,var _today = TODAY()
	var _startdate = [START_DATE]
	var _enddate = [END_DATE]
	var __enddate = IF(NOT(ISBLANK(_enddate)) , _enddate , _today)
	return
	DATEDIFF(_startdate,__enddate,DAY)
)

Con suerte, esto proporciona lo que está buscando.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany
Anonymous
Not applicable

Hola Tom,

Gracias por esto, pero desafortunadamente la columna calculada no funcionó, devolvió el mismo valor para cada PERSON_ID. No pude conseguir que la medida funcionara en absoluto debido a la sintaxis. Creo que entiende mi problema, pero parece que no he sido muy claro, dados los comentarios de otros usuarios. Para aclarar:

Tengo una columna calculada con este DAX actual:

Número de días: IF(ISBLANK([END_DATE]),DATEDIFF([START_DATE],TODAY(),DAY),DATEDIFF([START_DATE],[END_DATE],DAY))

Produce esta tabla de datos actual (que es 'PersonTable') :

PERSON_IDFecha_inicialFecha_finalNúmero de días (columna calculada)
123 de julio de 200430 de julio de 20047
210 de abril de 200410 de abril de 2005365
310 de agosto de 2020(en blanco)2

Tengo una visualización de tablas en mi página de informe de Power BI con PERSON_ID y Número de días como valores. Tengo un filtro para que sólo tenga con PERSON_ID con '(en blanco)' END_DATE en la tabla:

PERSON_IDNúmero de días (columna calculada)
32

Mi columna calculada funciona, pero está pasando por cada fila y está haciendo que la visualización tarde mucho tiempo en cargarse.

Espero que esto esté claro y gracias a todos por sus comentarios!

Hola @dwidrascuBG ,

Por favor, consulte la siguiente medida:

Measure = IF(ISBLANK(MAX('Table'[END_DATE])),DATEDIFF(MAX('Table'[START_DATE]),TODAY(),DAY),DATEDIFF(MAX('Table'[START_DATE]),MAX('Table'[END_DATE]),DAY))

Capture4.PNG

Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Saludos

Dedmon Dai

Anonymous
Not applicable

Hola @v-deddai1-msft ,

la medida no funciona ya que devuelve el mismo número de días para cada PERSON_ID, por ejemplo:

PERSON_IDNúmero de días de medida
1100
2100
3100
4100

Hey @dwidrascuBG ,

basado en mis datos de muestra:

TomMartens_0-1597315628323.png

aquí está la medida correcta, tenga en cuenta el primer parámetro ligeramente cambiado de la función SUMX:

measure name = 
SUMX(
	VALUES('table')
	,var _today = TODAY()
	var _startdate = [START_DATE]
	var _enddate = [END_DATE]
	var __enddate = IF(NOT(ISBLANK(_enddate)) , _enddate , _today)
	return
	DATEDIFF(_startdate,__enddate,DAY)
)

mi tabla visual:

TomMartens_1-1597315783137.png

Dudo que el enfoque de la medida acelere el loadig de lo visual.

Un calculado se evalutated una sola vez, esto sucede cuando se carga el modelo de datos. Si hablamos de Power BI Desktop, esto sucede cuando abre el informe, cuando actualiza los datos subyacentes o cuando cambia un calculatio.

De hecho, una medida sólo se aplaudirá cuando sea necesario, por lo que básicamente se debe usar una medida en lugar de una columna calculada, ya que el pie de memoria general será más pequeño usando una medida.

Pero, en este caso especial, si usted está apuntando a acelerar el tiempo de carga de un objeto visual específico, mi suposición es que, la columna calculada será más rápida que la medida, ya que el valor de las columnas calculadas sólo tiene que ser visualizado donde la medida tiene que ser evaluada y luego visualizada.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany
Anonymous
Not applicable

@TomMartens OK gracias por el consejo, voy a dejar como una columna calculada basado en su entrada!

Para tu información, la medida funciona demasiado 😎

Hey @dwidrascuBG ,

preparar un pbix con datos de muestra, cargar el pibix en onedrive o dropbox y compartir el enlace (asegúrese de que la fecha de inicio y la fecha de finalización tienen un tipo de datos de fecha o fecha y hora). Si está utilizando un xlsx para crear los datos de ejemplo y compartir el xlsx también.


Hmm, preguntándose qué está pasando como puede ver, la instrucción DAX crea diferentes valores, basados en datos de muestra ciertamente pequeños:

TomMartens_0-1597259456514.png

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany
Anonymous
Not applicable

@TomMartens

muchas gracias por su ayuda. Hoy he probado la columna calculada y por alguna razón funciona absolutamente bien ahora, gracias! Esto sin duda ayudará a los problemas de rendimiento y es una gran solución temporal. Ahora me gustaría avanzar a una medida, ya que creo que esto reducirá aún más el tiempo de rendimiento para cargar la visualización.

Sin embargo, la medida no ha sido fructífera. Nota Tuve que editar 'var _startdate' y 'var _enddate' ya que necesitaban tener una función MAX/MIN. Por favor, vea la captura de pantalla a continuación:

dwidrascuBG_0-1597307359447.pngdwidrascuBG_1-1597307432891.png

Como puede ver, tampoco tomará '_enddate' y '__endate'

Espero que esto signifique que ya no necesitamos los datos de muestra y el archivo pbix, pero por favor hágamelo saber si este sigue siendo el caso.

Muchas gracias Tom!

amitchandak
Super User
Super User
Greg_Deckler
Super User
Super User

@dwidrascuBG Por lo general, se convierte una columna en una medida mediante la adición de aggregatins como MAX/MIN, etc. a referencias de columna. Eso es muy general y depende del contexto. No es realmente suficiente información para seguir adelante, por favor primero compruebe si su problema es un problema común enumerado aquí: https://community.powerbi.com/t5/Community-Blog/Before-You-Post-Read-This/ba-p/1116882

Además, consulte este post sobre cómo obtener respuesta a su pregunta rápidamente: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

Las partes más importantes son:
1. Datos de muestra como texto, utilice la herramienta de tabla en la barra de edición
2. Salida esperada de los datos de muestra
3. Explicación en palabras de cómo obtener de 1. a 2.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.