Einstein Analytics: 10 novedades imprescindibles en la Summer ’20

El verano ya está cerca y con él la release Summer ’20 de Salesforce. Ésta, incluye muchas novedades en Einstein Analytics. Tal y como viene siendo habitual, esta nueva versión viene con gran cantidad de nuevas funcionalidades para que no caigamos en el aburrimiento.

Los que estamos desarrollando informes con Einstein Analytics estamos deseando tener en producción

1. Data Prep 3.0 (Beta) 🆒🆒🆒

Esta es la novedad estrella de esta nueva versión (ya lo comentaba en este post).

Esta nueva herramienta pretende eliminar la complejidad de los dataflows y recipes actuales a una nueva interfaz en la que se pretende que la mayoría de las acciones sean a través de la interfaz de usuario y menos programáticas. De esta forma la herramienta se hace más user friendly y disminuir el tiempo de aprendizaje.

Link.

2. Detect Sentiment 🙂

Dentro de la nueva herramienta de preparación datos encontramos otra de las novedades: la nueva transformación «Detect Sentiment» (detectar sentimiento).

Esta herramienta permite detectar, dentro de un campo de texto, si en general el texto es: positivo, negativo o neutral. Esto es muy útil si los campos de texto son comentarios de clientes, respuestas de encuentas, etc.

Link.

3. Output connectors ✍️

A partir de esta versión Einstein Analytics será capaz de «escribir» en otros sistemas. Esta funcionalidad también forma parte de la nueva herramienta de preparación de datos. Se presenta como una ampliación de la transformación que registra (guarda) el dataset.

De momento podremos escribir en:

  • Amazon S3 (Beta): este conector estará ya disponible en la versión summer ’20 aunque será «beta».
  • Snowflake (Pilot): este conector estará disponible solo para los que formen parte del programa piloto.

Link1. Link2.

4. Mejoras en la conexión con Google Cloud👍

Desde hace ya versiones se está apostando mucho por la conexión con Google Cloud. En esta nueva versión de la plataforma este conector viene con mejoras. Se podrán filtrar los datos de los objetos conectados (de Big Query y de Standard SQL) para así no traerlos todos y mejorar la rapidez.

Link.

5. Pivot tables 🆒🆒🆒

Hasta el momento las pivot tables tenían muchas limitaciones. He estado a punto de publicar trucos en SAQL para explicar como añadir múltiples medidas… ¡pero ya no va a hacer falta! A partir de esta nueva versión las pivot tables admiten múltiples medidas.

Además, se podrán formatear mucho más.

Link.

6. Widget de texto ✔️

Después de programar muchos data bindings para añadir texto dinámico: ¡ya se puede hacer con la interfaz de usuario!

Link.

7. Suscripción a una tabla (Beta)

Ahora te puedes suscribir a cualquier widget para que te envíe de forma programada los datos en un fichero de tipo CSV.

Link.

8. Watchlist

Esta funcionalidad aún beta sigue incorporando mejoras:

  • Se pueden ver hasta 20 KPIs (indicadores).
  • Al seleccionar un KPI se despliega su detalle con la tendencia temporal.

Link.

9. Learning journey👩‍🎓

Se podrá añadir a los dashboards una guía para que los usuarios aprendan a utilizar el informe.

Link.

10. Historial en los Dataflows 🆒🆒🆒

Y para acabar otra de las novedades que a mí personalmente me hacen mucha ilusión: ¡que se guarde un historial con las modificaciones en los dataflows!

Hasta el momento la manera más segura de trabajar con los dataflows era guardarse el fichero JSON. Además, si hacías cualquier cambio y querías volver atrás o si cerrabas sin querer, no había forma de recuperar los cambios.

Conclusión

En este post he hecho un resumen de las características que me han parecido más relevantes. Pero hay muchas más, sobre todo respecto la parte de inteligencia artificial (Einstein Discovery).

¡Aquí puedes consultar todas las novedades del verano!

Dataflows, Recipes y Data Prep

La preparación de datos para hacer análisis es fundamental y es una tarea en la que se emplea bastante tiempo. Einstein Analytics (EA) es una herramienta de análisis que incluye herramientas para la preparación de datos. Las dos principales son:

  • Dataflows. Permiten crear flujos de transformaciones que resultan en 1 o más datasets.
  • Recipes. Permite crear 1 dataset combinando datos y haciendo pequeñas transformaciones.
La imagen tiene un atributo ALT vacío; su nombre de archivo es image-4.png

No son «herramientas ETL» como tales pero conociéndolas a fondo permiten llegar al nivel suficiente para que el dato esté preparado para ser representando en un dashboard de EA.

Trabajando con Dataflows y Recipes: ¿pero dónde están los joins?

Antes de trabajar con EA, yo había estado trabajando con herramientas ETL. Y cuando empecé a trabajar con EA y vi la parte de preparación de datos, me quedé muy decepcionada, porque había muy pocas trasnformaciones.

Lo primero que eché en falta a la hora de preparar los datos en EA con dataflows (¡y recipes!!!) fue la falta de poder combinarlos mediante joins 😲😱. Solo se podían unir los datos mediante transformaciones llamadas «augment«, que hacen justamente lo que su nombre indica. ¡Pero nada tiene que ver con un join! Hay que leer muy bien la documentación para saber al detalle el uso (cosa que es fundamental). Cuando entiendes cómo funciona un augment es cuando puedes empezar a combinar los datos.

