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
|
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…
Nous pouvons aussi traiter un cube souhaité…
METHODE 2 : Depuis SSMS (Sql Server Management Studio)
Depuis SSMS, nous pouvais faire les mêmes action que la premiere méthode.
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.
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,
en le configurant de la manière suivante :
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 »)
Maintenant nous allons afficher la liste des bases de données OLAP existantes.
$database=$server.databases
$database|select-object name
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 »]
Afficher la liste des cubes de la base OLAP
$Cubes=New-object Microsoft.AnalysisServices.Cube
$Cubes=$msbi.cubes
$Cubes|select Name
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
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 »
}
}
Vérifions de nouveau le dernier traitement
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.
-
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” –disablenamechecking
Sinon vous pouvez lancez directement le module SQLPS via la fenêtre d’exécution windows
Nous 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>] ) -
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
Bravo Harry