JuanLap
¡Soy nuevo! ¡Probablemente me estoy perdiendo algo obvio! Pero después de 12 horas de tratar de resolver esto, necesito ayuda.
Versión más reciente de Power BI Desktop. Solo quiero dividir dos columnas numéricas. Cuando hago las MATEMÁTICAS están fallando. ¡He intentado esto de todas las formas que puedo encontrar, sin alegría!
Las matemáticas específicas en este ejemplo para la fila 1:
2867 / 3159 = 0.90756568 (usando una calculadora)
Según tengo entendido, este debería ser un cálculo fila por fila para esta vista.
CountTest6 = DIVIDE(‘YoY_Daily_Sales'[Transaction_Count],’Ventas_Diarias_YoY'[PriorYear.Transaction_Count])
La respuesta proporcionada por esta fórmula es 13.53. ¡Esto es incorrecto!
Línea | Transaction_Count | PriorYear.Transaction_Count | ContarPrueba6 |
1 | 2867 | 3159 | 13.53084674 |
2 | 1472 | 1732 | 7.749660014 |
3 | 2515 | 2523 | 11.04036185 |
4 | 147 | 180 | 0.816666667 |
5 | 481 | 493 | 3.889987179 |
6 | 1173 | 1291 | 6.29352048 |
7 | 391 | 407 | 1.893128079 |
JuanLap
En respuesta a JuanLap
Corrección: La solución real fue un poco más compleja
Transacción Var % Medida = (DIVIDE(CALCULAR(SUMA(‘Tabla'[Count])), CALCULAR (SUMA (‘Tabla'[PriorYear.Count])),0)-1)*100
Esto realmente resuelve el problema.
La conversión a una medida es obligatoria y no funcionará con una consulta directa.
kan
Hola a todos,
Soy nuevo en power bi y estoy tratando de dividir dos columnas existentes y obtener el resultado en una columna calculada, pero los resultados son incorrectos. ¿Puede alguien ayudarme? Intenté usar la fórmula a continuación
%Completado = DIVIDIR(Nodo[completed],Nodo[Total])
Nodemajormilestonename | Total | terminado | %Completo | Valores correctos |
Bloqueo de nodo preliminar | 7701 | 2561 | 37.5610552 | 33.25 |
Bloqueo de nodo final | 7701 | 1861 | 32.9809542 | |
Aprobación de la sala de emergencias | 7743 | 1822 | 42.0270005 | |
Ingeniería de nodos | 7701 | 1768 | 36.9119816 | |
Equipo pedido | 7701 | 599 | 17.5948997 | |
Prepárate para empezar | 7701 | 300 | 14.5904787 | |
Solicitud de permiso de construcción | 7701 | 812 | 22.3153618 | |
Hacer listo completo | 7701 | 219 | 12.3539329 | |
Permiso de construcción recibido | 7701 | 416 | 14.9592466 | |
Inicio de construcción | 7743 | 620 | 17.9762811 | |
Poder completo | 7743 | 482 | 11.040731 | |
Construcción completa | 7743 | 538 | 12.1115371 | |
Inspección completa | 7701 | 416 | 11.4564692 | 5.4 |
Integración Completa – Interna | 7701 | 380 | 7.46115686 | |
Nodo On-Air – Cliente | 7701 | 264 | 5.80146265 | |
Cierre completo | 7711 | 435 | 9.91702557 |
Gracias..
Ashish_Mathur
En respuesta a kan
Hola,
No hay ningún error en su fórmula. Comparta el enlace desde donde puedo descargar su archivo PBI.
kan
En respuesta a Ashish_Mathur
Gracias por la respuesta. El siguiente es mi código fuente para el conjunto de datos. Tanto Total como Completado son campos originales y parte del conjunto de datos y están agrupados por nombre de nodo. Me sorprende cuando intento calcular completado/total en el poder bi.
Código fuente:
seleccione ProjectId,región,estado,milestonename como Nodemajormilestonename,nodemajormilestonedefaultsid,Total,completado
desde (
seleccione p.WspNetworkId distinto como projectid, p.regionid como región, p.networkstate como estado, nombre del hito, nodemajormilestonedefaultsid, recuento (distinct m.projectnodeid) Total,
suma (caso cuando la fecha real del hito no es nula, entonces 1 sino 0 finaliza) como completada
de dbo.ProjectMaster p
entrar
(
Seleccione
ID de diseño del proyecto
,Nombre del nodo
,max(Id de nodo de proyecto) Id de nodo de proyecto
de dbo.ProjectNode
agrupar por
ID de diseño del proyecto
,Nombre del nodo
) n en (p.ProjectDesignId = n.ProjectDesignId)
unirse a dbo.ProjectNodeMajorMilestone m on (n.ProjectNodeId = m.ProjectNodeId)
agrupar por MilestoneName,p.WspNetworkId,p.regionid,p.networkstate,nodemajormilestonedefaultsid)x
ordenar por ID de proyecto, ID de nodo mayor de hito predeterminado
El siguiente es mi conjunto de datos de origen:
Projecto ID | región | Expresar | Nodemajormilestonename | nodemajormilestonedefaultsid | Total | terminado |
NC-IA-801GRAND-VZW | C | I A | Bloqueo de nodo preliminar | 1 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Bloqueo de nodo final | 2 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Aprobación de la sala de emergencias | 3 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Ingeniería de nodos | 4 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Equipo pedido | 5 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Prepárate para empezar | 6 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Solicitud de permiso de construcción | 7 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Hacer listo completo | 8 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Permiso de construcción recibido | 9 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Inicio de construcción | 10 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Poder completo | 11 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Construcción completa | 12 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Inspección completa | 13 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Integración Completa – Interna | 14 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Nodo On-Air – Cliente | 15 | 1 | 0 |
NC-IA-801GRAND-VZW | C | I A | Cierre completo | dieciséis | 1 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Bloqueo de nodo preliminar | 1 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Bloqueo de nodo final | 2 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Aprobación de la sala de emergencias | 3 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Ingeniería de nodos | 4 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Equipo pedido | 5 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Preparar Comienzo | 6 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Solicitud de permiso de construcción | 7 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Hacer listo completo | 8 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Permiso de construcción recibido | 9 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Inicio de construcción | 10 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Poder completo | 11 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Construcción completa | 12 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Inspección completa | 13 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Integración Completa – Interna | 14 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Nodo On-Air – Cliente | 15 | 5 | 0 |
NC-IA-CLARKEF1-VZW | C | I A | Cierre completo | dieciséis | 5 |
0 |
A continuación se muestran los datos que se intentaron generar en el modo de visualización a partir de conjuntos de datos. Aquí usé
Completar = DIvidir (Consulta1[completed],Consulta1[Total] que está dando resultados incorrectos (podrían ser datos resumidos). Por ejemplo, para Bloqueo de nodo preliminar completo = 2561/7701 = 0,332 pero da 37,56, lo cual es incorrecto.
Nodemajormilestonename | Total | terminado | Completo |
Bloqueo de nodo preliminar | 7701 | 2561 | 37.56106 |
Bloqueo de nodo final | 7701 | 1865 | 33.98095 |
Aprobación de la sala de emergencias | 7743 | 1822 | 42.027 |
Ingeniería de nodos | 7701 | 1768 | 36.91198 |
Equipo pedido | 7701 | 599 | 17.5949 |
Prepárate para empezar | 7701 | 300 | 14.59048 |
Solicitud de permiso de construcción | 7701 | 812 | 22.31536 |
Hacer listo completo | 7701 | 223 | 13.35393 |
Permiso de construcción recibido | 7701 | 417 | 15.20925 |
Inicio de construcción | 7743 | 620 | 17.97628 |
Poder completo | 7743 | 482 | 11.04073 |
Construcción completa | 7743 | 538 | 12.11154 |
Inspección completa | 7701 | 416 | 11.45647 |
Integración Completa – Interna | 7701 | 380 | 7.461157 |
Nodo On-Air – Cliente | 7701 | 264 | 5.801463 |
Cierre completo | 7711 | 435 | 9.917026 |
Gracias..
Ashish_Mathur
En respuesta a kan
Hola,
No estoy seguro de qué está haciendo ese código, pero supongo que primero desea agrupar por la cuarta columna y luego agregar los números de las últimas 2 columnas. Si ese es el caso, cree una tabla visual y arrastre la cuarta columna en las etiquetas de fila. Luego escribe estas medidas:
Total1 = SUMA(Datos[Total])
Total2 = SUMA(Datos[Completed])
Total3=[Total2]/[Total1]
¿Eso ayuda?
kan
En respuesta a Ashish_Mathur
Hola @Ashish_Mathur,
Gracias por la respuesta.Yaa esto funcionó.
Ashish_Mathur
En respuesta a kan
De nada.
v-yuezhe-msft
@JuanLap,
Su fórmula DAX es correcta. ¿Utiliza la última versión de Power BI Desktop (2.53.4954.621)? ¿De qué tabla proviene el campo Línea? ¿Es también un campo en la tabla YoY_Daily_Sales?
Saludos,
lidia
JuanLap
En respuesta a v-yuezhe-msft
Gracias por la respuesta.
Creo que puedo haber descubierto lo que está sucediendo, pero me sorprende si está diseñado de esta manera.
El Line# proviene de la misma tabla. En realidad es ESTADO pero lo cambié a Línea # por simplicidad.
Si bien la vista de la tabla en PowerBI se resume en el nivel de línea n.° (Agrupar por), hay varias filas detrás de eso. Parece que Power BI está haciendo la división en cada línea del nivel de detalle más bajo y luego promediando o sumando eso. Esta es absolutamente la forma incorrecta de hacerlo. Hubiera asumido que los cálculos de «Fila por Fila» significaban cada Fila que está en la VISTA. Para resolver el problema, tuve que crear una vista SQL en la tabla de origen que resumiera los datos por Line#(State). Entonces, eso se convierte en el nivel más bajo de detalle.
Es necesario cambiar la documentación o esta función DIVIDE. Los usuarios de estos informes pueden hacer fácilmente la división en la vista que ven y determinar que las matemáticas son simplemente incorrectas. Gran manera de perder la credibilidad de un informe. Además, reduce drásticamente el «PODER» en PowerBI si tengo que crear vistas para agregar a cada grupo por nivel que quisiera en el informe. Mi expectativa era que podría producir los datos en el nivel más bajo y hacer que todas las matemáticas funcionaran mientras los agrupaba como quisiera en Power BI. ¡NO!
smpa01
JuanLap
En respuesta a smpa01
Veo que recreaste el problema para probar. GRACIAS por tomarse el tiempo para hacerlo. Sin embargo, solo recreó una línea de datos para cada línea en la vista resumida. Si tenía varias filas detrás de cada una de las filas de Line#, la fórmula proporciona un resultado incorrecto. Este es el problema.
smpa01
En respuesta a JuanLap
@JohnLap: ¿puede compartir los datos de muestra en Excel/PBI, lo que prefiera?
JuanLap
En respuesta a smpa01
Esta publicación fue «eliminada» y marcada como exitosa. Lo volví a abrir.
Estoy publicando más pruebas. El problema es real.
JuanLap
En respuesta a JuanLap
Tuve que recrear el problema ya que lo resolví haciendo vistas de resumen en fuente SQL.
Aquí están los datos resumidos. Esta es la vista real creada en PBI y los datos están debajo. Usé el grupo nativo por línea #
En la tabla de datos he incluido PURE CALC para mostrar la respuesta correcta. La fórmula proporcionada en Power BI no funciona como debería.
Línea# | Recuento de transacciones | PriorYear.Transaction_Count | Calculo puro: ((B/C)-1)*100 | PBI CountTest 8 = (DIVIDE(‘YoYDailySalesbyStateComp'[Transaction_Count],’VentasDiariasYoYporCompEstado'[PriorYear.Transaction_Count],0)-1)*100 |
1 | 9013 | 7403 | 21.75 | 35.04 |
2 | 4529 | 4610 | -1.76 | 0.28 |
3 | 7641 | 6530 | 17.01 | 22.77 |
4 | 362 | 336 | 7.74 | 51.83 |
5 | 1342 | 1296 | 3.55 | 3.46 |
6 | 3435 | 3632 | -5.42 | -5.37 |
7 | 1116 | 1045 | 6.79 | 18.90 |
8 | 652 | 645 | 1.09 | 1.46 |
Aquí están las líneas de detalle que componen cada uno de los números de línea anteriores.
Expresar | Transacción Contar | PriorYear.Transaction_Count |
1 | 2370 | 1260 |
1 | 3021 | 3159 |
1 | 3622 | 2984 |
2 | 1289 | 1116 |
2 | 1472 | 1732 |
2 | 1768 | 1762 |
3 | 2242 | 1431 |
3 | 2515 | 2523 |
3 | 2884 | 2576 |
4 | 59 | 23 |
4 | 156 | 133 |
4 | 147 | 180 |
5 | 352 | 353 |
5 | 509 | 450 |
5 | 481 | 493 |
6 | 976 | 1020 |
6 | 1173 | 1291 |
6 | 1286 | 1321 |
7 | 270 | 164 |
7 | 391 | 407 |
7 | 455 | 474 |
8 | 200 | 203 |
8 | 248 | 211 |
8 | 204 | 231 |
smpa01
En respuesta a JuanLap
Bien, esto es lo que hice
let Source = Web.Page(Web.Contents("http://community.powerbi.com/t5/Desktop/ON-ADD-COLUMN-DIVIDE-function-with-two-columns-yields-wrong/m-p/330494#M147703")), Data2 = Source{2}[Data], #"Promoted Headers" = Table.PromoteHeaders(Data2, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"State", Int64.Type}, {"Transaction Count", Int64.Type}, {"PriorYear.Transaction_Count", Int64.Type}}), #"Grouped Rows" = Table.Group(#"Changed Type", {"State"}, {{"Transaction Count", each List.Sum([Transaction Count]), type number}, {"Prior Year.Transaction Count", each List.Sum([PriorYear.Transaction_Count]), type number}}), #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each (([Transaction Count]/[Prior Year.Transaction Count])-1)*100), #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", type number}}), #"Rounded Off" = Table.TransformColumns(#"Changed Type1",{{"Custom", each Number.Round(_, 2), type number}}) in #"Rounded Off"
es
JuanLap
En respuesta a smpa01
Aplicaré esos pasos ahora y veré lo que obtengo.
¡¡¡Muchas gracias por el apoyo!!!
Informaré después del almuerzo.
smpa01
En respuesta a JuanLap
Es esto lo que estás buscando ?
JuanLap
En respuesta a smpa01
No. Las fórmulas funcionan bien en el nivel más bajo de registro de detalles para los datos de origen. En otras palabras, si no es un resumen de los datos de origen, la fórmula funciona. Si se resume, en este ejemplo, en el nivel de Línea #, no lo hace.
kan
En respuesta a JuanLap
Hola @JohnLap,
Tengo el mismo problema en el que la división va mal ya que mis datos también se resumen. ¿Puede compartir cómo resolvió esto en la vista SQL?
Gracias..
JuanLap
En respuesta a JuanLap
Corrección: La solución real fue un poco más compleja
Transacción Var % Medida = (DIVIDE(CALCULAR(SUMA(‘Tabla'[Count])), CALCULAR (SUMA (‘Tabla'[PriorYear.Count])),0)-1)*100
Esto realmente resuelve el problema.
La conversión a una medida es obligatoria y no funcionará con una consulta directa.