Es muy común tener que transformar datos de una «forma» a otra «forma» antes de que se puedan usar dentro de Power BI para el análisis (aunque muchos principiantes no se dan cuenta de esto). A continuación se muestra un ejemplo de este tipo, donde los datos de la tabla del lado izquierdo deben transformarse en la tabla del lado derecho. Como puede ver a la izquierda, la columna A contiene el atributo y la columna B contiene el valor del atributo. Cada 4 líneas de datos es 1 registro. Este problema específico es un problema muy común cuando su única fuente de datos es de un extracto (por ejemplo, csv) de algún otro sistema, particularmente sistemas más antiguos donde no puede cambiar el formato del extracto de datos.
El truco para resolver este problema es girar los datos de texto en una forma tabular. Aprendí a resolver este problema de mi amigo. Imke Feldmann en The BIcountant.
No puede pivotar datos de texto directamente
Así es como NO hacerlo. Si hace clic en la columna A anterior y selecciona «Columna dinámica» de Power Query, obtendrá los resultados que se muestran a continuación.
Este enfoque no resolverá este problema porque Power Query no sabe cómo identificar de forma única cada conjunto de registros, y esa es una pista sobre cómo resolver este problema.
Cómo pivotar datos de texto
El truco para resolver este problema es sellar primero cada conjunto de 4 filas como un registro único.
En el ejemplo anterior, cada registro se distribuye en 4 filas consecutivas en la tabla, por lo que primero debemos estampar un ID de número de registro único en cada conjunto de 4 filas que componen un solo registro. Una vez que tenemos este identificador único para cada fila, podemos usar el identificador para hacer pivotar los datos para producir los resultados deseados.
Pasos para pivotar datos de texto
Completé la siguiente demostración con Power Query para Excel, pero, por supuesto, también se aplica a Power Query para Power BI. Puede descargar el workbook de muestra aquí.
Paso 1:
Cargué la tabla en Power Query, seleccioné la pestaña Datos (ver 1 a continuación) y luego hice clic en Desde tabla / rango (ver 2 a continuación).
Paso 2:
En la ventana de Power Query, fui a la pestaña Agregar columna (ver 1 a continuación) e hice clic en Columna de índice (ver 2 a continuación). Se agrega una nueva columna numérica (ver 3 a continuación).
Paso 3:
A continuación, convertí esta columna numérica para que identifique (estampa) cada registro de forma única. Para esto, fui a la pestaña Transformar (ver 1 a continuación), Estándar (ver 2 a continuación) y hice clic en Integer-Divide (ver 3 a continuación).
Dividí entre 4 (ver 1 a continuación) ya que ese es el número de filas en cada registro.
Ahora hay un número entero único en la nueva columna que identifica cada registro (consulte 0, 1, 2, 3, 4, 5 a continuación) en la tabla.
Paso 4: este es el paso final.
Seleccioné la primera columna (ver 1 a continuación), fui a la pestaña Transformar (ver 2 a continuación) y luego seleccioné Columna dinámica (ver 3 a continuación).
En el Columna de pivote cuadro de diálogo (ver 1 a continuación) Seleccioné la Columna de valores para que sea Columna2 (ver 2 a continuación) y luego seleccioné Opciones avanzadas (ver 3 a continuación) y establecí en No agregue (ver 4
debajo)
.
Esto hizo pivotar los datos como se muestra a continuación.
Ya no necesito la columna de índice y la eliminé. Luego arreglé los formatos de datos, y eso es todo.
Una vez que vuelvo a cargar esta tabla en Excel al lado de la tabla original, se ve como en la primera imagen con la que comenzamos en este artículo.
¿Qué sigue?
Si desea una lección completa sobre cómo usar Power Query, consulte mi curso de capacitación aquí https://xbi.com.au/pqt
Puede aprender trucos y consejos similares a este en Power Query con ejemplos ilustrativos. Todos los ejemplos mostrados en el curso también están disponibles para descargar en el material del curso para que pueda practicar mientras ve los videos para una comprensión profunda de los conceptos.
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window,document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘639916389503636’);
fbq(‘track’, ‘PageView’);