Comparando productos (películas) similares con Power BI

Un poco de historia: en el pasado, solía trabajar para una empresa con un equipo verdaderamente estelar e increíble. Todos éramos parte de esta empresa llamada 20th Century Fox, y nos encargábamos de la distribución de películas en los cines en América Central.

La inteligencia de negocios (o  Business Intelligence) no era un estándar en la industria, al menos no como conocemos el BI hoy en día, y yo era la persona a cargo del uso de herramientas de BI para analizar el aspecto de las ventas del negocio, específicamente la taquilla. Y así es como encontré PowerPivot (sin los espacios en ese entonces) y el lenguaje DAX. Profundicé e incluso tomé el Taller de Power Pivot en línea que Marco y Alberto solían ofrecer en diciembre de 2011.

Pude implementar un MÓNTÓN de informes, análisis y tableros gracias a Power Pivot, pero una cosa que no pude implementar en ese entonces (porque comencé la aventura con mi propia empresa), fue una comparación de películas “similares” para la planificación del lanzamiento de una próxima película.

Antes de que una película llegue a un determinado teatro/cine /estudio/ubicación, tiene que pasar por una fase de planificación. Esta comienza con un cálculo de cuánto dinero podría hacer esa película, pero ¿cómo podemos saberlo?

Bueno, teníamos algunas opciones, pero al final se trataba de un enfoque manual en el que deberías pensar qué películas podrían ser similares a esta (desde todas las perspectivas que puedas imaginar). Luego tendrías que revisar el sistema y buscar cada una de las películas similares para poder obtener el ingreso bruto total de cada una.

¿Qué pasaría si… tuvieras una tabla con todas las películas parecidas (generalmente llamadas Comps) y que simplemente pudieras seleccionar la película que te interesa y se mostrarán también todas las Comps?

Por supuesto, esto no solo se aplica a las películas, sino a cualquier producto/servicio que te gustaría comparar con productos similares.

¡Aquí es donde entra esta publicación!


La Fuente de Datos

Para replicar este escenario, obtendremos los datos de BoxOfficeMojo.

Continué y creé algunas consultas de web scraping para obtener los datos de las siguientes páginas:

  • La página principal de la película (url) –esto me dará información general sobre la película, como el total bruto nacional, la fecha de estreno, la duración, el presupuesto, el género y más

  • Datos de Daily Box Office (url) –esta tiene todos los datos de los Estados Unidos, pero me puede dar información sobre cómo estuvo el día de estreno, por lo que puedo comparar el día/semana /mes de estreno de varias películas.

  • Películas Similares (url) – aquí es donde puedo obtener todas las películas que son similares a la que busco.

Usé Power BI para capturar todos los datos de diferentes películas publicadas en BoxOfficeMojo. Si deseas ver cómo logré que eso sucediera, deja un comentario en este artículo. Tengo curiosidad de saber cuántas personas están interesadas en esto.

He colocado todos estos datos dentro de un archivo Excel, para que sea más fácil de compartir. Puedes descargar ese archivo, así como el PBIX final, en el siguiente botón.

Descargar Archivos

El Modelo de Datos

Por lo general, la mayoría de las personas tratan de entender DAX antes de hacer cualquier otra cosa, pero prefiero que las personas sepan más sobre el modelado de datos antes de entrar en escenarios DAX más avanzados.

Casi el 70% de los escenarios que he enfrentado, y que originalmente fueron etiquetados como de “DAX avanzado”, se resolvieron simplemente con una mejor técnica de modelado, generalmente por medio de Power Query para dar forma a los datos de manera más óptima. Power Query es una gran herramienta para dar forma a tus datos y una de las herramientas fundamentales cuando se trata del modelado de datos con Power BI.

Esta es la razón por la que iniciamos con el modelo de datos.

Cargar los Datos

Esta es la parte fácil. Crea un nuevo informe de Power BI Desktop y conéctalo al archivo de Excel que acabas de descargar.

Como se muestra en la imagen anterior, debes seleccionar las 3 tablas (no las hojas de trabajo) y cargar estas 3 en tu modelo de datos.

Crear las relaciones

Lo primero que debemos hacer es simplemente cargar las 3 tablas del libro de Excel a Power BI. Esa es la parte fácil, y luego viene otra parte que también es fácil y es crear la relación entre tablas.

