Business Intelligence Blog

Welcome on Business Intelligence Blog !!!

This blog is dedicated to Business Intelligence technologies under SAS9 and SQL Server 2005.

Calendrier

Novembre 2009
L M M J V S D
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
<< < > >>

MVP Blog

Recommander

W3C

  • Flux RSS des articles

MS Analysis Services 2005

Mardi 24 mai 2005

 J'ai publié la semaine dernière un article sur la BI (merci pour vos commentaires ...) et je vous propose la suite cette semaine.

Il s'agit d'un tutoriel (de 40 pages, argh !!!!) sur le déploiment de cubes avec Analysis Services 2005 et un (tout) petit coup de lumière sur leMDX. Bonne lecture et j'attends vos commentaires ...

C'est toujours sur techheadbroters.com.

 

Merci d'avance ;)

 Voir l'Article

Par Harduin
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Lundi 12 septembre 2005

Je viens de publier mon 3eme article, toujours sur techheadbrothers. BI For Masses porte sur le langage de requêtage des cubes, le MDX, (Multidimensional Expression).

RV sur THB : http://www.techheadbrothers.com/DesktopDefault.aspx?tabindex=1&tabid=7&AId=109

La suite de cet article sous peu dès que Laurent l'aura validée ;)
 
Par Harduin
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Mercredi 8 mars 2006

En : I'm currently preparing an article on ADOMD.net. While I'm preparing it, I'll publish some code sample on my blog, (even it could look trivial) :

Fr :  Je prépare actuellement un article sur ADOMD.net. Dans le même temps où je le prépare, je publierais des sample de code sur mon blog (même sils sont triviaux).

 

Typical connection String for a cube :

Provider=MSOLAP;Integrated Security=SSPI;Persist Security Info=False;Data Source=.BILAB;Initial Catalog=Analysis Services Tutorial;Client Cache Size=25;Auto Synch Period=10000

 

Typical connection function (facade oriented) :

#region Cube Connectivity
        public ConnectionState   Connect(string connString )
        {

            this.ConnectionString = connString;
            _mdConn = new AdomdConnection(this.ConnectionString);
            _mdConn.Open();
            return _mdConn.State;

        }
#endregion

Par Renaud Harduin
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Vendredi 10 mars 2006

FR : Ce sample montre comment obtenir une list de cube pour une connection donnée. Dans ce cas il faut faire attention à ce que l'on récupère car le moteur présente des dimensions au même niveaux que les cubes dans la collection Cubes !

EN : This sample show how to get a Cube list for a given connection. During iteration, you've to consider that cubes are at the same level than dimensions ...

public List<string> getCubeList()
        {
            /* gets the number of cubes */
            int nbOfCubes = _mdConn.Cubes.Count;
            List<string> m_cubeList = new List<string>();
           
           
            /* iterates into the cube list and load a global List */
            for (int i = 0; i < nbOfCubes; i++)
            {
                CubeDef cube = _mdConn.Cubes[i];

                /* We filter because cubes, dimensions ... are exposed at the same level */
                if (cube.Type == CubeType.Cube)
                {
                    m_cubeList.Add(_mdConn.Cubes[i].Name);
                }
            }
            return m_cubeList;
        }

Par Renaud Harduin
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Vendredi 10 mars 2006

FR : l'idée est de charger une liste de dimension dans un treeview. La première méthode construit un dictionnaire de dimension pour un cube donné

EN : My Idea is to load a treenode by dimension, hierarchies ... This first method constructs a dicitionnary of dimensions for a given cube :

public Dictionary<string, string> getDimension(string p_cubeName)
{
    Dictionary<string, string> m_dict = new Dictionary<string, string>();
    CubeDef m_cube = this._mdConn.Cubes[p_cubeName];
    foreach (Dimension dim in m_cube.Dimensions)
    {
        m_dict.Add(dim.UniqueName, dim.Caption);
    }
    return m_dict;
}

FR : ici je préfère créer une méthode séparée que j'appelle pour charger les node de sorte à ne pas mélanger accès aux données et chargement du treeview (mon idée étant d'appeler ces méthodes par remoting ou autre). Je présente ici la méthode GetDimensionTree.

EN : I prefer to create a separate method that I call to load treenodeCollection in order to mix data access and treeview loading. (this will be interesting If I decide to use remoting for example ;) or ay distributed model). Here is the node population method :

public TreeNode GetDimensionTree(string p_cubeName)
{
    TreeNode m_nodes = new TreeNode("Dimension");
    Dictionary<string, string> m_dim = this.getDimension(p_cubeName);


    foreach (string dimName in m_dim.Values)
    {
        TreeNode dim_node = new TreeNode(dimName);

        /* populates hierarchies for a given dimension*/
        this.getHierarchyTree(ref dim_node, p_cubeName, dimName);

        /* populates Hierarchy list */
        m_nodes.Nodes.Add(dim_node);
       
    }

    return m_nodes;
}

FR : la méthode getHierarchyTree  sera détaillée dans un autre article.

EN : the getHierarchyTree will be discussed sooner...

 

Par Renaud Harduin
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus