di

Resumen

En este tutorial se describe cómo realizar transformaciones básicas de datos con Power BI. Power BI es una herramienta de análisis de datos que permite conectar a diferentes fuentes de datos, transformar los datos y visualizarlos. Power BI cuenta con una herramienta llamada Power Query que permite realizar transformaciones de datos de forma sencilla. En este tutorial se describe cómo realizar transformaciones básicas de datos con Power Query. En particular se describirán transformaciones sobre columnas (eliminación, cambios de nombre, transformaciones básicas sobre el contenido y transformación de modelos a lo ancho a modelos a lo largo), creación de medidas y columnas calculadas y creación de relaciones entre tablas.

1. Introducción

Uno de los procesos más comunes en el análisis de datos es la transformación de los mismos. En este tutorial vamos a ver cómo realizar transformaciones básicas de datos con Power BI. Power BI es una herramienta de análisis de datos que permite conectar a diferentes fuentes de datos, transformar los datos y visualizarlos. Power BI cuenta con una herramienta llamada Power Query que permite realizar transformaciones de datos de forma sencilla. En este tutorial vamos a ver cómo realizar transformaciones básicas de datos con Power Query. Para ello, vamos a utilizar como fuente de datos una API de datos abiertos de ejemplo de una plataforma de comercio electrónico con datos ficticios (Fake Store API).

2. Caso de estudio. Creación de un cuadro de mandos para Fake Store API

Fake Store API es una API de datos abiertos de ejemplo de una plataforma de comercio electrónico con datos ficticios. Esta API proporciona datos de productos, usuarios y pedidos. En este tutorial vamos a crear un informe con Power BI que permita analizar los datos de productos, clientes y sus valoraciones. Para ello, previamente habrá que realizar una serie de transformaciones de los datos, crear un modelo de datos, para finalizar creando un informe con visualizaciones que permitan analizar los datos.

2.1. Descripción de la API

La API de Fake Store proporciona una serie de endpoints que permiten obtener datos de productos, usuarios y pedidos. Permite obtener tanto listas de productos, usuarios y pedidos como obtener un producto, usuario o pedido por su id. En este tutorial nos centraremos únicamente en los endpoints que recuperan las listas completas de productos, usuarios y pedidos. Los endpoints que vamos a utilizar son los siguientes:

  • /products: Devuelve una lista de productos.

  • /users: Devuelve una lista de usuarios.

  • /carts: Devuelve una lista de pedidos (realmente, sesiones de compra).

Los endpoints devuelven los datos en formato JSON. A continuación se muestra un ejemplo de los datos que devuelve cada endpoint.

2.1.1. Endpoint /products

El endpoint /products devuelve una lista de productos. Cada producto tiene un identificador, un título, un precio, una descripción, una categoría, una imagen y una valoración. La valoración es un objeto que contiene la puntuación media y el número de valoraciones. A continuación se muestra un ejemplo de los datos que devuelve el endpoint /products.

[
    {
        "id": 1,
        "title": "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops",
        "price": 109.95,
        "description": "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday",
        "category": "men's clothing",
        "image": "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg",
        "rating": {
            "rate": 3.9,
            "count": 120
        }
    },
    {
        "id": 2,
        "title": "Mens Casual Premium Slim Fit T-Shirts ",
        "price": 22.3,
        "description": "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.",
        "category": "men's clothing",
        "image": "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg",
        "rating": {
            "rate": 4.1,
            "count": 259
        }
    },
    ...
]

2.1.2. Endpoint /users

El endpoint /users devuelve una lista de usuarios. Cada usuario tiene un identificador, un nombre, un email, un username, una dirección y un teléfono. La dirección es un objeto que contiene la calle, el número, la ciudad, el código postal y la geolocalización. El nombre es un objeto que contiene el nombre y los apellidos.

A continuación se muestra un ejemplo de los datos que devuelve el endpoint /users.

[
    {
        "address": {
            "geolocation": {
                "lat": "-37.3159",
                "long": "81.1496"
            },
            "city": "kilcoole",
            "street": "new road",
            "number": 7682,
            "zipcode": "12926-3874"
        },
        "id": 1,
        "email": "john@gmail.com",
        "username": "johnd",
        "password": "m38rmF$",
        "name": {
            "firstname": "john",
            "lastname": "doe"
        },
        "phone": "1-570-236-7033",
        "__v": 0
    },
    ...
]

2.1.3. Endpoint /carts

El endpoint /carts devuelve una lista de pedidos, o mejor dicho, sesiones de compra. Cada pedido tiene un identificador, un usuario, una fecha y una lista de productos. El usuario se corresponde con el identificador del usuario que ha realizado el pedido. La lista de productos es una lista de objetos que contiene el identificador del producto y la cantidad de unidades compradas. A continuación se muestra un ejemplo de los datos que devuelve el endpoint /carts.

[
    {
        "id": 1,
        "userId": 1,
        "date": "2020-03-02T00:00:00.000Z",
        "products": [
            {
                "productId": 1,
                "quantity": 4
            },
            {
                "productId": 2,
                "quantity": 1
            },
            {
                "productId": 3,
                "quantity": 6
            }
        ],
        "__v": 0
    },
    {
        "id": 2,
        "userId": 1,
        "date": "2020-01-02T00:00:00.000Z",
        "products": [
            {
                "productId": 2,
                "quantity": 4
            },
            {
                "productId": 1,
                "quantity": 10
            },
            {
                "productId": 5,
                "quantity": 2
            }
        ],
        "__v": 0
    },
    ...
]

3. Extracción de datos y transformación con Power Query

Para extraer los datos de la API de Fake Store y realizar las transformaciones necesarias vamos a utilizar Power BI. Una de las fuentes de datos que pueden usarse en Power BI es una API REST. Para ello, vamos a utilizar la funcionalidad de Power BI que permite conectarse a una API REST y extraer los datos. Además, Power BI cuenta con una herramienta llamada Power Query que permite realizar transformaciones de datos de forma sencilla.

3.1. Conexión a la API de Fake Store

Para conectarnos a la API de Fake Store y extraer los datos vamos a seguir los siguientes pasos:

  1. En el menú Inicio de Power BI, seleccionar Obtener datos y después Web.

    Note

    La categoría Web permite conectarse a una URL y extraer los datos de la página web. Si no está disponible la categoría Web, se selecciona Más. Aparece un cuadro de diálogo en el que se selecciona la categoría Otras y seleccionar Web. El cuadro de diálogo muestra la gran cantidad de fuentes de datos a las que se puede conectar Power BI.

    power query web
  2. En el cuadro de diálogo De web, introducir la URL de la API de Fake Store para la recuperación de productos https://fakestoreapi.com/products. Seleccionar Aceptar.

    power query web url products
  3. Aparece una vista previa de los datos que se pueden extraer. Esta ventana es Power Query. Seleccionar Cerrar y aplicar. Esto importa los datos en Power BI creando una tabla con los datos de los productos. La tabla está disponible en el panel Vista de datos y en la Vista de modelo.

    Note

    En el proceso de la importación de datos se podría haber realizado alguna transformación de los datos en la ventana de Power Query. En este caso, no se ha realizado ninguna transformación. Las realizaremos todas juntas más adelante.

  4. Repetir los pasos 1 a 3 para los endpoints /users y /carts. Las URLs de los endpoints son las siguientes:

Tras realizar estos pasos, se habrán importado los datos de los productos, usuarios y pedidos en Power BI. La figura siguiente ilustra las tablas importadas en Power BI disponibles en el panel Vista de modelo.

powerbi model base

3.2. Transformación de los datos

Una vez importados los datos en Power BI, vamos a realizar una serie de transformaciones para preparar los datos para el análisis. Las transformaciones que vamos a realizar son las siguientes:

  1. Modificar la tabla de productos eliminando las columnas de imagen y descripción.

  2. Modificar la tabla de pedidos para eliminar la versión y cambiar los nombres de las columnas products.productId y products.quantity por productId y quantity respectivamente.

  3. Modificar la tabla de usuarios eliminando las columnas de geolocalización, calle, número, zip, email, username, password, teléfono y versión. Además, cambiar el nombre de la columna name.firstname por firstname, la columna name.lastname por lastname y transformaremos las columnas de firstname y lastname para que muestren los datos en formato camel case.

3.2.1. Modificar la tabla de productos

Para modificar la tabla de productos y eliminar las columnas de imagen y descripción vamos a seguir los siguientes pasos:

  1. Abrir Power Query haciendo clic en el botón Transformar datos. Aparecerá Power Query con las tres tablas importadas. La figura siguiente muestra Power Query con las tablas y mostrando el contenido de la tabla de productos.

    power query products base
  2. Seleccionar las columnas image y description haciendo clic en el nombre de la columna y después en Quitar columnas. Se añadirá un nuevo paso en el panel de Pasos aplicados que indica que se han eliminado las columnas.

    Note

    Si se ha realizado un paso incorrecto en Power Query, se puede deshacer el paso eliminándolo del panel de Pasos aplicados.

  3. Seleccionar Cerrar y aplicar para aplicar los cambios y volver a Power BI.

  4. Comprobar que la tabla de productos ha quedado como se necesitaba mostrándola en la Vista de datos.

    powerbi model products

3.2.2. Modificar la tabla de pedidos

Para modificar la tabla de pedidos y eliminar la versión y cambiar los nombres de las columnas products.productId y products.quantity por productId y quantity respectivamente vamos a seguir los siguientes pasos:

  1. Abrir Power Query haciendo clic en el botón Transformar datos.

  2. Seleccionar la tabla de pedidos haciendo clic en la tabla. Aparecerá el contenido de la tabla en Power Query. La figura siguiente muestra Power Query con las tablas y mostrando el contenido de la tabla de pedidos.

    power query carts base
    Note

    De forma predeterminada, cuando Power Query se encuentra con un campo que es un objeto, si es un objeto sencillo con un número de campos fijo, Power BI crea una columna para cada campo del objeto añadiéndole el nombre del campo padre como prefijo. En este caso, como el objeto JSON del endpoint tiene un campo products que es un objeto con dos campos productId y quantity, Power BI ha creado dos columnas para estos campos con los nombres products.productId y products.quantity. Si el objeto es una lista de objetos, Power BI crea una fila por cada objeto de la lista.

  3. Seleccionar la columna v haciendo clic en el nombre de la columna y después en Quitar columnas. Se añadirá un nuevo paso en el panel de Pasos aplicados que indica que se ha eliminado la columna v.

  4. Hacer clic con el botón derecho sobre la columna products.productid y seleccionar Cambiar nombre. Cambiar el nombre de la columna a productId. Repetir el proceso para la columna products.quantity cambiando el nombre a quantity. Se añadirán dos nuevos pasos en el panel de Pasos aplicados que indican que se han cambiado los nombres de las columnas.

  5. Seleccionar Cerrar y aplicar para aplicar los cambios y volver a Power BI.

  6. Comprobar que la tabla de pedidos ha quedado como se necesitaba mostrándola en la Vista de datos.

    powerbi model carts

3.2.3. Modificar la tabla de usuarios

Para modificar la tabla de usuarios y eliminar las columnas de geolocalización, calle, número, zip, email, username, password, teléfono y versión, cambiar el nombre de la columna name.firstname por firstname, la columna name.lastname por lastname y transformar las columnas de firstname y lastname para que muestren los datos en formato camel case vamos a seguir los siguientes pasos:

  1. Abrir Power Query haciendo clic en el botón Transformar datos.

  2. Seleccionar la tabla de usuarios haciendo clic en la tabla. Aparecerá el contenido de la tabla en Power Query. La figura siguiente muestra Power Query con las tablas y mostrando el contenido de la tabla de usuarios.

    power query users base
  3. Seleccionar las columnas address.geolocation, address.street, address.number, address.zipcode, email, username, password, phone y __v haciendo clic en el nombre de la columna y después en Quitar columnas. Se añadirá un nuevo paso en el panel de Pasos aplicados que indica que se han eliminado las columnas.

  4. Hacer clic con el botón derecho sobre la columna name.firstname y seleccionar Cambiar nombre. Cambiar el nombre de la columna a firstname. Repetir el proceso para la columna name.lastname cambiando el nombre a lastname. Se añadirán dos nuevos pasos en el panel de Pasos aplicados que indican que se han cambiado los nombres de las columnas.

  5. Hacer clic con el botón derecho sobre la columna firstname y seleccionar Transformar y después Poner En Mayúsculas Cada Palabra. Se añadirá un nuevo paso en el panel de Pasos aplicados que indica que se ha cambiado el tipo de la columna a texto.

  6. Repetir el paso 5 para la columna lastname.

  7. Seleccionar Cerrar y aplicar para aplicar los cambios y volver a Power BI.

  8. Comprobar que la tabla de usuarios ha quedado como se necesitaba mostrándola en la Vista de datos.

    powerbi model users

4. Creación del modelo de datos

El modelo de datos es una representación de los datos que se va a utilizar para crear visualizaciones. En el modelo de datos se definen las relaciones entre las tablas y se crean columnas calculadas. En este caso, existe una relación 1:M entre las tablas de usuarios y pedidos, y otra relación 1:M entre las tablas de productos y pedidos. Para crear las relaciones basta con arrastrar la columna de la tabla que actúa como 1 a la columna de la tabla que actúa como M. Power BI detectará automáticamente la relación y la creará. Al crear la relación aparecerá un cuadro de diálogo en el que se puede seleccionar la cardinalidad de relación (1:M, M:1, M:M) y la dirección de filtro cruzado. Para crear las relaciones vamos a seguir los siguientes pasos:

  1. En Power BI, seleccionar la pestaña Vista de modelo.

  2. Situar la tabla Carts entre las tablas Products y Users.

  3. Arrastrar la columna id de la tabla Users a la columna userId de la tabla Carts. Power BI detectará automáticamente la relación y la creará. Aparecerá un cuadro de diálogo en el que se puede seleccionar la cardinalidad de relación y la dirección de filtro cruzado. Mantener 1:M como cardinalidad de relación y Ambas como dirección de filtro cruzado.

    Dirección de filtro cruzado

    La dirección de filtro cruzado indica si la relación se puede filtrar en ambas direcciones. Por ejemplo, si se tiene una relación entre la tabla de usuarios y la tabla de pedidos, se puede filtrar la tabla de pedidos por un usuario y la tabla de usuarios por un pedido. Si se selecciona Unico como dirección de filtro cruzado se podrá filtrar la tabla de pedidos por un usuario, pero no se podrá filtrar la tabla de usuarios por un pedido. En cambio, si se elecciona Ambas como dirección de filtro cruzado se podrá filtrar en las dos direcciones.

  4. Repetir el paso 3 para la tabla Products y la tabla Carts arrastrando la columna id de la tabla Products a la columna productId de la tabla Carts. Al igual que en la relación anterior, la relación tiene cardindalidad 1:M y la dirección de filtro cruzado es Ambas.

La figura siguiente muestra el modelo de datos con las relaciones creadas.

powerbi model relations

5. Uso de DAX para la creación de medidas y columnas calculadas

Una de las operaciones habituales en los procesos de integración y transformación de datos es la creación de medidas y columnas calculadas. Power BI permite crear medidas y columnas calculadas utilizando el lenguaje DAX (Data Analysis Expressions). Las medidas calculadas son aquellas que se calculan en función de los datos de la tabla y se utilizan para realizar cálculos agregados. Por tanto, las medidas calculadas se utilizan para realizar cálculos a nivel de tabla. Por otro lado, las columnas calculadas son nuevas columnas cuyos valores se calculan en función de los datos de la tabla y se utilizan para realizar cálculos a nivel de fila.

5.1. Creación de medidas calculadas con DAX

DAX es un lenguaje de fórmulas que se utiliza para crear medidas y columnas calculadas de forma sencilla. Las medidas calculadas se crean en función de los datos de la tabla y se utilizan para realizar cálculos agregados. Entre las principales funciones de DAX se encuentran las funciones de agregación, las funciones de filtrado y las funciones de tiempo. A continuación se muestra un ejemplo de una medida calculada que calcula el número de unidades de productos vendidos a partir de la tabla de pedidos.

ProductsSold = SUM('Carts'[quantity])

Podemos agrupar las funciones útiles para crear medidas calculadas en las siguientes categorías:

  • Funciones de agregación: SUM, AVERAGE, MIN, MAX, COUNT, COUNTA, COUNTBLANK, DISTINCTCOUNT, DISTINCTCOUNTNOBLANK, SUMX, AVERAGEX, MINX, MAXX, COUNTX, COUNTAX, COUNTAXA, DISTINCTCOUNTX, DISTINCTCOUNTNOBLANKX. Por ejemplo, la función SUM se utiliza para sumar los valores de una columna. La función COUNTA se utiliza para contar los valores no vacíos de una columna. La función DISTINCTCOUNT se utiliza para contar los valores distintos de una columna.

  • Funciones de filtrado: FILTER, ALL, ALLEXCEPT, ALLSELECTED, CALCULATE, CALCULATETABLE, KEEPFILTERS, REMOVEFILTERS. Por ejemplo, la función FILTER se utiliza para filtrar una tabla en función de una condición. La función ALL se utiliza para eliminar los filtros de una tabla. La función CALCULATE se utiliza para modificar el contexto de evaluación de una expresión.

  • Funciones de tiempo: DATE, TIME, NOW, TODAY, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, WEEKDAY, WEEKNUM, QUARTER, YEARFRAC, DATEDIFF, DATEADD, DATESBETWEEN, DATESINPERIOD, DATESMTD, DATESQTD, DATESYTD, PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER, PREVIOUSYEAR, NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR. Por ejemplo, la función YEAR se utiliza para obtener el año de una fecha. La función MONTH se utiliza para obtener el mes de una fecha. La función DAY se utiliza para obtener el día de una fecha.

5.2. Creación de columnas calculadas con DAX

