Compartir a través de


Comando Refresh (TMSL)

Se aplica a: SQL Server 2016 y versiones posteriores analysis Services Azure Analysis Services Fabric/Power BI Premium

Procesa objetos en la base de datos actual.
La actualización siempre se ejecuta en paralelo a menos que la limite con el comando Sequence (TMSL).

Puede invalidar algunas propiedades de algunos objetos durante una operación de actualización de datos:

  • Cambie la propiedad QueryDefinition de un objeto Partition para importar datos mediante una expresión de filtro on-the-fly.

  • Proporcione credenciales de origen de datos como parte de un comando Refresh , en la propiedad ConnectionString de un objeto DataSource . Este enfoque se podría considerar más seguro, ya que se proporcionan credenciales y se usan temporalmente durante la operación, en lugar de almacenarse.

  • Invalide la directiva de actualización incremental predeterminada del modelo semántico de Power BI.

Vea los ejemplos de este tema para obtener una ilustración de estas invalidaciones de propiedad.

Nota:

A diferencia del procesamiento multidimensional, no hay ningún control especial de los errores de procesamiento para el procesamiento tabular.

Solicitud

La actualización toma un parámetro de tipo y una definición de objeto.

    {  
        "refresh": {  
            "description": "Parameters of Refresh command of Analysis Services JSON API",  
            "properties": {  
            "type": {  
                "enum": [  
                "full",  
                "clearValues",  
                "calculate",  
                "dataOnly",  
                "automatic",  
                "add",  
                "defragment"  
                ]  
            },  
            "objects": [  

El parámetro de tipo establece un ámbito en la operación de procesamiento.

Tipo de actualización Se aplica a Descripción
full Base
Mesa
Partition
Para todas las particiones en la partición, tabla o base de datos especificada, actualice los datos y actualice todos los elementos dependientes. Para una partición de cálculo, actualice la partición y todos sus elementos dependientes.
clearValues Base
Mesa
Partition
Borre los valores de este objeto y todos los dependientes.
Calcular Base
Mesa
Partition
Actualice este objeto y todos sus elementos dependientes, pero solo si es necesario. Este valor no fuerza la actualización, excepto en el caso de fórmulas volátiles.
dataOnly Base
Mesa
Partition
Actualice los datos de este objeto y borre todos los dependientes.
automatic Base
Mesa
Partition
Si el objeto se debe actualizar, actualice el objeto y todos sus elementos dependientes. Se aplica si la partición se encuentra en un estado que no sea Ready.
add Partition Anexe datos a esta partición y vuelva a calcular todos los dependientes. Este comando es válido solo para particiones normales y no para particiones de cálculo.
Desfragmentar Base
Tabla
Desfragmente los datos de la tabla especificada. Ya que los datos se agregan a una tabla o se quitan de ella, los diccionarios de cada columna pueden contaminarse con valores que ya no existen en los valores de columna reales. La opción de desfragmentar limpiará los valores de los diccionarios que ya no se usan.

Puede actualizar los siguientes objetos:

Objeto Database (TMSL) Procesar una base de datos.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200"  
      }  
    ]  
  }  
}  

Objeto Tables (TMSL) Procesar una sola tabla.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "Date"  
      }  
    ]  
  }  
}  

Objeto Partitions (TMSL) Procesar una sola partición dentro de una tabla.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "FactSalesQuota",  
        "partition": "FactSalesQuota"  
      },  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "FactSalesQuota",  
        "partition": "FactSalesQuota - 2011"  
      }  
    ]  
  }  
}  

Parámetros opcionales

En el caso de los modelos semánticos de Power BI, se pueden agregar los parámetros siguientes a un comando tmSL refresh para invalidar el comportamiento de actualización incremental predeterminado:

  • applyRefreshPolicy: si una tabla tiene definida una directiva de actualización incremental, applyRefreshPolicy determinará si la directiva se aplica o no. Si no se aplica la directiva, una operación de proceso completo dejará las definiciones de partición sin cambios y todas las particiones de la tabla se actualizarán por completo. El valor predeterminado es true.

  • effectiveDate: si se está aplicando una directiva de actualización incremental, debe conocer la fecha actual para determinar los intervalos de periodos acumulados para el intervalo histórico y el intervalo incremental. El parámetro effectiveDate permite invalidar la fecha actual. Esto resulta útil para pruebas, demostraciones y escenarios empresariales en los que los datos se actualizan incrementalmente hasta una fecha anterior o posterior (por ejemplo, presupuestos en el futuro). El valor predeterminado es la fecha actual.

{
  "refresh": {
    "type": "full",

    "applyRefreshPolicy": true,
    "effectiveDate": "12/31/2013",

    "objects": [
      {
        "database": "IR_AdventureWorks", 
        "table": "FactInternetSales" 
      }
    ]
  }
}

En la tabla siguiente se muestra el impacto cuando applyRefreshPolicy es true (valor predeterminado) en cada uno de los tipos de actualización de una tabla que contiene una directiva de actualización incremental:

Tipo de actualización Impacto
full La directiva se aplica como se describe en Actualización incremental en Power BI. Suponiendo que las particiones históricas ya se han creado mediante una operación de actualización anterior, se describe un resumen aquí:
- Las nuevas particiones se agregan al intervalo incremental si es necesario.
- Si no se define pollingExpression para la detección de cambios de datos, todas las particiones del intervalo incremental se actualizan en su totalidad.
- Si se define una pollingExpression, se evalúa para cada partición del intervalo incremental. Solo los que devuelven un resultado de sondeo diferente en comparación con la operación de actualización anterior se actualizan por completo.
- Las particiones históricas no se actualizan independientemente de si se han borrado de los datos.
- Se eliminan las particiones históricas que se encuentran fuera del intervalo.
- Actualización de particiones afectadas y dependientes.
clearValues applyRefreshPolicy no afecta al comportamiento.
Calcular applyRefreshPolicy no afecta al comportamiento.
dataOnly Igual que type=full, pero sin recalcular las particiones afectadas y los dependientes.
automatic Igual que type=full, pero las particiones del intervalo incremental se actualizan mediante type=automatic.
add applyRefreshPolicy no afecta al comportamiento.
Desfragmentar applyRefreshPolicy no afecta al comportamiento.

Response

Devuelve un resultado vacío cuando el comando se realiza correctamente. De lo contrario, se devuelve una excepción XMLA.

Ejemplos

Invalide ConnectionString y QueryDefinition de una partición.

{
  "refresh": {
    "type": "dataOnly",
    "objects": [
      {
        "database": "AdventureWorksDW2017",
        "table": "DimCustomer"
      }
    ],
    "overrides": [
      {
        "dataSources": [ // Bindings for DataSources​
          {
            "originalObject": {
              "database": "AdventureWorksDW2017",
              "dataSource": "SqlServer localhost"
            },
            "connectionString": "Provider=SQLNCLI11.1;Data Source=.;Persist Security Info=True;User ID=YourSQLLogin;Password=YourPassword;Initial Catalog=AdventureWorksDW2017"
          }
        ],
        "partitions": [ // Bindings for Partitions​
          {
            "originalObject": {
              "database": "AdventureWorksDW2017",
              "table": "DimCustomer",
              "partition": "DimCustomer"
            },
            "source": {
              "query": "SELECT * FROM [dbo].[DimCustomer]"
            }
          }
        ]
      }
    ]
  }
}

Las invalidaciones específicas del ámbito estableciendo el parámetro de tipo en una actualización dataOnly , los metadatos permanecen intactos.

{
  "refresh": {
    "type": "dataOnly",
    "objects": [
      {
        "database": "TMTestDB",
        "table": "Customer"
      },
      {
        "database": "TMTestDB",
        "table": "Sales"
      }
    ],
    "overrides": [
      {
        "scope": {
          "database": "TMTestDB",
          "table": "Sales"
        },
        "dataSources": [
          {
            "originalObject": {
              "dataSource": "SqlServer sqlcldb2 AS_foodmart_2000"
            },
            "connectionString": "Provider=SQLNCLI11;Data Source=sqlcldb2;Initial Catalog=AS_foodmart_2000;Integrated Security=SSPI;Persist Security Info=false"
          }
        ]
      }
    ]
  }
}

Uso (puntos de conexión)

Este elemento de comando se usa en una instrucción de la llamada al método Execute (XMLA) a través de un punto de conexión XMLA, expuesto de las siguientes maneras:

  • Como ventana XMLA en SQL Server Management Studio (SSMS)

  • Como archivo de entrada para el cmdlet de PowerShell invoke-ascmd

  • Como entrada para una tarea de SSIS o un trabajo de Agente SQL Server

Puede generar un script listo para este comando desde SSMS. Por ejemplo, puede hacer clic en el script en un cuadro de diálogo Procesamiento.