Actualizaciones incrementales en Power BI PremiumIncremental refresh in Power BI Premium

La actualización incremental permite usar conjuntos de datos muy grandes en el servicio Power BI Premium, lo que reporta las siguientes ventajas:Incremental refresh enables very large datasets in the Power BI Premium service with the following benefits:

  • Las actualizaciones son más rápidas: solo hay que actualizar los datos que se han modificado.Refreshes are faster - Only data that has changed needs to be refreshed. Por ejemplo, se actualizan solo los últimos cinco días de un conjunto de datos de 10 años.For example, refresh only the last five days of a ten-year dataset.
  • Las actualizaciones son más confiables: ya no es necesario mantener conexiones de larga duración a sistemas de origen volátiles.Refreshes are more reliable - It's no longer necessary to maintain long-running connections to volatile source systems.
  • Se reduce el consumo de recursos: al haber menos datos que actualizar, se reduce el consumo total de memoria y de otros recursos.Resource consumption is reduced - Less data to refresh reduces overall consumption of memory and other resources.

Configuración de la actualización incrementalConfigure incremental refresh

Las directivas de actualización incremental se definen en Power BI Desktop y se aplican cuando se publican en el servicio Power BI.Incremental refresh policies are defined in Power BI Desktop and applied when published to the Power BI service.

Para empezar, habilite las actualizaciones incrementales en Características de versión preliminar.To start, enable incremental refresh in Preview features.

Opciones - Características de vista previa

Filtrar conjuntos de datos grandes en Power BI DesktopFilter large datasets in Power BI Desktop

Es posible que los conjuntos de datos grandes (que pueden contener miles de millones de filas) no quepan en el modelo de Power BI Desktop, porque el archivo PBIX está limitado por los recursos de memoria disponibles en el equipo de escritorio.Large datasets with potentially billions of rows may not fit into a Power BI Desktop model because the PBIX file is limited by the memory resources available on the desktop computer. Por tanto, normalmente estos conjuntos de datos se filtran durante la importación.Such datasets are therefore commonly filtered upon import. Este tipo de filtrado se aplica con independencia del uso de la actualización incremental.This type of filtering applies whether using incremental refresh or not. Para la actualización incremental, se filtra mediante los parámetros de fecha y hora de Power Query.For incremental refresh, you filter by using Power Query date/time parameters.

Parámetros RangeStart y RangeEndRangeStart and RangeEnd parameters

Para la actualización incremental, los conjuntos de datos se filtran mediante los parámetros de fecha y hora de Power Query con los nombres reservados RangeStart y RangeEnd (que distinguen mayúsculas de minúsculas).For incremental refresh, datasets are filtered by using Power Query date/time parameters with the reserved, case-sensitive names RangeStart and RangeEnd. Estos parámetros se usan para filtrar los datos importados en Power BI Desktop y también para particionar de forma dinámica los datos en intervalos una vez publicados en el servicio Power BI.These parameters are used to filter the data imported into Power BI Desktop, and also to dynamically partition the data into ranges once published to the Power BI service. El servicio sustituye los valores de parámetro para filtrar por cada partición.The parameter values are substituted by the service to filter for each partition. No hay necesidad de definirlos en la configuración del conjunto de datos del servicio.There's no need to set them in dataset settings in the service. Una vez publicados, el servicio Power BI reemplaza automáticamente los valores de parámetro,Once published, the parameter values are overridden automatically by the Power BI service.

Para definir los parámetros con valores predeterminados, haga clic en Administrar parámetros en el editor de Power Query.To define the parameters with default values, in the Power Query Editor, select Manage Parameters.

Administrar parámetros

Con los parámetros definidos, después puede aplicar el filtro si selecciona la opción de menú Filtro personalizado para una columna.With the parameters defined, you can then apply the filter by selecting the Custom Filter menu option for a column.

Filtro personalizado

Procure filtrar las filas en las que el valor de la columna sea igual o posterior a RangeStart y anterior a RangeEnd.Ensure rows are filtered where the column value is after or equal to RangeStart and before RangeEnd. Otras combinaciones de filtros pueden dar lugar a un doble recuento de filas.Other filter combinations may result in double counting of rows.

Filtrar filas

Importante

Compruebe que las consultas tienen un valor igual a (=) en RangeStart o RangeEnd, pero no en ambos.Verify queries have an equal to (=) on either RangeStart or RangeEnd, but not both. 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.If the equal to (=) exists on both parameters, a row could satisfy the conditions for two partitions, which could lead to duplicate data in the model. Por ejemplo:For example,
#"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) podrían dar lugar a datos duplicados.#"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) could result in duplicate data.

Sugerencia