Las columnas calculadas son nuevas columnas cuyos valores se calculan en función de los datos de la tabla y se utilizan para realizar cálculos a nivel de fila. DAX ofrece una serie de funciones que permiten realizar cálculos de forma sencilla. Entre las principales funciones de DAX se encuentran las funciones de texto, las funciones de fecha y hora, las funciones de lógica y las funciones de matemáticas. A continuación se muestra un ejemplo de una columna calculada que calcula el precio total de un producto vendido a partir de la tabla de pedidos.

TotalPrice = 'Carts'[quantity] * RELATED('Products'[price])

Podemos agrupar las funciones útiles para crear columnas calculadas en las siguientes categorías:

  • Funciones de texto: CONCATENATE, LEFT, RIGHT, MID, LEN, LOWER, UPPER, PROPER, TRIM, SUBSTITUTE, REPLACE, FIND, SEARCH, EXACT, TEXT, VALUE, FORMAT. Por ejemplo, la función CONCATENATE se utiliza para concatenar dos o más cadenas de texto. La función LEFT se utiliza para obtener los primeros caracteres de una cadena de texto. La función RIGHT se utiliza para obtener los últimos caracteres de una cadena de texto.

  • Funciones de fecha y hora: DATE, TIME, NOW, TODAY, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, WEEKDAY, WEEKNUM, QUARTER, YEARFRAC, DATEDIFF, DATEADD, DATESBETWEEN, DATESINPERIOD, DATESMTD, DATESQTD, DATESYTD, PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER, PREVIOUSYEAR, NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR. Por ejemplo, la función YEAR se utiliza para obtener el año de una fecha. La función MONTH se utiliza para obtener el mes de una fecha. La función DAY se utiliza para obtener el día de una fecha.

  • Funciones de lógica: IF, AND, OR, NOT, TRUE, FALSE, SWITCH, IFERROR, IFNA, ISEVEN, ISODD, ISBLANK, ISERROR, ISLOGICAL, ISNONTEXT, ISNUMBER, ISTEXT. Por ejemplo, la función IF se utiliza para evaluar una condición y devolver un valor si la condición es verdadera y otro valor si la condición es falsa. La función AND se utiliza para evaluar si todas las condiciones son verdaderas. La función OR se utiliza para evaluar si alguna de las condiciones es verdadera.

  • Funciones de matemáticas: SUM, AVERAGE, MIN, MAX, COUNT, COUNTA, COUNTBLANK, DISTINCTCOUNT, DISTINCTCOUNTNOBLANK, SUMX, AVERAGEX, MINX, MAXX, COUNTX, COUNTAX, COUNTAXA, DISTINCTCOUNTX, DISTINCTCOUNTNOBLANKX. Por ejemplo, la función SUM se utiliza para sumar los valores de columnas de una fila. La función AVERAGE se utiliza para calcular la media de valores de columnas de una fila. La función MIN se utiliza para calcular el valor mínimo de valores de columnas de una fila. La función MAX se utiliza para calcular el valor máximo de valores de columnas de una fila.

    Note

    Obsérvese que DAX tiene funciones que pueden ser utilizadas tanto para crear medidas como para crear columnas calculadas. Por ejemplo, la función SUM se puede utilizar para sumar los valores de una columna y crear una medida calculada o para sumar los valores de columnas de una fila y crear una columna calculada.

  • Funciones de tablas: FILTER, ALL, ALLEXCEPT, ALLSELECTED, CALCULATE, CALCULATETABLE, KEEPFILTERS, REMOVEFILTERS. Por ejemplo, la función FILTER se utiliza para filtrar una tabla en función de una condición. La función ALL se utiliza para eliminar los filtros de una tabla. La función ALL se utiliza para eliminar los filtros de una tabla. La función CALCULATE se utiliza para modificar el contexto de evaluación de una expresión.

  • Funciones de relación: RELATED, RELATEDTABLE, LOOKUPVALUE. La función RELATED se utiliza para obtener el valor de una columna relacionada. La función LOOKUPVALUE se utiliza para buscar un valor en una tabla relacionada.

  • Funciones de manejo de errores: IFERROR, IFNA, ISERROR, ISERR, ISNA, ERROR, ERROR.TYPE. Por ejemplo, la función IFERROR se utiliza para devolver un valor si se produce un error. La función IFNA se utiliza para devolver un valor si se produce un error #N/A.

5.3. Creación de medidas y columnas calculadas para el caso de estudio

Para el caso de estudio de la API de Fake Store vamos a crear las siguientes medidas y columnas calculadas:

  • Tabla Carts:

    • Medida calculada: TotalUsersWithCarts: Cuenta el número de usuarios con pedidos.

    • Columna calculada: amount: Calcula el importe total de cada línea de un pedido.

  • Tabla Products:

    • Medida calculada TotalProducts: Cuenta el número total de productos.

    • Medida calculada TotalSales: Total de ventas de los productos.

    • Medida calculada MaxRating: Calcula la máxima valoración de los productos.

    • Medida calculada MinRating: Calcula la mínima valoración de los productos.

    • Medida calculada AvgRating: Calcula la media de las valoraciones de los productos.

    • Medida calculada TotalRating: Calcula el total de valoraciones de los productos.

