Le Post Infeeny

Les articles des consultants et experts Infeeny

SSAS – Processer un cube Analysis Services de 8 manières différentes

SSAS-cube
Dans cet article, nous allons voir ensemble huit méthodes nous permettant de traiter un cube OLAP.
Avant toute chose, faisons un petit rappel sur les différents types de traitement de cube suivants :
Process Default, Process Full, Process Clear, Process Data, Process Update, Process Add, Process Index, Process Structure, Process Clear Structure.

Mode S’applique à Description
Process Default Cubes
Bases de données
Dimensions
Groupes de mesures
Modèles d’exploration
Structures d’exploration
Partitions
Détecte l’état de traitement des objets de base de données et effectue le traitement nécessaire pour faire passer les objets non traités ou traités partiellement dans un état de traitement complet.Si vous modifiez une liaison de données, la fonction Process Default fera un Process Full de l’objet concerné.
Process Full Cubes
bases de données
dimensions
groupes de mesures
modèles d’exploration
structures d’exploration
partitions.
Traite un objet Analysis Services et tous les objets qu’il contient.Lorsque le Process Full est sélectionnée pour un objet qui a déjà été traité, Analysis Services supprime toutes les données de l’objet, puis traite l’objet.Ce type de traitement est requis en cas de modification structurelle d’un objet, par exemple lorsqu’une hiérarchie d’attribut est ajoutée, supprimée ou renommée.
Process Clear Cubes
bases de données
dimensions
groupes de mesures
modèles d’exploration,
structures d’exploration
partitions.
Supprime les données dans l’objet spécifié et dans tous les objets de niveau inférieur qui constituent cet objet.Une fois que les données sont supprimées, elles ne sont pas rechargées.
Process Data Dimensions
cubes
groupes de mesures
partitions
Traite uniquement les données sans générer d’agrégations ou d’index.Si les partitions contiennent des données, celles-ci seront supprimées avant de remplir à nouveau la partition avec les données sources.
Process Add Dimensions
groupes de mesures
partitions

Remarque Remarque
Process Add n’est pas disponible pour le traitement des dimensions dans Management Studio, mais vous pouvez écrire un script XMLA pour effectuer cette action.
Pour les dimensions, ajoute de nouveaux membres et met à jour les captures et descriptions d’attributs de dimension.Pour les groupes de mesures et les partitions, ajoute les nouvelles données de faits disponibles et traite uniquement les partitions concernées.
Process Update Dimensions Impose une relecture des données et une mise à jour des attributs de dimension.Les agrégations et index flexibles des partitions associées sont supprimés.
Process Index Cubes
dimensions
groupes de mesures
partitions
Crée ou reconstruit des index et des agrégations pour toutes les partitions traitées.Cette option provoque une erreur sur les objets non traités.Cette option est requise pour le traitement si vous avez désactivé le traitement différé.
Process Structure Cube et structures d’exploration (mining structures) Si le cube n’est pas traité, Analysis Services va traiter, si nécessaire, toutes les dimensions du cube.Ensuite, Analysis Services va créer uniquement des définitions de cube.Si cette option est appliquée à une structure d’exploration de données, elle remplit la structure avec les données sources.À la différence de l’option process Full, cette option n’itère pas le traitement jusqu’aux modèles d’exploration de données.
Process Clear Structure Structures d’exploration de données (mining structures) Supprime toutes les données d’apprentissage d’une structure d’exploration de données.

Maintenant que nous connaissons sur le bout des doigts tous ces différents modes, rentrons dans le vif du sujet !

METHODE 1 : Depuis BIDS ou SSDT

  • BIDS, Business Intelligence Development Studio (Sql Server 2005, 2008 ,2008 R2) ou SSDT, SQL Server Data Tools (sql server 2012)

Nous pouvons traiter directement la base OLAP, ce qui va entraîner les traitements de tous les cubes de la base…

Traiter une base depuis SSDT
Traiter une base depuis SSDT

Nous pouvons aussi traiter un cube souhaité…

Traiter un cube depuis SSDT
Traiter un cube depuis SSDT

METHODE 2 : Depuis SSMS (Sql Server Management Studio)

Depuis SSMS, nous pouvais faire les mêmes action que la premiere méthode.

Traiter une base OLAP depuis SSMS
Traiter une base OLAP depuis SSMS

METHODE 3 : Avec le Script XMLA (XML for Analysis)

Toujours dans SSMS, on a la possibilité de générer un script XMLA, qui pourra être utilisé par la suite.

Traiter un cube depuis son code XMLA
Traiter un cube depuis son code XMLA

METHODE 4 : Avec un Code .Net

En glissant une tache Script Task dans le flux de controle et en y rajoutant le code C# suivant :

String serverName = « localhost »;
String databaseName = « AdventureWorks »;
String databaseID = databaseName;
String cubeID = « Adventure Works DW »;
AdomdConnection cn = new AdomdConnection(« Provider=MSOLAP;Data Source= » + serverName + « ;Initial Catalog= » + databaseName);
cn.Open();
AdomdCommand cmd;
cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;

cmd.CommandText = « <Batch xmlns=\ »http://schemas.microsoft.com/analysisservices/2003/engine\ »><Parallel><Process> <Type>ProcessFull</Type><WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process> </Parallel> </Batch> »;
try
{
Console.WriteLine(« Executing Command… »);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
cn.Close();
Console.WriteLine(« Finished »);
}