Aunque el tipo de datos de los parámetros debe ser fecha y hora, se pueden convertir para que coincidan con los requisitos del origen de datos.While the data type of the parameters must be date/time, it's possible to convert them to match the requirements of the datasource. Por ejemplo, la siguiente función de Power Query convierte un valor de fecha y hora para que aparezca como una clave suplente de enteros con la forma ddmmaaaa, algo habitual en los almacenamientos de datos.For example, the following Power Query function converts a date/time value to resemble an integer surrogate key of the form yyyymmdd, which is common for data warehouses. Se puede llamar a la función durante el paso de filtrado.The function can be called by the filter step.

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

Seleccione Cerrar y aplicar en el editor de Power Query.Select Close and Apply from the Power Query Editor. Ahora deberíamos tener un subconjunto del conjunto de datos en Power BI Desktop.You should have a subset of the dataset in Power BI Desktop.

Filtrado de las actualizaciones de columna de fechaFilter date column updates

El filtro de la columna de fecha se usa para particionar de forma dinámica los datos en intervalos en el servicio Power BI.The filter on the date column is used to dynamically partition the data into ranges in the Power BI service. La actualización incremental no está diseñada para admitir casos en los que la columna de fecha filtrada se actualiza en el sistema de origen.Incremental refresh isn't designed to support cases where the filtered date column is updated in the source system. Una actualización se interpretará como una inserción y una eliminación, no como una actualización real.An update is interpreted as an insertion and a deletion, not an actual update. Si la eliminación se produce en el intervalo histórico y no en el intervalo incremental, no se seleccionará.If the deletion occurs in the historical range and not the incremental range, it won’t get picked up. Esto puede provocar errores de actualización de datos debido a conflictos de clave de partición.This can cause data refresh failures due to partition-key conflicts.

Plegado de consultasQuery folding

Es importante que los filtros de partición se inserten en el sistema de origen cuando las consultas se envían para las operaciones de actualización.It's important the partition filters are pushed to the source system when queries are submitted for refresh operations. La transferencia del filtrado significa que el origen de datos debe admitir el plegado de consultas.To push filtering down means the datasource should support query folding. La mayoría de orígenes de datos compatibles con las consultas SQL admiten el plegado de consultas.Most data sources that support SQL queries support query folding. Pero los orígenes de datos como los archivos sin formato, los blobs y las fuentes web y de OData normalmente no lo hacen.However, data sources like flat files, blobs, web, and OData feeds typically do not. En casos en los que el filtro no es compatible con el back-end de origen de datos, no se puede realizar la transferencia.In cases where the filter is not supported by the datasource back-end, it cannot be pushed down. En tales casos, el motor de mashup compensa y aplica el filtro localmente, lo cual puede requerir la recuperación del conjunto de datos completo desde el origen de datos.In such cases, the mashup engine compensates and applies the filter locally, which may require retrieving the full dataset from the data source. Esto puede provocar que una actualización incremental sea muy lenta y el proceso puede quedarse sin recursos en el servicio Power BI o en la puerta de enlace de datos local, si se utiliza.This can cause incremental refresh to be very slow, and the process can run out of resources either in the Power BI service or in the on-premises data gateway if used.

Dados los diversos niveles de compatibilidad con el plegado de consultas para cada origen de datos, se recomienda comprobar que la lógica de filtro se incluye en las consultas de origen.Given the various levels of query folding support for each datasource, it's recommended that verification is performed to ensure the filter logic is included in the source queries. Para facilitar esta tarea, Power BI Desktop intenta realizar esta comprobación de forma automática.To make this easier, Power BI Desktop attempts to perform this verification for you. Si no lo puede comprobar, se muestra una advertencia en el cuadro de diálogo de la actualización incremental al definir la directiva de actualización incremental.If unable to verify, a warning is displayed in the incremental refresh dialog when defining the incremental refresh policy. Los orígenes de datos basados en SQL como SQL, Oracle y Teradata pueden depender de esta advertencia.SQL based data sources such as SQL, Oracle, and Teradata can rely on this warning. Es posible que otros orígenes de datos no puedan ejecutar la comprobación sin realizar el seguimiento de las consultas.Other data sources may be unable to verify without tracing queries. Si Power BI Desktop no puede realizar la confirmación, se muestra la advertencia siguiente.If Power BI Desktop is unable to confirm, the following warning is displayed.

Plegado de consultas

Definir la directiva de actualizaciónDefine the refresh policy

La actualización incremental está disponible en el menú contextual de las tablas, excepto en los modelos de conexión dinámica.Incremental refresh is available on the context menu for tables, except for Live Connection models.

Directiva de actualización

Cuadro de diálogo Actualización incrementalIncremental refresh dialog

