travbum
Acabo de trabajar en una tarea un poco más avanzada y me llevó 12 pasos completarla. Me pregunto si esto es excesivo y si debería tratar de usar menos.
KJinete
Desafortunadamente, esa es una pregunta demasiado vaga para dar una respuesta sensata. Es como preguntar «¿Cuánta agua necesito?» ¿Necesidad de qué? Para beber hoy? ¿Sobrevivir en el desierto durante un mes? ¿Para llenar una pecera?
Necesita exactamente tantos pasos como sea necesario para obtener el resultado que necesita por los medios más eficientes. En el informe que tengo abierto hay 14 consultas. Una de ellas tiene dos escalones, y es una de las mesas más grandes e importantes de todo el modelo. Otro tiene 21 pasos, más 6 pasos más que tienen lugar en una consulta diferente que se fusiona con él en el paso 15.
Una mejor pregunta podría ser: «¿Los tiempos de carga de mis consultas son tan rápidos como podrían ser?» Si la actualización de sus datos lleva mucho tiempo, tal vez haya una mejor manera de escribir su consulta en menos pasos. Pero tal vez no lo hay. Menos pasos también podrían no ser más eficientes. A veces, uno o dos pasos adicionales pueden hacer que las cosas se carguen más rápido.
¿Puede dar un ejemplo de lo que hace esta consulta y cómo? Tal vez hay una mejor manera.
KJinete
Desafortunadamente, esa es una pregunta demasiado vaga para dar una respuesta sensata. Es como preguntar «¿Cuánta agua necesito?» ¿Necesidad de qué? Para beber hoy? ¿Sobrevivir en el desierto durante un mes? ¿Para llenar una pecera?
Necesita exactamente tantos pasos como sea necesario para obtener el resultado que necesita por los medios más eficientes. En el informe que tengo abierto hay 14 consultas. Una de ellas tiene dos escalones, y es una de las mesas más grandes e importantes de todo el modelo. Otro tiene 21 pasos, más 6 pasos más que tienen lugar en una consulta diferente que se fusiona con él en el paso 15.
Una mejor pregunta podría ser: «¿Los tiempos de carga de mis consultas son tan rápidos como podrían ser?» Si la actualización de sus datos lleva mucho tiempo, tal vez haya una mejor manera de escribir su consulta en menos pasos. Pero tal vez no lo hay. Menos pasos también podrían no ser más eficientes. A veces, uno o dos pasos adicionales pueden hacer que las cosas se carguen más rápido.
¿Puede dar un ejemplo de lo que hace esta consulta y cómo? Tal vez hay una mejor manera.
travbum
En respuesta a KJinete
a@test.com | Q1 | Correcto | |
a@test.com | Q2 | Incorrecto | |
b@test.com | Q1 | Incorrecto | |
b@test.com | Q2 | Incorrecto | |
c@test.com | Q1 | Correcto | |
c@test.com | Q2 | Correcto | |
a@test.com | Q1 | Incorrecto | |
a@test.com | Q2 | Correcto | |
b@test.com | Q2 | Incorrecto | |
d@test.com | Q1 | Correcto | |
d@test.com | Q2 | Incorrecto | |
a@test.com | Q1 | Correcto | Incorrecto |
a@test.com | Q2 | Incorrecto | Correcto |
b@test.com | Q1 | Incorrecto | |
b@test.com | Q2 | Incorrecto | Incorrecto |
c@test.com | Q1 | Correcto | |
c@test.com | Q2 | Correcto | |
d@test.com | Q1 | Correcto | |
d@test.com | Q2 | Incorrecto |
Tengo dos tablas, Table1 y Table2, cada una de las cuales tiene un conjunto de direcciones de correo electrónico, preguntas y cómo respondieron las personas, que se muestra en la tabla final. La columna 3 de la última tabla es la columna 3 de la Tabla 1 y la columna 4 de la última tabla es la columna 3 de la Tabla 2. Esto es lo que tengo hasta ahora:
let Table1 = Table.AddColumn(Sheet1, "Response_Unique", each "S1"&[Response]), Table2 = Table.AddColumn(Sheet2, "Response_Unique", each "S2"&[Response]), Source = Table.Combine({Table1, Table2}), #"Added Custom" = Table.AddColumn(Source, "Merge_ID", each [Email]&"-"&[Question]), #"Grouped Rows" = Table.Group(#"Added Custom", {"Merge_ID"}, {{"Merged Responses", each Text.Combine([Response_Unique], ""), type text}}), Joined = Table.Join(#"Added Custom", "Merge_ID", #"Grouped Rows", "Merge_ID"), #"Split Column by Delimiter" = Table.SplitColumn(Joined,"Merged Responses",Splitter.SplitTextByDelimiter("S2", QuoteStyle.Csv),{"Merged Responses.1", "Merged Responses.2"}), #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged Responses.1", type text}, {"Merged Responses.2", type text}}), #"Replaced Value" = Table.ReplaceValue(#"Changed Type","S1","",Replacer.ReplaceText,{"Merged Responses.1"}), #"Removed Duplicates" = Table.Distinct(#"Replaced Value", {"Merge_ID"}), #"Renamed Columns1" = Table.RenameColumns(#"Removed Duplicates",{{"Merged Responses.1", "Sheet 1 Response"}, {"Merged Responses.2", "Sheet 2 Response"}}), #"Replaced Value1" = Table.ReplaceValue(#"Renamed Columns1","",null,Replacer.ReplaceValue,{"Sheet 1 Response"}), #"Removed Columns" = Table.RemoveColumns(#"Replaced Value1",{"Response", "Response_Unique", "Merge_ID"}) in #"Removed Columns"
Esta es mi primera aventura en el Editor avanzado y hacer algo un poco más complicado que solo una nueva columna. Entonces supongo que así es como funcionan las cosas con Power BI cuando se trata de fuentes de datos que no están tan organizadas.
KJinete
En respuesta a travbum
@travbum No veo nada obvio que haría de manera diferente para hacerlo más eficiente, aunque algunos aquí podrían detectar algo que me perdí. Podría cambiar el orden ligeramente para que los pasos similares vayan juntos cuando sea posible (por ejemplo, hacer todas las cosas de Reemplazar valor en una fila antes de continuar), pero eso es algo puramente cosmético. ¿Cuánto tiempo se tarda en actualizar esto?
La entrada desordenada definitivamente hace consultas largas. Si tiene algo de Advil a mano, le contaré sobre esa consulta mía de 20 y tantos pasos.
travbum
En respuesta a KJinete
Gracias por la respuesta. En cuanto a la actualización, con 2 hojas de Excel, cada una con 6 filas y 3 columnas, toma aproximadamente 1 segundo. Sin embargo, los datos con los que estamos trabajando tienen alrededor de ~60,000 filas de Salesforce y, sinceramente, parece que ocupan la mayor parte del tiempo de actualización. ¿Debería ejecutar una actualización para ver cuánto tarda Power BI en extraer todos los datos de Salesforce y luego utilizarlos como referencia? Si es así, si miro el tiempo después de que los datos se extrajeron de Salesforce, ¿después de qué período de tiempo debo considerar que mi consulta es demasiado lenta? 5s? 30s? ¿Algo más?
cantor
En respuesta a travbum
@travbum Con toda honestidad, cuando pulso actualizar el archivo UPS que he mencionado, no puedo hacer ningún otro trabajo mientras se agita. Termina en menos de 3 minutos de esa manera. Es una bestia pero cada uno de esos pasos es necesario. Actualmente tiene 360.000 filas y alrededor de 8 columnas en la consulta más grande. El tiempo de actualización es importante, más aún si estás visitando mesas en vivo. En el pasado, bloqueé navision aquí en mi empresa, pero, en el gran esquema de las cosas, limpiar y utilizar los datos es mucho más importante que el tiempo dedicado a la actualización. Ahora, si su consulta está bloqueando el software o las mesas en vivo, es posible que desee echar un segundo vistazo. . .
KJinete
En respuesta a travbum
@travbum pfft, ¡no considero que una consulta sea lenta hasta que tarde más de 10 minutos! Pero la base de datos de la que extraigo no estaba tan «diseñada» como «conglomerado» «congelado» «convocado» «reanimado» «excretado»…
cantor
En respuesta a KJinete
Esta pregunta es similar a preguntar cuántos lametones se necesitan para llegar al centro de un Tootsie Pop. Algunos pasos son pequeños y otros son la mordida grande al final. Cada conjunto de datos es diferente y debe tratarse como tal. Mi archivo UPS tiene un máximo de 22 pasos, pero cada uno es necesario y, sin él, estaría lidiando con datos basura.
Si funciona, funciona.
Seth_C_Bauer
En respuesta a travbum
@travbum Como se mencionó. El número de pasos no debería ser la preocupación inicial. El rendimiento debe ser. Si necesita limpiar los datos, entonces necesita los pasos. Si el rendimiento es horrible y está preguntando sobre mejores formas de hacer algo, estoy seguro de que alguien puede ayudarlo. Pero la cantidad de pasos por sí sola no debería preocuparte, ya que te llevaría más tiempo volver y averiguarlo.