El que no haya habido la posibilidad de preparar datos mediante joins es algo que me ha limitado bastante en varias ocasiones.

¿Dataflows o recipes?

La herramienta de generar recipes siempre ha sido más limitada (genera un único dataset, tiene menos transformaciones…). Por eso siempre he acabado trabajando con dataflows. Pueden parecer aparatosos pero en realidad son muy prácticos y permiten hacer bastantes cosas.

Con el tiempo, el conocimiento y la ayuda de muchas personas en la comunidad, he llegado a hacer grandes transformaciones con los dataflows.

Pero también me he dado cuenta de que los dataflows y las recipes NO son herramientas ETL, aunque te pueden llegar a facilitar muchas cosas. EA es una herramienta de análisis (y de IA: «augmented BI»). Pero si trabajas con gran cantidad de datos que requieran de limpieza o de grandes transformaciones para poderlos analizar, lo mejor es construir una «plataforma de datos» (Data Customer Platform) previa al análisis.

Nueva herramienta de preparación de datos: Data Prep

En la release Summer ’19 apareció una gran novedad: los joins (agosto de 2019). A mí lo que me sorprendió es que este cambio apareciese en la herramienta de recipes y no como transformación en los datataflows. Esto quería decir que se estaba apostando por esta herramienta (recipes) y que podría ser que los dataflows perdieran peso.

La herramienta de recipes pasó a llamarse «Data Prep» en la summer ’19.

Además, en esta keynote del pasado Dreamforce (aproximadamente en el minuto 36), se puede ver la siguiente imagen:

Así pues, parece que en breve veremos nuevos grandes cambios en Data Prep.

Edición posterior

14-04-2020 En este artículo Rikke nos explica las primeras novedades de este nuevo editor que estará disponible como Beta en la release Summer ’20 y con toda su funcionalidad en la Summer ’21.

Compute relative: crear campo de tipo fecha mediante SAQL

La tranformación Compute Relative nos sirve para realizar cálculos entre diferentes rows de un dataset y no solo con los campos de la misma row. En particular, sirve para realizar cálculos entre las rows «actual», «primera», «previa» y «siguiente».

Cómo funciona la transformación Compute Relative

Como hemos dicho esta transformación nos permite hacer cálculos entre diferentes rows. Primero se debe agrupar y ordenar los datos:

Luego se agrega el nuevo campo:

Como se puede ver, se está calculando por SAQL un nuevo campo de tipo fecha: ¡pero en el campo tipo pone «numérico»! Y esto es así porque solo se puede seleccionar «numérico» y «texto». Y si ejecutamos esta transformación, dará error.

Cómo cambiar el campo a tipo Fecha

Para cambiar este campo a tipo fecha se debe hacer editando el fichero JSON de la siguiente forma:

Y, aunque en la interfaz el campo se sigue viendo como de tipo numérico, el campo calculado será una fecha y el proceso no dará error.

Cómo visualizar una «compare table» a modo de «value table»

Con mi primera entrada en este blog me gustaría explicar un pequeño truco que aprendí no hace mucho frente a una necesidad de un cliente: mostrar una compare table con el formato de una value table.

Delante de esta petición y como necesitaba sin duda una compare table porque realmente tenía que agrupar los datos para operar sobre ellos… lancé mi duda a la comunidad. Y la respuesta no tardó en llegar.

Compare table vs Value table

Para empezar veamos las diferencias entre una compare table y una value table.

Yo necesitaba agrupar los datos para poder operar sobre estas agrupaciones. Para esto, hay que usar una compare table y ésta se ve de la forma siguiente:

Pero el cliente quería ver los datos de esta otra forma (tal y como se ven en una tabla de tipo value table), sin agrupar:

El motivo de la petición, pues, era meramente estético.

Editando el fichero JSON

En mi caso como necesitaba una lense, edité el código de ésta mediante la combinación de teclas CTRL+E.

Antes de hacer CTRL+E, hay que convertir la query (o step) a tipo «SAQL», ya que por defecto, cuando se crea con la interfaz, es de tipo aggretateflex parecido a esto:

Para convertirlo a SAQL simplemente hay que ir a modo SAQL, modificar alguna cosa (poner un espacio en blanco por ejemplo), y darle a ejecutar la query. Nos quedará el fichero JSON parecido a lo siguiente:

A continuación, hay que hacer los siguientes cambios marcados en amarillo de forma manual en el fichero JSON (ctrl+E):

  1. Cambiar el tipo de tabla de tipo «comparisontable» –> «valuestable»
  2. Informar el apartado «numbers» para los valores que sean numéricos. El orden por el que aparecerán será el que se indique en este apartado.
  3. Informarel apartado «strings» para los valores que sean dimensiones. El orden por el que aparecerán será el que se indique en este apartado.

A tener en cuenta…

Y aunque de una forma muy sencilla se ha conseguido el objetivo, hay que tener en cuenta que la lense o la query en el dashboard correspondiente ya solo se podrá modificar mediante el código en el fichero JSON.