Se abre el cuadro de diálogo Actualización incremental.The incremental refresh dialog is displayed. Use el botón de alternancia para habilitar o deshabilitar el cuadro de diálogo.Use the toggle to enable the dialog.

Detalles de la actualización

Nota

Si la expresión de Power Query relativa a la tabla no hace referencia a los parámetros con nombres reservados, el botón de alternancia se deshabilita.If the Power Query expression for the table doesn't refer to the parameters with reserved names, the toggle is disabled.

En el texto del encabezado se explica lo siguiente:The header text explains the following:

  • La actualización incremental solo se admite para las áreas de trabajo de las capacidades Premium.Incremental refresh is supported only for workspaces on Premium capacities. Las directivas de actualización se definen en Power BI Desktop y se aplican por medio de operaciones de actualización en el servicio.Refresh policies are defined in Power BI Desktop, and they are applied by refresh operations in the service.

  • Si descarga el archivo PBIX que contiene una directiva de actualización incremental desde el servicio Power BI, no se podrá abrir en Power BI Desktop.If you're able to download the PBIX file containing an incremental-refresh policy from the Power BI service, it cannot be opened in Power BI Desktop. Aunque es posible que esto se admita en el futuro, recuerde que estos conjuntos de datos pueden crecer tanto que sea poco práctico descargarlos y abrirlos en un equipo de escritorio convencional.While this may be supported in the future, keep in mind these datasets can grow to be so large that they are impractical to download and open on a typical desktop computer.

Frecuencias de actualizaciónRefresh ranges

En el ejemplo siguiente se define una directiva de actualización para almacenar los datos de cinco años naturales completos más los datos del año actual hasta la fecha de hoy y actualizar de forma incremental 10 días de datos.The following example defines a refresh policy to store data for five full calendar years plus data for the current year up to the current date, and incrementally refresh ten days of data. La primera operación de actualización carga los datos históricos.The first refresh operation loads historical data. Las actualizaciones posteriores son incrementales y (si se han programado para ejecutarse a diario) realizan las operaciones siguientes:Subsequent refreshes are incremental, and (if scheduled to run daily) perform the following operations:

  • Se agrega un nuevo día de datos.Add a new day of data.

  • Se actualizan 10 días hasta la fecha actual.Refresh ten days up to the current date.

  • Se quitan los años naturales con una antigüedad de más de cinco años con respecto a la fecha actual.Remove calendar years that are older than five years prior to the current date. Por ejemplo, si la fecha actual es el día 1 de enero de 2019, se quitará el año 2013.For example, if the current date is January 1 2019, the year 2013 is removed.

La primera actualización en el servicio Power BI puede tardar más en importar los cinco años naturales enteros,The first refresh in the Power BI service may take longer to import all five full calendar years. pero las siguientes finalizarán en un tiempo mucho menor.Subsequent refreshes may be finished in a fraction of the time.

Frecuencias de actualización

Nota

Es posible que todo lo que necesite sea la definición de estas frecuencias, en cuyo caso puede ir directamente al paso de publicación siguiente.Definition of these ranges might be all you need, in which case you can go straight to the publishing step below. Las listas desplegables adicionales se corresponden con características avanzadas.The additional dropdowns are for advanced features.

Opciones avanzadas de directivaAdvanced policy options

Detectar cambios de datosDetect data changes

Una actualización incremental de 10 días es más eficaz que una actualización completa de cinco años.Incremental refresh of ten days is more efficient than full refresh of five years. Pero es posible hacerlo incluso mejor.However, it's possible to do even better. Si activa la casilla Detectar cambios de datos, puede seleccionar una columna de fecha y hora y usarla para identificar y actualizar solo los días donde los datos hayan cambiado.If you select the Detect data changes checkbox, you can select a date/time column used to identify and refresh only the days where the data has changed. Aquí se da por hecho que esta columna existe en el sistema de origen, que se suele usar con fines de auditoría.This assumes such a column exists in the source system, which is typically for auditing purposes. Esta columna no debe ser la misma que la usada para dividir los datos con los parámetros RangeStart/RangeEnd.This should not be the same column used to partition the data with the RangeStart/RangeEnd parameters. El valor máximo de esta columna se evalúa para cada uno de los períodos en la frecuencia incremental.The maximum value of this column is evaluated for each of the periods in the incremental range. Si no ha cambiado desde la última actualización, no es necesario actualizar período.If it has not changed since the last refresh, there is no need to refresh the period. En el ejemplo, esto podría reducir aún más los días actualizados de forma incremental de 10 a aproximadamente 2.In the example, this could further reduce the days incrementally refreshed from ten to around two.

Detectar cambios

Sugerencia