Note : Il faut rajouter la référence .net ADOMD.NET (using Microsoft.AnalysisServices.AdomdClient;)
De plus on remarquera que le script, exécute tout simplement le script xmla de la méthode 3.

METHODE 5 : Avec le composant SSIS : Analysis Services Proessing Task

On peut aussi utiliser la tache « Analysis Services processing Task » dans le flux de contole,

Composant Analysis Services Processing Task
Composant Analysis Services Processing Task

 en le configurant de la manière suivante :

Processer un cube depuis SSIS
Processer un cube depuis SSIS

METHODE 6 : Depuis PowerShell

Tout d’abord on se connecte au serveur « localhost » :

[System.Reflection.Assembly]::LoadWithPartialName(« Microsoft.AnalysisServices ») >$NULL
$server = New-Object Microsoft.AnalysisServices.Server
$server.connect(« localhost »)

Connexion au server localhost
Connexion au server localhost

Maintenant nous allons afficher la liste des bases de données OLAP existantes.

$database=$server.databases
$database|select-object name

Liste des bases de données OLAP
Liste des bases de données OLAP

Affichons la liste des cubes de la base de données.
Pour cela, insérons le nom de la base données dans la variable $msbi.

$msbi=$database[« Adventure Works DW 2012 »]

Connexion a la base de donnée OLAP
Connexion a la base de donnée OLAP

Afficher la liste des cubes de la base OLAP

$Cubes=New-object Microsoft.AnalysisServices.Cube
$Cubes=$msbi.cubes
$Cubes|select Name

Liste des cubes
Liste des cubes

Pour savoir si le cube est traité ou non et si oui, sa dernière date de traitement., on utilise la commande suivante :
$Cubes:select name,state,lasprocessed

Informations sur les cubes
Informations sur les cubes

Enfin nous arrivons à la partie où nous allons traiter le cube.
Ceci est possible avec la commande suivante :

    $ProcessType= »ProcessFull »
    foreach ($cube in $Cubes)
    {
        if ($Cube.Name -eq « Adventure Works »)
         {
            Write-host « Processing Cube: $cube »
            $Cube.Process($ProcessType)
         }
      else
      {
        Write-host « Skipped Processing Cube: $cube »
       }
  }

Traitement du cube
Traitement du cube

Vérifions de nouveau le dernier traitement

Etat apres traitement du cube
Etat apres traitement du cube

Perfect ! :-p

METHODE 7 : Job dans Agent SQL Server

Pour cette méthode, nous allons de nouveau utiliser le script XMLA et l’inserer dans un job.

Traiter un cube depuis un job Sql Server Agent
 

Méthode 8 :  Applet de commande Invoke-ASCmd (PowerShell)

SQL Server 2012 Analysis Services (SSAS) inclus des applets de commande PowerShell Analysis Services (SQLAS) afin que d’utiliser Windows PowerShell pour parcourir, administrer et interroger des objets Analysis Services.
L’applet de commande Invoke-ASCmd est utilisé pour exécuter un script MDX, DMX ou XMLA.
Voici la commande basique nous permettant de traiter un cube.
Pour commencer si vous êtes sur l’interface Powershell, il faut exécutez l’applet de commande Import-module pour charger SQLPS qui inclut toutes les fonctionnalités PowerShell Analysis Services et donc permet de gérer SQL Server à partir de Powershell :import-module “sqlps” –disablenamecheckingsqlpsSinon vous pouvez lancez directement le module SQLPS via la fenêtre d’exécution windowsrun sqlpsNous pouvons alors utiliser la commande suivante pour traiter le cube :Invoke-ProcessCube “Adventure Works” –database AdventureWorksDW2012 –ProcessType:ProcessFull
(Syntaxe : Invoke-ProcessCube [-Name] <System.String> [-Database] <System.String> [-ProcessType] <Microsoft.AnalysisServices.ProcessType> [<CommonParameters>] )Traitement du cube avec la commande invoke-processCube

Processing Cube in progress

Conclusion

Parmi toutes ces méthodes, c’est à vous de choisir la plus adaptées à vos besoins.
8 méthodes sont présentées dans cette article, mais il y en a certainement d’autres, n’hésitez pas à les partager.

Vu sur la toile :  Simple batch script to generate XMLA

http://dataonwheels.wordpress.com/2011/06/01/simple-batch-script-to-generate-xmla-and-deploy-ssas-db/

Sources :

http://technet.microsoft.com/en-gb/library/ms174774.aspx
http://technet.microsoft.com/fr-fr/library/hh213141.aspx
http://technet.microsoft.com/en-us/library/hh510171.aspx

Pour aller plus loin :

Different Kinds of SSAS Processing in simple words…..
http://blogs.msdn.com/b/karang/archive/2011/01/25/kind-of-ssas-processing-in-simple-words.aspx

SSAS Interview Questions on Deployment, Processing, Querying, and Accessing
http://www.mssqltips.com/sqlservertip/2756/ssas-interview-questions-on-deployment-processing-querying-and-accessing/

Analysis Services and powershell
http://blogs.msdn.com/b/olivier_pieri/archive/2011/01/26/analysis-services-and-powershell.aspx

PowerShell Analysis Services pour Sql Server 2012
http://technet.microsoft.com/fr-fr/library/hh213141.aspx

Une réponse à “SSAS – Processer un cube Analysis Services de 8 manières différentes

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :