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

TREATAS no funciona con SUM

Hola

La siguiente relación virtual no funcionó, ¿es porque CustomerName no es la cantidad?

¿Cómo corregir esto?

NombreDe_cliente ?

CALCULATE(
SUM(FactInternetSales[CustomerName]),
TREATAS(VALUES(DimCustomer[CustomerKey]),FactInternetSales[CustomerKey]))
1 ACCEPTED SOLUTION
v-lionel-msft
Community Support
Community Support

Hola @marc_hll ,

1.

CustomerName(Measure) = 
CALCULATE(
    MAX(FactInternetSales[CustomerName]),
    TREATAS( VALUES(DimCustomer[CustomerKey]), FactInternetSales[CustomerKey] )
)

v-lionel-msft_0-1602035522580.png

2.

Measure = 
CALCULATE(
    MAX(FactInternetSales[CustomerName]),
    TREATAS( VALUES(FactInternetSales[CustomerKey]), DimCustomer[CustomerKey] )
)

v-lionel-msft_1-1602035567501.png

Saludos
Lionel Chen

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

View solution in original post

14 REPLIES 14
v-lionel-msft
Community Support
Community Support

Hola @marc_hll ,

1.

CustomerName(Measure) = 
CALCULATE(
    MAX(FactInternetSales[CustomerName]),
    TREATAS( VALUES(DimCustomer[CustomerKey]), FactInternetSales[CustomerKey] )
)

v-lionel-msft_0-1602035522580.png

2.

Measure = 
CALCULATE(
    MAX(FactInternetSales[CustomerName]),
    TREATAS( VALUES(FactInternetSales[CustomerKey]), DimCustomer[CustomerKey] )
)

v-lionel-msft_1-1602035567501.png

Saludos
Lionel Chen

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

watkinnc
Super User
Super User

A pesar de que aparentemente está sumando texto, TREATAS necesita una de las columnas resultantes como su entrada.

NombreDe_cliente ?

CALCULATE(
SUM(FactInternetSales[CustomerName]); la columna de salida es FactInternetSales[CustomerName], por lo que debe ser uno de los argumentos TREATAS, seguido de la columna de la otra columna de tabla como. Además, si falta el valor de la columna de salida en la columna TREATAS, ese valor seguirá sin estar allí. TREATAS puede ser complicado.

I’m usually answering from my phone, which means the results are visualized only in my mind. You’ll need to use my answer to know that it works—but it will work!!

@watkinnc

No estoy seguro de haber entendido lo que está diciendo, pero esta declaración es engañosa en el mejor de los apartamentos

"CALCULATE(

SUM(FactInternetSales[CustomerName]); la columna de salida es FactInternetSales[CustomerName], por lo que debe ser uno de los argumentos TREATAS"

Los argumentos de TREATAS son columnas de tablas no relacionadas que desea "conectar" como una expresión de filtro (potencialmente una relación virtual uno a varios o uno a uno, aunque la documentación en realidad simplemente define la primera entrada como "una expresión que da como resultado una tabla")

En otras palabras, la "columna de salida" no debe incluirse en absoluto en la expresión TREATAS. En mi ejemplo,

Fact Customer Name = CALCULATE(
                    MAX(FactInternetSales[CustomerName]), 
                    TREATAS(VALUES(FactInternetSales[CustomerKey]), DimCustomer[CustomerKey]))

La "columna de salida" o resultado es diferente de los argumentos utilizados en la expresión TREATAS. Lo mismo sería, por supuesto, cierto si se utiliza una medida de [Suma de ventas] por ejemplo (que sería de la suma de una columna llamada 'Tabla'[Ventas])

IMHO, la forma más fácil de entender TREATAS es pensar en ello como establecer una relación virtual "uno" a varios o "uno"-a-uno entre dos tablas que no están relacionadas en el modelo real (mediante el uso de VALUES o DISTINCT en el primer argumento - o FILTER, etc.).

TREATAS puede ser más sofisticado de lo que estoy haciendo, pero esta forma de pensar en ello hace que sea fácil para mí utilizar la función (que hago mucho).





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






Trata las columnas de la tabla de entrada como columnas de otras tablas. Para cada columna, filtra los valores que no están presentes en su columna de salida respectiva.

Sintaxis

TREATAS ( <Expression>, <ColumnName> [, <ColumnName> [, ... ] ] )
DESCRIPCIÓN DE LOS ATRIBUTOS DE PARÁMETRO
Expresión

Expresión que genera el conjunto de columnas que se va a reasignar.

ColumnnameRepetible

El nombre de la columna de salida.

Valores devueltos

TABLE Una tabla completa o una tabla con una o más columnas.

Tabla que contiene todas las filas de las columnas que también están en Expresión.

Compatibilidad

  • Power BI
    Versión actual
  • SSAS Tabular
    • SSAS 2017
    • SSAS 2019
  • Azure AS
    Versión actual
  • SSDT
    Versión actual

» Mostrar compilaciones verificadas

Observaciones

TREATAS asigna el linaje de datos de las columnas devueltas por la expresión mediante las columnas de los argumentos siguientes. El resultado se puede asignar a una variable, porque TREATAS no es un modificador de filtro. El primer argumento debe ser una expresión de tabla.

La función TREATAS funciona en Excel desde la versión 1809. Sin embargo, IntelliSense no notifica la función y es posible que Microsoft no la admita aún no sea compatible con Excel.


I’m usually answering from my phone, which means the results are visualized only in my mind. You’ll need to use my answer to know that it works—but it will work!!
manikumar34
Solution Sage
Solution Sage

@marc_hll,

Está haciendo suma en los valores de cadena. Intente usar

DISTINCT o COUNT o DISTINCTCOUNT.

Y los valores de cadena no se pueden mostrar en gráficos como gráficos de barras, pastel, etc. Solo puede mostrarlos en la mesa o matric sho intento utilizando COUNT o DISTINCTCOUNT si desea mostrar los números.

saludos

Manikumar





If this helps, Appreciate your KUDOS!
Did I answer your question? Mark my post as a solution!


Proud to be a Super User!




Anonymous
Not applicable

Probé los tres de ellos, DISTINCT no funcionó ningún resultado, quería devolver la cadena en una tabla

El COUNT/DISTINCTCOUNT funciona pero como números

¿Me estoy perdiendo algo?

Anonymous
Not applicable

He adjuntado una muestra, he intentado cambiar DISTINCT a VALUES pero todavía no funciona

¿Cómo puedo incorporar CustomerName a la tabla DimCustomer mediante la relación virtual? Cualquier ayuda es muy apreciada

https://1drv.ms/u/s!AjxzXMIO4yRIhSyLtp_PdyRqw4wu?e=u9cItr

Nombre_cliente: CALCULATE(
VALUES(FactInternetSales[CustomerName]),
TREATAS(VALUES(DimCustomer[CustomerKey]),FactInternetSales[CustomerKey]))

@marc_hll

¿Qué es exactamente lo que intentas hacer? ¿Cuál es su resultado esperado?

TANTO VALUES como DISTINCT devuelven una lista de valores, que no puede ser la salida de una medida. Una medida debe devolver un único valor. Puede utilizar VALUES o DISTINCT para crear una nueva tabla, por ejemplo, o como parte de una expresión de filtro en una medida.

Anonymous
Not applicable

Este es el resultado esperado de la relación virtual, creé usando la columna pero recibe el error "Se proporcionó una tabla de múltiples valores donde se esperaba un solo valor

Tal vez mi sintaxis es incorrecta, veo que muchos blogs/post están usando SUM con TREATAS/INTERSECT pero mi necesidad está en cadena (no cantidad)

¿Puede descargar el ejemplo pbix?

marc_hll_0-1601796238958.png

@marc_hll

No puede tener una lista como resultado de una medida. Si necesita una cadena de valores, debe utilizar CONCATENATEX.
Para su caso, intente usar MAX en lugar de SUM en su medida





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






Anonymous
Not applicable

Todavía no pude conseguirlo, ¿debo eliminar el CALCULATE ya que no estoy calculando nada aquí? Sólo estoy tratando de obtener un valor de cadena que es CustomerName con filtro virtual/relación. ¿Hay otra manera?

@marc_hll

Usando el archivo que incluyó anteriormente, esto es lo que obtiene usando TREATAS en esta medida:

Fact Customer Name = CALCULATE(
                    MAX(FactInternetSales[CustomerName]), 
                    TREATAS(VALUES(FactInternetSales[CustomerKey]), DimCustomer[CustomerKey]))

TREATAS measure result.JPG

Dicho esto, podría crear una relación entre Dim Customer [Customer key] y factInternetSales [Customer key] en la vista de modelo. Si, a continuación, agrega un objeto visual de tabla mediante dim Customer [Customerkey] y FactInternetSales[CustomerName] obtendrá el mismo resultado (y así es como debe hacerlo realmente). No se necesita ninguna medida entonces.





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






Anonymous
Not applicable

@PaulDBrown

Gracias por la respuesta, intenté crear su medida en la tabla DimCustomer pero no pude replicar lo mismo que el suyo? En vez de eso, tengo a todo Peter. ¿Tenía una relación CustomerKey conectada en la parte posterior?

marc_hll_0-1601920133493.png

@marc_hll

ok, así que ahora entiendo que quieres que estés tratando de hacer. No está buscando una medida, sino una columna calculada.

¿Hay alguna razón por la que necesite que estas tablas no estén relacionadas?

Si no es así, crearía una nueva tabla de dimensiones (en lugar del cliente Dim) haciendo referencia a la tabla FactInternetSales en Power Query (seleccione la tabla FactInternetSales haciendo clic con el botón derecho en la consulta de la tabla y seleccione "referencia"), quite todas las columnas excepto CustomerID y CustomerName, seleccione CustomerID y quite duplicados y cargue el modelo. Cree una relación entre la nueva tabla de dimensiones y la tabla de hechos uniendo los campos de CustomerId en una relación de uno a varios y ha terminado (incluso puede ocultar el campo CustomerName en la tabla FactInternetSales).

No necesita una columna calculada si sigue este método (que también es realmente una "mejor práctica").

Si realmente necesita que las tablas no estén relacionadas, ¿puede explicar el contexto? ¿Qué estás tratando de lograr y por qué?

Gracias.





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






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.