El diseño actual requiere que la columna que detecta los cambios de datos sea persistente y esté almacenada en la memoria caché.The current design requires that the column to detect data changes is persisted and cached into memory. Puede que quiera sopesar el uso de una de las siguientes técnicas para reducir la cardinalidad y el consumo de memoria.You may want to consider one of the following techniques to reduce cardinality and memory consumption.

Durante la actualización solo debe persistir el valor máximo de esta columna, posiblemente usando una función de Power Query.Persist only the maximum value of this column at time of refresh, perhaps using a Power Query function.

Reduzca la precisión a un nivel que sea aceptable para sus requisitos de frecuencia de actualización.Reduce the precision to a level that is acceptable given your refresh-frequency requirements.

Tenemos previsto permitir en el futuro que se puedan definir consultas personalizadas para detectar cambios de datos.We plan to allow the definition of custom queries for data-change detection at a later date. De este modo, se podrá prescindir por completo del valor de columna persistente.This could be used to avoid persisting the column value altogether.

Actualizar solo períodos completosOnly refresh complete periods

Supongamos que nuestra actualización está programada para ejecutarse todas las mañanas a las 4:00 A.M.Let's say your refresh is scheduled to run at 4:00 AM every morning. Si aparecen datos en el sistema de origen durante esas 4 horas, probablemente no quiera tenerlos en cuenta.If data appears in the source system during those 4 hours, you may not want to account for it. Algunas métricas empresariales (como, por ejemplo, los barriles por día en el sector petrolífero) no tienen sentido en días parciales.Some business metrics -- such as barrels per day in the oil and gas industry -- make no sense with partial days.

Pensemos en otro ejemplo en el que hay que actualizar los datos de un sistema financiero donde los datos del mes anterior se aprueban el día 12 del mes en curso.Another example is refreshing data from a financial system where data for the previous month is approved on the 12th calendar day of the month. Puede establecer la frecuencia incremental en 1 mes y programar la actualización para que se ejecute el día 12 del mes.You could set the incremental range to 1 month and schedule the refresh to run on the 12th day of the month. Así, con esta opción activada, los datos de enero se actualizarían el 12 de febrero.With this option checked, it would for example refresh January data on February 12th.

Períodos completos

Nota

Las operaciones de actualización del servicio se ejecutan según la hora UTC.Refresh operations in the service run under UTC time. Esto puede determinar la fecha de vigencia y repercutir en los períodos completos.This can determine the effective date and affect complete periods. Tenemos previsto incluir la posibilidad de invalidar la fecha de vigencia en las operaciones de actualización.We plan to add the ability to override the effective date for a refresh operation.

Publicar en el servicioPublish to the service

Puesto que la actualización incremental es una característica única de Premium, el cuadro de diálogo Publicar solo permite seleccionar un área de trabajo de la capacidad Premium.Since incremental refresh is a Premium only feature, the publish dialog only allows selection of a workspace on Premium capacity.

Publicar en el servicio

Ahora podemos actualizar el modelo.You can now refresh the model. La primera actualización puede tardar más tiempo en importar los datos históricos,The first refresh may take longer to import the historical data. mientras que las siguientes serán bastante más rápidas, ya que serán actualizaciones incrementales.Subsequent refreshes can be much quicker because they use incremental refresh.

Tiempos de espera de las consultasQuery timeouts

En este artículo de solución problemas de actualización se explica que las operaciones de actualización en el servicio Power BI están sujetas a tiempos de espera.The troubleshooting refresh article explains that refresh operations in the Power BI service are subject to timeouts. Las consultas también pueden verse limitadas por el tiempo de espera predeterminado del origen de datos.Queries can also be limited by the default timeout for the data source. La mayoría de los orígenes relacionales permiten invalidar los tiempos de espera en la expresión.Most relational sources allow overriding timeouts in the M expression. Por ejemplo, en la siguiente expresión se usa la función de acceso a datos de SQL Server para establecerla en 2 horas.For example, the expression below uses the SQL Server data-access function to set it to 2 hours. Cada período definido por los intervalos de directiva envía una consulta que respeta el valor de tiempo de espera del comando.Each period defined by the policy ranges submits a query observing the command timeout setting.

let
    Source = Sql.Database("myserver.database.windows.net", "AdventureWorks", [CommandTimeout=#duration(0, 2, 0, 0)]),
    dbo_Fact = Source{[Schema="dbo",Item="FactInternetSales"]}[Data],
    #"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] < RangeEnd)
in
    #"Filtered Rows"

LimitacionesLimitations

En estos momentos, para modelos compuestos, la actualización incremental solo es compatible con orígenes de datos de SQL Server, Azure SQL Database, SQL Data Warehouse, Oracle y Teradata.Currently, for composite models, incremental refresh is supported for SQL Server, Azure SQL Database, SQL Data Warehouse, Oracle, and Teradata data sources only.