Configuración de la actualización incremental

En este artículo se describe cómo configurar la actualización incremental para los conjuntos de datos. 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, se debe realizar una operación de actualización inicial en el conjunto de datos. 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 para conjuntos de datos.

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 publica en el servicio, la directiva de actualización incremental invalida estos valores.

  1. En Power BI Desktop, haga clic en Transformar datos para abrir el Editor de Power Query.

  2. Haga clic en Administrar parámetros > Nuevo parámetro.

  3. En Administrar parámetros > Nombre, escriba RangeStart (distingue mayúsculas de minúsculas), luego en Tipo, seleccione Fecha y hora y, después, en Valor actual, escriba un valor de fecha y hora de inicio.

    Definición del parámetro RangeStart en el cuadro de diálogo Administrar parámetros

  4. Cree un segundo parámetro denominado RangeEnd. En Tipo, seleccione Fecha y hora y luego en Valor actual escriba un valor de fecha y hora final.

    Definición del parámetro RangeEnd en el cuadro de diálogo Administrar parámetros

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 es así, 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.

Con los parámetros RangeStart y RangeEnd definidos, aplique 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 haga clic en el icono de filtro > Filtros de fecha y hora > 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. Por ejemplo,

    Filtrar filas

    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, #"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) podría dar lugar a datos duplicados.

    Haga clic en Aceptar para cerrar.

  3. En el Editor de Power Query, haga clic en Close & Apply (Cerrar y aplicar). Power Query cargará 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 carga debería ser rápida. 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 Vista de datos > Campos > abra el menú contextual de la tabla y, después, haga clic en Actualización incremental.

    Menú contextual Tabla

  2. En Actualización incremental > Tabla, compruebe o seleccione la tabla y, después, haga clic en el control deslizante de Actualización incremental a Activada. 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.

  3. En Store rows where column "columnname" is in the last:" (Almacenar filas donde la columna "columnname" esté en la última:), especifique el periodo de almacenamiento histórico que quiera incluir en el conjunto de datos. Todas las filas con fechas en este periodo se cargarán en el conjunto de datos del servicio, a menos que se apliquen otros filtros.

  4. En Refresh rows where column "columnname" is in the last: (Actualizar filas donde la columna "columnname" esté en la última:), especifique el periodo de actualización. Todas las filas con fechas de este periodo se actualizarán en el conjunto de datos cada vez que se realice una operación de actualización manual o programada.

    Cuadro de diálogo Directiva de actualización

  5. Seleccione la configuración opcional:

    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 dividir 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 conjuntos de datos 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.

    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.

  6. Haga clic en Aplicar todo para completar la directiva de actualización. Los datos de origen no se cargan con este paso.

Almacenamiento y publicación en el servicio

Cuando se completen los parámetros RangeStart y RangeEnd, el filtrado y la actualización, asegúrese de guardar el modelo y de publicarlo después en el servicio. Si el conjunto de datos se volviera de gran tamaño, asegúrese de habilitar Large dataset storage format (Formato de almacenamiento de conjunto de datos grande) antes de invocar la primera actualización en el servicio.

Actualización del conjunto de datos

En el servicio, actualice el conjunto de datos. 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, esto 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 es opcional.

El tipo de datos de los parámetros RangeStart y RangeEnd debe ser de tipo de datos de fecha y hora. 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. Puede crear una función que convierta el valor de fecha y hora en los parámetros para que coincida con la clave suplente de enteros de la tabla de origen de datos. Después, se llama a la función en un paso de filtro. Este paso es necesario si la tabla de origen de datos solo contiene una clave suplente como tipo de datos de enteros.

  1. En el Editor de Power Query, haga clic en Obtener datos > 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)

    Creación de la función DateKey

  3. Para probar la fórmula, en Escribir parámetro, escriba un valor de fecha y hora y luego haga clic en Invocar. Si la fórmula es correcta, se devuelve un valor entero para la fecha. Después de comprobarlo, elimine la consulta de 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. Por ejemplo,

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

    Aplicación del filtro DateKey

Consulte también

Solución de problemas de configuración de la actualización incremental
Actualización incremental avanzada con el punto de conexión XMLA
Configuración de actualización programada