Refresh, commande (TMSL)

S’applique à : SQL Server 2016 et versions ultérieures Analysis Services Azure Analysis Services Fabric/Power BI Premium

Traite les objets de la base de données active.
L’actualisation s’exécute toujours en parallèle, sauf si vous la limitez avec la commande Sequence (TMSL).

Vous pouvez remplacer certaines propriétés de certains objets lors d’une opération d’actualisation des données :

  • Modifiez la propriété QueryDefinition d’un objet Partition pour importer des données à l’aide d’une expression de filtre à la volée.

  • Fournissez des informations d’identification de source de données dans le cadre d’une commande Refresh , dans la propriété ConnectionString d’un objet DataSource . Cette approche peut être considérée comme plus sécurisée, car les informations d’identification sont fournies et utilisées temporairement pendant la durée de l’opération, plutôt que stockées.

  • Remplacez la stratégie d’actualisation incrémentielle du modèle sémantique Power BI par défaut.

Consultez les exemples de cette rubrique pour obtenir une illustration de ces remplacements de propriété.

Notes

Contrairement au traitement multidimensionnel, il n’existe pas de gestion spéciale des erreurs de traitement pour le traitement tabulaire.

Requête

Refresh prend un paramètre de type et une définition d’objet.

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

Le paramètre type définit une étendue sur l’opération de traitement.

Type d’actualisation S’applique à Description
complet Base
Table
Partition
Pour toutes les partitions dans la partition, la table ou la base de données spécifiée, actualiser les données et recalculer toutes les éléments dépendants. Pour une partition de calcul, recalculer la partition et tous ses éléments dépendants.
clearValues Base
Table
Partition
Effacez les valeurs de cet objet et tous ses dépendants.
Calculer Base
Table
Partition
Recalculer cet objet et tous ses éléments dépendants, mais seulement si nécessaire. Cette valeur ne force pas le recalcul, excepté pour les formules volatiles.
dataOnly Base
Table
Partition
Actualisez les données dans cet objet et effacez tous les dépendants.
automatique Base
Table
Partition
Si l’objet doit être actualisé et recalculé, actualiser et recalculer l’objet et tous ses éléments dépendants. S’applique si la partition est dans un état autre que Prêt.
add Partition Ajoutez des données à cette partition et recalculez tous les dépendants. Cette commande est valide seulement pour les partitions régulières, et non pas pour les partitions de calcul.
Défragmenter Base
Table de charge de travail
Défragmenter les données dans la table spécifiée. Comme les données sont ajoutées ou supprimées d’une table, les dictionnaires de chaque colonne peuvent devenir pollués par des valeurs qui n’existent plus dans les valeurs actuelles des colonnes. L’option de défragmentation nettoie les valeurs dans les dictionnaires qui ne sont plus utilisées.

Vous pouvez actualiser les objets suivants :

Objet de base de données (TMSL) Traiter une base de données.

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

Objet Tables (TMSL) Traiter une seule table.

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

Objet Partitions (TMSL) Traiter une seule partition dans une table.

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

Paramètres facultatifs

Pour les modèles sémantiques Power BI, les paramètres suivants peuvent être ajoutés à une commande d’actualisation TMSL pour remplacer le comportement d’actualisation incrémentielle par défaut :

  • applyRefreshPolicy : si une table a une stratégie d’actualisation incrémentielle définie, applyRefreshPolicy détermine si la stratégie est appliquée ou non. Si la stratégie n’est pas appliquée, une opération Traiter entièrement laissera les définitions de partitions inchangées et toutes les partitions de la table seront entièrement actualisées. La valeur par défaut est true.

  • effectiveDate : si une stratégie d’actualisation incrémentielle est appliquée, elle doit connaitre la date actuelle pour déterminer les plages de fenêtre dynamique pour la plage historique et la plage incrémentielle. Le paramètre effectiveDate vous permet de remplacer la date actuelle. Cela est utile pour les tests, les démonstrations et les scénarios d’entreprise où les données sont actualisées de façon incrémentielle jusqu’à une date dans le passé ou le futur (par exemple, des budgets futurs). La valeur par défaut est la date actuelle.

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

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

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

Le tableau suivant montre l’impact lorsque applyRefreshPolicy a la valeur true (valeur par défaut) sur chacun des types d’actualisation d’une table qui contient une stratégie d’actualisation incrémentielle :

Type d’actualisation Impact
complet La stratégie est appliquée comme décrit dans Actualisation incrémentielle dans Power BI. En supposant que des partitions historiques ont déjà été créées par une opération d’actualisation précédente, un résumé est décrit ici :
- De nouvelles partitions sont ajoutées à la plage incrémentielle si nécessaire.
- Si aucune interrogationExpression n’est définie pour la détection des modifications de données, toutes les partitions de la plage incrémentielle sont actualisées en totalité.
- Si une instance pollingExpression est définie, elle est évaluée pour chaque partition de la plage incrémentielle. Seuls ceux qui retournent un résultat d’interrogation différent de celui de l’opération d’actualisation précédente sont complètement actualisés.
- Les partitions historiques ne sont pas actualisées, qu’elles aient ou non été effacées des données.
- Les partitions historiques qui ne sont pas comprises sont supprimées.
- Recalcul des partitions et des dépendances affectées.
clearValues applyRefreshPolicy n’affecte pas le comportement.
Calculer applyRefreshPolicy n’affecte pas le comportement.
dataOnly Identique à type=full, mais sans recalcul des partitions affectées et des dépendances.
automatique Identique à type=full, mais les partitions de la plage incrémentielle sont actualisées à l’aide de type=automatic.
add applyRefreshPolicy n’affecte pas le comportement.
Défragmenter applyRefreshPolicy n’affecte pas le comportement.

response

Retourne un résultat vide lorsque la commande réussit. Sinon, une exception XMLA est retournée.

Exemples

Remplacez les valeurs ConnectionString et QueryDefinition d’une partition.

{
  "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]"
            }
          }
        ]
      }
    ]
  }
}

Étendre les remplacements particuliers en définissant le paramètre de type sur une actualisation dataOnly , les métadonnées restent intactes.

{
  "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"
          }
        ]
      }
    ]
  }
}

Utilisation (points de terminaison)

Cet élément de commande est utilisé dans une instruction de l’appel de méthode d’exécution (XMLA) sur un point de terminaison XMLA, exposé de la manière suivante :

  • En tant que fenêtre XMLA dans SQL Server Management Studio (SSMS)

  • En tant que fichier d’entrée de l’applet de commande PowerShell invoke-ascmd

  • En tant qu’entrée pour une tâche SSIS ou SQL Server Agent travail

Vous pouvez générer un script prêt à l’être pour cette commande à partir de SSMS. Par exemple, vous pouvez cliquer sur le script dans une boîte de dialogue Traitement.