Para crear las medidas y columnas calculadas vamos a seguir los siguientes pasos:

  1. En Power BI, seleccionar la pestaña Vista de modelo.

  2. Seleccionar la tabla Carts.

  3. Hacer clic en el botón Nueva medida en la barra de herramientas o hacer clic con el botón derecho en la tabla Carts y crear la medida desde el menú contextual. La medida se creará en la barra de fórmulas en la parte superior. Esta sería la fórmula de la medida calculada usando la función COUNTROWS:

    • TotalUsersWithCarts = COUNTROWS('carts')

  4. Hacer clic en el botón Nueva columna en la barra de herramientas o hacer clic con el botón derecho en la tabla Carts y crear la columna desde el menú contextual. La columna se creará en la barra de fórmulas en la parte superior. Esta sería la fórmula de la columna calculada usando la función RELATED:

    • amount = 'carts'[quantity] * RELATED('products'[price])

  5. Seleccionar la tabla Products.

  6. Hacer clic en el botón Nueva medida en la barra de herramientas o hacer clic con el botón derecho en la tabla Products y crear la medida desde el menú contextual. La medida se creará en la barra de fórmulas en la parte superior. Estas serían las fórmulas de las medidas calculadas usando las funciones SUM, AVERAGE, MAX y MIN.

    • TotalProducts = COUNTROWS('products')

    • TotalSales = SUM('carts'[amount])

    • MaxRating = MAX('products'[rating.rate])

    • MinRating = MIN('products'[rating.rate])

    • AvgRating = AVERAGE('products'[rating.rate])

    • TotalRating = SUM('products'[rating.count])

La figura siguiente muestra el modelo con las medidas y columnas calculadas creadas en Power BI.

powerbi model calculated

6. Creación de visualizaciones

Una vez que se han creado las medidas y columnas calculadas, se pueden utilizar para crear visualizaciones. Como vimos en el tutorial de Visualización de datos con Power BI, Power BI ofrece una gran variedad de visualizaciones que permiten representar los datos de forma gráfica. Entre las visualizaciones más comunes se encuentran las tablas, los gráficos de barras, los gráficos de líneas, los gráficos de áreas, los gráficos de sectores, los gráficos de dispersión y los mapas. La figura siguiente ilustra el informe que crearemos para el caso de estudio de la API de Fake Store. En la figura se puede ver la distribución de las visualizaciones en el informe.

powerbi fake store report

A continuación se muestran las visualizaciones que crearemos para el caso de estudio de la API de Fake Store:

  • Tarjetas: Tarjetas sin etiqueta de categoría, título centrado, fondo y borde celeste, borde redondeado. Como títulos utilizaríamos Productos, Ventas, Valoración máxima, Valoración mínima, Valoración media y Valoraciones. Crearemos una tarjeta inicial para la primera medida calculada TotalProducts y después duplicaremos la tarjeta para el resto de medidas calculadas.

  • Segmentador de datos: Segmentador de valoración para el campo rating.rate de la tabla Products para crear el segmentador. Cambiar el título a Valoración y dejar el estilo a Entre en la pestaña Objeto visual del menú Dar formato a objeto visual para que se pueda seleccionar un rango de valoraciones.

  • Gráfico de anillos: Gráfico de anillos para mostrar el total de productos por categoría. Seleccionar el campo category de la tabla Products para el valor de Leyenda y la medida calculada TotalProducts para el valor de Valores. Cambiar el título a Productos por categoría.

  • Gráficos de barras: Gráficos de barras para valoración media por categoría y para ventas por categoría.

    • Ventas por categoría: Seleccionar el campo category de la tabla Products para el valor de Eje Y y la medida calculada TotalSales para el valor de Eje X. Cambiar el título a Ventas por categoría.

    • Total de valoraciones por categoría: Seleccionar el campo category de la tabla Products para el valor de Eje Y y la medida calculada TotalRatings para el valor de Eje X. Cambiar el título a Valoraciones por categoría.

  • Gráfico de mapa para compradores por ciudad. Seleccionar el campo city de la tabla Users para el valor de Ubicación y la medida calculada TotalUsersWithCarts para el valor de Tamaño de la burbuja. Cambiar el título a Compradores por ciudad.

  • Gráfico de líneas para evolución de las ventas. Seleccionar el campo date de la tabla Carts para el valor de Eje X (seleccionar sólo el mes) y la medida calculada TotalSales para el valor de Eje Y. Cambiar el título a Ventas por mes.

  • Gráfico de barras para compradores por categoría. Seleccionar el campo category de la tabla Products para el valor de Eje X y la medida calculada TotalUsersWithCarts para el valor de Eje Y. Cambiar el título a Compradores por categoría.

  • Tablas de datos: Una tabla de ventas por producto y otra de usuarios.

    • Tabla de ventas por producto: De la tabla carts seleccionar los campos quantity y amount dos veces (una para mostrar el importe de ventas y otra para mostar ese importe en forma de porcentaje). De la tabla products seleccionar los campos title, AvgRating y TotalRating. Cambiar los títulos a Producto, Unidades, Ventas, %Ventas, Valoración y Valoraciones.

    • Tabla de usuarios: De la tabla users seleccionar los campos id, firstname, lastname y city. Cambiar los títulos a id, Nombre, Apellidos y Ciudad.

  • Crear un cuadro de texto con el título del informe (p.e. Productos - Análisis de ventas y valoraciones. Fake Store).

Una vez creadas estas visualizaciones obtendremos el informe que aparece en la figura anterior.

7. Otra situación habitual de transformación de datos. Modelado en columnas

Hasta ahora hemos visto un caso de estudio de transformación de datos con Power BI. Como es de esperar, existen gran cantidad de situaciones que se pueden presentar, pero hay una a que vamos a prestar especial atención en este tutorial, y es el caso de la solución al problema del modelado en columnas. Para ilustrar estos casos, usaremos una fuente de datos de ejemplo que contiene datos que presentan este problema. Se trata de un dataset en formato CSV de datos de ventas de videojuegos.

7.1. Descripción de la fuente de datos

Tal y como aparece en la documentación de la fuente de datos del ejemplo, el dataset contiene información sobre las ventas de videojuegos en diferentes regiones del mundo. La figura siguiente ilustra una muestra de los datos del dataset.

powerbi videojuegos datos

Como se puede observar en la figura, cada fila contiene información sobre un juego y cada columna contiene información sobre el juego. A modo de resumen, las columnas de la tabla representan propiedades de los juegos como el nombre, la plataforma, el año de lanzamiento, el género, la editorial y las ventas en diferentes regiones del mundo. En este caso, las columnas NA_Sales, EU_Sales, JP_Sales, Other_Sales y Global_Sales contienen información sobre las ventas en diferentes regiones del mundo. Este tipo de datos se conoce como datos en formato ancho. Para poder realizar un análisis de los datos, es necesario transformar los datos en formato ancho a formato largo. En este caso, se trata de un problema de modelado en columnas.

Modelado en formato ancho y en formato largo

En el modelado en formato ancho (o modelado en columnas), cada columna contiene información sobre una variable y cada fila contiene información sobre una observación. En el modelado en formato largo, cada columna contiene información sobre una variable y cada fila contiene información sobre una observación.

7.2. Solución al problema de modelado en columnas

Para solucionar el problema de modelado en columnas vamos a seguir los siguientes pasos:

  1. En Power BI, seleccionar la pestaña Inicio.

  2. Seleccionar Obtener datos y después CSV.

  3. Seleccionar el archivo CSV con los datos de ventas de videojuegos.

  4. En el cuadro de diálogo Importar datos, seleccionar Cargar.

    Note

    En el proceso de carga de importación de datos, Power BI ofrece la posibilidad de realizar transformaciones en los datos sobre la marcha en el proceso de importación. Esto nos llevaría directamene a Power Query para definir las transformaciones a realizar sobre los datos. Sin embargo, en este caso cargaremos primero los datos y posteriormente realizaremos las transformaciones necesarias con Power Query. No obstante, se podría haber optado por realizar la transformación con Power Query sobre la marcha en el proceso de importación de datos.

  5. Una vez importados los datos, seleccionar la tabla de datos en la Vista de tabla.

  6. Seleccionar la opción Transformar datos del menú Inicio para abrir Power Query.

  7. En Power Query, seleccionar las columnas NA_Sales, EU_Sales, JP_Sales y Other_Sales.

  8. Hacer clic con el botón derecho sobre las columnas seleccionadas y seleccionar Anulación de dinamización de columnas. Power Query eliminará las columnas seleccionadas, y creará una nueva columna con los valores de las ventas y otra columna con los nombres de las regiones.

  9. Cambiar el nombre de las columnas creadas a Region y Sales.

  10. Aprovecharemos y cambiaremos el nombre de las regiones a un formato más legible. Por ejemplo, cambiaremos NA_Sales por North America, EU_Sales por European Union, JP_Sales por Japan y Other_Sales por Other. La sustitución de valores está disponible en el menú Transformar | Reemplazar valores.

  11. Eliminaremos la columna Global_Sales ya que no es necesaria.

  12. Seleccionar Cerrar y aplicar para aplicar los cambios y volver a Power BI.

  13. Comprobar que la tabla de datos ha quedado como se necesitaba mostrándola en la Vista de tabla.