La tabla BOM_Films del libro de Excel es básicamente una tabla de dimensiones de todas las películas que tenemos. Su campo clave principal se llama ID.

Ese mismo campo aparece en la tabla de Daily Box Office como una clave externa con el mismo nombre de campo ID. Aquí, nuestra tabla Daily Box Office es lo que llamamos una tabla de hechos, porque tiene principalmente datos fácticos: las ventas diarias (taquilla) para cada película.

Luego tenemos la tabla Comps que se ve así:

y probablemente puedes decir que básicamente aquí ambos campos usan el mismo campo de la tabla BOM_Films. Ambos son la identificación de la película, pero ¿cuál debemos usar para la relación?

En este caso, usaremos el campo de identificación de la tabla Comps, que tendrá una relación con el campo ID de la tabla BOM_Films.

  • Facebook
  • Twitter
  • LinkedIn

Añadir una tabla nueva

Como puedes ver en el video de arriba, queremos buscar la película que será nuestra película “principal” y ver qué películas similares hay. Para que esto suceda, no podemos usar el mismo campo de la misma tabla en ambas visualizaciones, por lo que es necesario crear una nueva tabla que tenga el ID y el nombre de la Película.

En lugar de crear eso con Power Query (y agregar más llamadas a BoxOfficeMojo), podemos crear una tabla calculada sencilla como la siguiente:

Llamemos a esta nueva tabla Selection. Ahora tenemos 2 opciones:

  • Podemos crear una solución con esa tabla como una tabla desconectada y usar algo como KEEPFILTERS para pasar ese valor seleccionado a nuestro contexto de filtro o
  • Crear una relación entre esa nueva tabla y la tabla Comps

Ambos pueden hacer el trabajo, pero en este caso voy a optar por la solución más fácil para mí, que es crear una relación de esa nueva tabla con la tabla Comps usando el ID de la nueva tabla Selection contra la columna Comp de la tabla Comps.

Aquí hay una captura de pantalla donde puedes ver cómo deberían ser todas las relaciones

The measure

En este momento, todo lo que necesitamos es crear la siguiente medida:

Selected = CALCULATE( DISTINCTCOUNT( Comps[id]), BOM_Films)

una vez que creas eso, puedes crear una nueva página de informe usando el Nombre de la Película de la tabla Selection como un cortador/filtro y luego otra forma visual utilizando la medida recién creada y la columna Nombre de la Película de la tabla BOM_Films que terminará viéndose así:

Podemos añadir una nueva medida como esta:

Daily BOR = CALCULATE( SUM( ‘Daily Box Office'[Gross]), Comps, BOM_Films)

Lo que da como resultado los datos de Daily Box Office solo para las películas similares a la película seleccionada: 

Hacer que luzca bien: una forma de arte

No solo la película debe verse bien, sino que este informe también debe verse bien. Al final, todo se trata de creatividad y el mensaje que intentamos transmitir a través de ese informe.

Creé el siguiente informe con 2 páginas que responden a 2 preguntas principales:

  • ¿Cuáles son las películas similares a las películas seleccionadas?
  • ¿Cuál es el rendimiento de esas películas similares en sus x días (para rastrear el día de estreno y otros)?

Una de las mejores cosas de la nueva experiencia de web scrapping con Power BI Desktop es que puedes acceder a los atributos de la página HTML utilizando los selectores CSS, lo que significa que puedo acceder al src e incluso al href con bastante facilidad. En términos sencillas, puedo tomar la url del póster de cada película con facilidad y puedes ver ese campo en la tabla BOM_Films debajo de la columna de la imagen.

Debes ir a Data view dentro de Power BI Desktop y definir las propiedades de esa columna de imagen para que sea una URL de imagen:

y una vez que lo hagas, puede agregar ese campo a su presentación visual y se mostrará el póster de esa película:
  • Facebook
  • Twitter
  • LinkedIn

Ahora, ¿cómo podemos hacer que esto se vea bien? Tuve que investigar un poco sobre cuál era el mejor conjunto de imágenes para usar en este caso.

Al final, elegí tener 2 imágenes personalizadas:

  • Facet Key – para mejorar un poco la experiencia de búsqueda de películas

  • Card Browser – para mostrar las comps similares de la manera más limpia mientras se muestran los carteles de forma completa.

¡Prueba el informe!