Configuración de la actualización incremental y los datos en tiempo real

En este artículo se describe cómo configurar la actualización incremental y los datos en tiempo real para los modelos semánticos. A fin de obtener información sobre cómo configurar la actualización incremental para flujos de datos, vea Características Premium de flujos de datos: Actualización incremental.

La configuración de la actualización incremental incluye la creación de los parámetros RangeStart y RangeEnd, la aplicación de filtros y la definición de una directiva de actualización incremental. Después de publicar en el servicio Power BI, se debe realizar una operación de actualización inicial en el modelo. La operación de actualización inicial y las posteriores aplican la directiva de actualización incremental que se ha definido. Antes de completar estos pasos, asegúrese de comprender perfectamente la función descrita en Actualización incremental y datos en tiempo real para modelos semánticos.

Creación de parámetros

En esta tarea, use el Editor de Power Query para crear los parámetros RangeStart y RangeEnd con valores predeterminados. Los valores predeterminados solo se aplican al filtrar los datos que se cargarán en el modelo en Power BI Desktop. Los valores que especifique solo deben incluir una pequeña cantidad de los datos más recientes del origen de datos. Cuando se publican en el servicio, la directiva de actualización incremental invalida estos valores de intervalo de tiempo. Es decir, la directiva crea ventanas de datos entrantes, una después de otra.

  1. En Power BI Desktop, seleccione Transformar datos en la cinta Inicio para abrir el Editor de Power Query.

  2. Seleccione la lista desplegable Administrar parámetros y, a continuación, elija Nuevo parámetro.

  3. En el campo Nombre, escriba RangeStart (distingue mayúsculas de minúsculas). En el campo Tipo, seleccione Fecha y hora en la lista desplegable. En el campo Valor actual, escriba un valor de fecha y hora de inicio.

    Define the Range Start parameter in the Manage Parameters dialog.

  4. Seleccione Nuevo para crear un segundo parámetro denominado RangeEnd. En el campo Tipo, seleccione Fecha y hora y, a continuación, en el campo Valor actual, escriba un valor de fecha y hora de finalización. Seleccione Aceptar.

    Define the Range End parameter in the Manage Parameters dialog.

Ahora que tiene los parámetros RangeStart y RangeEnd, filtre los datos que se van a cargar en el modelo en función de esos parámetros.

Filtrado de los datos

Nota

Antes de continuar con esta tarea, compruebe que la tabla de origen tiene una columna de fecha de tipo de datos Fecha y hora. Si no tiene una columna de fecha y hora, pero tiene una columna de fecha de claves suplentes de enteros en forma de yyyymmdd, siga los pasos descritos en Conversión de DateTime en entero más adelante en este artículo para crear una función que convierta el valor de fecha y hora en los parámetros para que coincida con la clave suplente de entero de la tabla de origen.

Ahora aplicará un filtro basado en las condiciones de los parámetros RangeStart y RangeEnd.

  1. En el Editor de Power Query, seleccione la columna de fecha por la que quiere filtrar y luego elija la flecha desplegable >Filtros de fecha>Filtro personalizado.

  2. En Filtrar filas, para especificar la primera condición, seleccione posterior a o posterior o igual que, luego Parámetro y, por último, RangeStart.

    Para especificar la segunda condición, si ha seleccionado posterior a en la primera condición, seleccione anterior o igual que, o si ha seleccionado posterior o igual que en la primera condición, seleccione anterior a para la segunda condición, luego Parámetro y, por último, RangeEnd.

    Filter rows dialog showing Range Start and Range End conditions.

    Importante: Compruebe que las consultas tienen un valor igual a (=) en RangeStart o RangeEnd, pero no en ambos. Si el valor igual a (=) existe en ambos parámetros, una fila podría satisfacer las condiciones de dos particiones, lo que podría provocar la duplicación de datos en el modelo. Por ejemplo, = Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) podría dar lugar a datos duplicados si hay un valor de OrderDate igual a RangeStart y RangeEnd.

    Seleccione Aceptar para cerrar.

  3. En la cinta Inicio de Editor de Power Query, seleccione Cerrar y Aplicar. Power Query carga los datos en función de los filtros definidos en los parámetros RangeStart y RangeEnd, y en cualquier otro filtro definido.

    Power Query carga solo los datos especificados entre los parámetros RangeStart y RangeEnd. En función de la cantidad de datos de ese periodo, la tabla debería cargarse rápidamente. Si esta parece lenta e intensiva en procesos, es probable que la consulta no se esté plegando.

Definición de directiva

Después de definir los parámetros RangeStart y RangeEnd, y filtrar los datos en función de esos parámetros, defina una directiva de actualización incremental. La directiva se aplica solo después de que el modelo se publique en el servicio y se realice una operación de actualización manual o programada.

  1. En la vista Datos, haga clic con el botón derecho en una tabla en el panel Datos y seleccione Actualización incremental.

    Data view showing Table context menu with Incremental refresh selected.

  2. En Actualización incremental y datos en tiempo real>Seleccionar tabla, compruebe o seleccione la tabla. El valor predeterminado del cuadro de lista Seleccionar tabla es la tabla seleccionada en la vista Datos.

  3. Especifique la configuración necesaria:

    En Establecer intervalos de importación y actualización>Actualizar esta tabla de forma incremental, mueva el control deslizante a Activado. Si el control deslizante está deshabilitado, significa que la expresión Power Query de la tabla no incluye un filtro basado en los parámetros RangeStart y RangeEnd.

    En Iniciando datos de archivo, especifique el período de almacenamiento histórico que quiera incluir en el modelo. Todas las filas con fechas en este periodo se cargarán en el modelo del servicio, a menos que se apliquen otros filtros.

    En Iniciando actualización incremental de datos, especifique el período de actualización. Todas las filas con fechas de este periodo se actualizarán en el modelo cada vez que se realice una operación de actualización manual o programada por el servicio Power BI.

  4. Especifique la configuración opcional:

    En Elegir configuración opcional, seleccione Obtenga los datos más recientes en tiempo real con DirectQuery (sólo Premium) para incluir los cambios de datos más recientes que se produjeron en el origen de datos después del último período de actualización. Esta configuración hace que la directiva de actualización incremental agregue una partición de DirectQuery a la tabla.

    Seleccione Only refresh complete days (Actualizar solo días completos) para actualizar solo los días completos. Si la operación de actualización detecta que un día no está completo, las filas de ese día completo no se actualizan. Esta opción se habilita automáticamente si selecciona Obtenga los datos más recientes en tiempo real con DirectQuery (solo Premium).

    Seleccione Detectar cambios de datos, para especificar una columna de fecha y hora usada para identificar y actualizar solo los días en los que datos hayan cambiado. Debe existir una columna de fecha y hora, normalmente con fines de auditoría, en el origen de datos. Esta columna no debe ser la misma que la usada para crear particiones de los datos con los parámetros RangeStart y RangeEnd. El valor máximo de esta columna se evalúa para cada uno de los períodos en la frecuencia incremental. Si no ha cambiado desde la última actualización, no se actualiza el periodo actual. Para los modelos publicados en capacidades Premium, también puede especificar una consulta personalizada. Para obtener más información, vea Actualización incremental avanzada: Consultas personalizadas para detectar cambios de datos.

    En función de la configuración, la directiva debería tener un aspecto similar al siguiente:

    Incremental refresh and real-time data policy dialog showing incremental refresh range.

  5. Revise la configuración y seleccione Aplicar para completar la directiva de actualización. Este paso no carga datos.

Almacenamiento y publicación en el servicio

Ahora que se han completado los parámetros RangeStart y RangeEnd, el filtrado y la directiva de actualización, guarde el modelo y publíquelo en el servicio. Si el modelo se volviera de gran tamaño, asegúrese de habilitar Formato de almacenamiento de modelo grandeantes de invocar la primera actualización en el servicio.

Actualización del modelo

En el servicio, actualice el modelo. La primera actualización cargará los datos nuevos y actualizados en el periodo de actualización, así como los datos históricos de todo el periodo de almacenamiento. En función de la cantidad de datos, esta actualización puede tardar bastante tiempo. Las actualizaciones posteriores, ya sean manuales o programadas, suelen ser mucho más rápidas porque se aplica la directiva de actualización incremental y solo se actualizan los datos del periodo especificado en la configuración de la directiva de actualización.

Conversión de DateTime en entero

Esta tarea solo es necesaria si la tabla usa claves suplentes de enteros en lugar de valores de fecha y hora en la columna de fecha que usa para la definición de filtro RangeStart/RangeEnd.

El tipo de datos de los parámetros RangeStart y RangeEnd debe ser de tipo de datos de fecha y hora, independientemente del tipo de datos de la columna de fecha. Sin embargo, en el caso de muchos orígenes de datos, las tablas no tienen una columna de tipo de datos de fecha y hora, sino una columna de fecha de claves suplentes de enteros en forma de yyyymmdd. Normalmente no puede convertir estas claves suplentes de entero al tipo de datos de fecha y hora porque el resultado sería una expresión de consulta no plegada, pero puede crear una función que convierta el valor de fecha y hora en parámetros para que coincida con la clave suplente de entero de la tabla de origen de datos sin perder la capacidad de plegado. Después, se llama a la función en un paso de filtro. Este paso de conversión es necesario si la tabla de origen de datos solo contiene una clave suplente como tipo de datos de enteros.

  1. En la cinta Inicio de Editor de Power Query, seleccione la lista desplegable Nuevo origen y, a continuación, elija Consulta en blanco.

  2. En Configuración de la consulta, escriba un nombre, por ejemplo, DateKey y, después, en el editor de fórmulas, escriba la fórmula siguiente:

    = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)

    Power BI function editor showing the integer surrogate DateKey function.

  3. Para probar la fórmula, en Escribir parámetro, escriba un valor de fecha y hora y luego seleccione Invocar. Si la fórmula es correcta, se devuelve un valor entero para la fecha. Después de comprobarlo, elimine esta nueva consulta Función invocada.

  4. En Consultas, seleccione la tabla y, después, edite la fórmula de consulta para llamar a la función con los parámetros RangeStart y RangeEnd.

    = Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))

    Power BI table showing DateKey filter.