Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/10/2016, à 18:55

MINYA

Olap parser affichage cube

Bonjour,

Cela fait presque 3 heures que je me penche sur ce code, mais je n'arrive pas à comprendre, dès que je crois que j'ai compris, j'essaye de faire un bout de code pour juste afficher le contenu du cube, mais je n'y arrive pas! Voici le code en lui même

#!/usr/bin/python
#-*- coding: latin-1 -*-
"""
A simple implementation of a molap cube.
"""
from copy import copy

class MolapObject (dict):
    """
    A MolapObject (étonnant non ?)
    """
    def loadfromcsv(self,keys,stream):
        """
        Load MolapObject from a csv line
        """
        k=[keys,stream]
        for j in range(len(k)):
            k[j]=k[j].strip("\n")            
            k[j]=k[j].split(",")
            k[j]=[x.strip('"') for x in k[j]]
        for i in range(len(k[0])):
            self[k[0][i]]=k[1][i]

    def __str__(self):
        """
        Print MolapObject to csv format
        """
        me=""
        # sorted keys for coherent results
        s=self.keys()
        s.sort()
        for key in s:
            me+='"'+self[key]+'",'
        return me[:-1]
    def affichage (self):
	cube= new MolapObject
	print cube

class MolapCube:
    def __init__(self,molaps=[]):
        self.molaps=molaps
        
    def molapsfromcsv(self,file):
        """
        Load an olap cube from a csv file
        """
        f=open(file,'r')
        oomolaps=[]
        keys=f.readline()
        line=f.readline()
        while line!="":    
            o=MolapObject()
            o.loadfromcsv(keys,line)
            oomolaps.append(o)
            line=f.readline()    
        self.molaps=oomolaps

    
    def molapstocsv(self):
        """
        Return a csv string from the data cube
        """
        s=self.molaps[0].keys()
        # sorted keys for coherent results
        s.sort()
        me=reduce(lambda x,y:x+","+y,map(lambda x: '"'+str(x)+'"',s))+"\n"
        for x in self.molaps:
            me+=str(x)+"\n"
        return me

    def sort(self,dimension):
        """
        Return a list of MolapObjects sorted over one dimension 
        """
        list=copy(self.molaps)
        list=map(lambda x:[x,x[dimension]],list)
        for i in range(len(list)):
            for j in range(len(list)):
                if list[i][1]<list[j][1]:
                    temp=list[i]
                    list[i]=list[j]
                    list[j]=temp    
        return map(lambda x:x[0],list)

    # your turn now ! 
    # Careful: following prototypes are mostly wrong.

    #def affichage(self):
        #print (self.molaps)
  
    def slice(self):
        pass

    def dice(self):
        pass

    def view2d(self):
        pass
    
    def pivot(self):
        pass

    def drilldown(self):
        pass

    def rollup(self):
        pass

    
if __name__=="__main__":

    import sys
    cube=MolapCube()
    # init
    cube.affichage()
    if len(sys.argv)<2:
        print "Wrong input file.\nUsage : oomolap.py [afile.csv]"                
    else:
        cube.molapsfromcsv(sys.argv[1])
        #
        #print "\n cube to csv \n"
        #print cube.molapstocsv()   
        #
        #print "\n sort over dimension 'lieu'\n"
        #sorted=cube.sort('lieu')
        #   
       

    

Peace

Hors ligne