La figura siguiente muestra la tabla de datos con las ventas de videojuegos en formato largo.

powerbi videojuegos modelado
El formato largo de los datos y la redundancia de datos

Al observar el resultado de la transformación a formato largo de los datos, podemos ver que aparece redundancia en las filas, ya que se repiten los datos de los juegos para cada región. Esto es una característica del formato largo de los datos, en el que cada fila contiene información sobre una observación. En este caso, cada observación es una venta de un juego en una región. Si se optata por un modelo sin redundancia, se podría dejar una tabla con los datos característicos de los juegos y otra tabla con las ventas en las diferentes regiones, que tendría una relación 1:M con la tabla de datos de los juegos. Sin embargo, en entornos de análisis de datos, y en particular en entornos de data warehousing, es común encontrar redundancia de datos en las tablas para facilitar el análisis de los datos. Como la carga de datos al data warehouse es realizada por procesos ETL que están programados para manejar la redundancia de datos, no es un problema en estos entornos y las consideraciones de normalización de bases de datos no son tan importantes como en entornos transaccionales u operacionales.

7.3. Creación de visualizaciones con los datos transformados

Una vez que se han transformado los datos de formato ancho a formato largo, se pueden utilizar los datos obtenidos para crear visualizaciones. La figura siguiente ilustra un ejemplo de informe que podríamos crear para el caso de estudio de la fuente de datos de ventas de videojuegos. En la figura se puede ver la distribución de las visualizaciones en el informe.

powerbi videojuegos report

Para crear este informe se pueden utilizar las siguientes visualizaciones:

  • Tarjeta con total de ventas: Usar el campo Sales para el valor de la tarjeta.

  • Gráfico de anillo con total de ventas por región: Usar el campo Region para el valor de Leyenda y el campo Sales para el valor de Valores. Cambiar la posición de la leyenda a Arriba, en el centro en la pestaña Objeto visual del menú Dar formato a objeto visual.

  • Gráfico de barras apiladas con total de ventas por plataforma: Usar el campo Platform para el valor de Eje Y y el campo Sales para el valor de Eje X. Mostrar las etiquetas de datos en la parte exterior de las barras en la pestaña Objeto visual del menú Dar formato a objeto visual.

  • Gráfico de barras apiladas de ventas por género: Copiar el gráfico anterior y cambiar el campo Platform por el campo Genre.

  • Tabla de datos con las columnas de nombre, año, género, plataforma y editorial.

  • Gráfico de columnas con ventas por año ordenado cronológicamente: Usar el campo Year para el valor de Eje X y el campo Sales para el valor de Eje Y. Ordenar el eje X de forma cronológica haciendo clic sobre la visualización en los puntos suspensivos y seleccionar Ordenar eje | Year | Ascendente.

  • Crear segmentador de datos para filtrar las ventas por región: Usar el campo Region para el segmentador de datos. Cambiar el estulo a Mosaico en la pestaña Objeto visual del menú Dar formato a objeto visual dentro de la opción de Configuración de la segmentación.

  • Crear segmentadores de lista desplegable para filtrar las ventas por plataforma, género, editorial y año: Usar los campos Platform, Genre, Publisher y Year para los segmentadores de lista. Cambiar el estilo a Menú desplegable en la pestaña Objeto visual del menú Dar formato a objeto visual dentro de la opción de Configuración de la segmentación.

Una vez creadas estas visualizaciones obtendremos el informe que aparece en la figura anterior.

8. Conclusiones

En este tutorial hemos visto cómo realizar la integración y transformación de datos con Power BI. Hemos visto cómo importar datos de una API REST y de un archivo CSV, cómo realizar transformaciones de los datos con Power Query y cómo crear un modelo de datos con Power BI. Además, hemos visto cómo utilizar DAX para crear medidas y columnas calculadas y cómo crear visualizaciones con los datos transformados. Hemos visto un caso de estudio de la API de Fake Store y otro caso de estudio de datos de ventas de videojuegos. Power BI es una herramienta muy potente que permite realizar análisis de datos de forma sencilla y visual. Con Power BI se pueden realizar análisis de datos, crear informes y compartirlos con otras personas.