Planning Analytics

 View Only
Expand all | Collapse all

Strange lock during Dimension Update - Hudge duration of Update dimension by TI

  • 1.  Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 16 days ago

    Hello,

    For a new customer (and a new project) , I install Planning Analytics on premice on windows 2016 with these versions :

    PAW : 2.0.93

    PA 2.0.9.19

    (and PAFE 2.0.94.7)

    I started development and was confronted with behavior I'd never seen before: locks on }DimensionProperties and a horribly long execution time.

    Several explanation :

      1 - Locks

         I launch the execution of a first TI that updates a dimension (metadata and data) and, while it's running, launch the execution of another TI process that updates another dimension (or, alternatively, manually attempt to modify a dimension through the workspace).

        the first TI has put such locks on (a priori) }dimensionproperties that all other actions (other TI or manually dimension update) are in WAIT:IXC until ... the end of the TI !!!

      2 - Duration

    Inevitably, my first TI, just to complicate the situation, is very long (strangely and inexplicably long!).

    because I had several different files to feed my dimension, I proceeded in two stages:
    The first step (with several TIs) feeds a working Dim_w_xxx dimension with its elemensts and attributes.
    a second step with a final ti that reads (vis subset) my working dimension and completely manages my final dimension ( prolog=deleteallelement, metadata=add element, component , data read attributes and write attributes).

    This last process has a duration of  25' !!!!! ( metadata aproximativly 10'')

    i try this :

       Read Work Dimension

       Metadata magagedimension

       data : export file (asciioutput)

     and a second ti read this file and manage attributs (data section)

    Total duration : 25''

    Has anyone experienced this kind of difficulty recently?
    Does anyone have an opinion on my incredible problem?
     
    I've put in a ticket to IBM support, .... but no plausible answers yet.
    Kind regards,
    Philippe


    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------


  • 2.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
    Best Answer

    IBM Champion
    Posted 16 days ago

    Hi Philippe,

    I haven't seen any general issues, so it probably comes down to the script. What's the size of the finished dimension, that takes 25 min to load?

    Have you tried to isolate what is causing the issues? You can start by commenting your script out on all tabs, and just adding a "dummy" variable on data/metadata (e.g. vDummy = 1;) to force the process to load your source. Then comment in your script on prolog, metadata, data etc. to see where the issue resides.

    Could you share the scripts you have done for the process you have not, that takes 25 min? (Prolog, Metadata, Data and epilog). I will be happy to take a look at it.



    ------------------------------
    Emil Malmberg Fosdal
    Solution Architect
    CogniTech A/S
    ------------------------------



  • 3.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 16 days ago

    Thanks Emil !

    I admit I don't understand what's going on either, it's the first time I've been confronted with it.

    I already make a test .... Metadata aproximativly 5 seconds (and work as fine I wanted) , Data 25 minutes.

    This my TI code :

    Code of TI Process Proc_Dim_Article
    =========================
    parameters :
    =========================
    P_Recreer (OUI NON)
     
    ==============
    PROLOG
    ==============
     
    LogOutPut ( 'INFO' , 'Parametres  :  ' | P_Recreer);
     
    sDim='Dim_Article';
     
    If (P_Recreer @= 'OUI');
         DimensionDeleteAllElements(sDim) ;
    EndIf;
     
    DimensionSortOrder ( sDim , 'BYINPUT','ASCENDING','ByHierarchy','Ascending') ;
     
    AttrInsert (sDim , '', 'Libelle' , 'A') ;
    AttrInsert(sDim , '' , 'libelleFR' , 'S' );
    AttrInsert(sDim , '' , 'libelleEN' , 'S' );  
     
    # insertion de tous les attributs existants dans Dim_W_Article
    AttrInsert(sDim, '', 'NewSsFam','S');
    AttrInsert(sDim, '', 'NewFamille','S');
    AttrInsert(sDim, '', 'Categorie','S');
    AttrInsert(sDim, '', 'SsFam','S');
    AttrInsert(sDim, '', 'Famille','S');
    AttrInsert(sDim, '', 'TypologieStock','S');
    AttrInsert(sDim, '', 'LibHierarchieEN','S');
    AttrInsert(sDim, '', 'LibHierarchieFR','S');
    AttrInsert(sDim, '', 'UniteStock','S');
    AttrInsert(sDim, '', 'UniteBasePRI','S');
    AttrInsert(sDim, '', 'CodeFournisseurPrincipal','S');
    AttrInsert(sDim, '', 'NomCourtFichier','S');
    AttrInsert(sDim, '', 'Niveau','S');
    AttrInsert(sDim, '', 'Papa','S');
    AttrInsert(sDim, '', 'DiscriminantEAN','S');
    AttrInsert(sDim, '', 'LibTaille','S');
    AttrInsert(sDim, '', 'CodeTaille','S');
    AttrInsert(sDim, '', 'LibCouleur','S');
    AttrInsert(sDim, '', 'CodeCouleur','S');
    AttrInsert(sDim, '', 'CodeArticleEAN','S');
    AttrInsert(sDim, '', 'MoisExtractPRI','S');
    AttrInsert(sDim, '', 'AnneeExtracPRI','S');
    AttrInsert(sDim, '', 'MoisMajPRI','S');
    AttrInsert(sDim, '', 'AnneeMajPRI','S');
    AttrInsert(sDim, '', 'PRI','S');
    AttrInsert(sDim, '', 'hierarchieNiveau3','S');
    AttrInsert(sDim, '', 'LibMarque','S');
    AttrInsert(sDim, '', 'Codemarque','S');
    AttrInsert(sDim, '', 'LibModele','S');
    AttrInsert(sDim, '', 'TypeModele','S');
    AttrInsert(sDim, '', 'CodeModele','S');
     
    Cptr_Medatada=0;
    Cptr_Data=0;
     
    METADATA
    ==========
     
    Papa='';
    Niveau='';
    Hierarchieniveau3='';
     
     DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Hierarchie_SAP' , 'C' );
     DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Hierarchie_EPM' , 'C' );
     DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Hierarchie_NewEPM' , 'C' );
     DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Articles' , 'C' );
            DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Matieres_Premieres' , 'C' );
                  DIMENSIONELEMENTCOMPONENTADD(sDim, 'Total_Articles', 'Total_Matieres_Premieres' ,1);
           DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Produits_Finis' , 'C' );
                    DIMENSIONELEMENTCOMPONENTADD(sDim, 'Total_Articles', 'Total_Produits_Finis' ,1);
     
    # insertion element
    #----------------------
    DIMENSIONELEMENTINSERT(sDIM , '' , Element , 'N' );
     
    # insertion generique du coeur de la hiérarchie
    # Total_Articles
    #      Total_Matières_Premieres
    #                 les matières premieres puis les Composants
    #       Total_Produits_Finis
    #                 les modeles puis les articles
     
    # insertion Papa (articles dans Modeles et Composants dans Matiere Premiere)
    #---------------------------------------------------------------------------------------------
     
     
     
    Papa = Attrs('Dim_W_Article', Element, 'Papa');
    Niveau=Attrs('Dim_W_Article', Element, 'Niveau');
     
    If (Papa @>' ');
        DIMENSIONELEMENTINSERT(sDIM , '' , Papa , 'C' );
        DIMENSIONELEMENTCOMPONENTADD(sDim,PAPA,Element,1);
    EndIf;   
     
     
     # Totalisation Hierarchie SAP 1
    # -------------------------------------
    If (Niveau @='HIerarchie 1');
            DIMENSIONELEMENTCOMPONENTADD(sDim,'Total_Hierarchie_SAP',Element,1);
    EndIf;
     
    # Relation Modele - Matiere vers hierarchie SAP
    #-----------------------------------------------------------
    If ( Niveau @= 'Matiere'  %   Niveau @= 'Modele');
        Hierarchieniveau3 = Attrs('Dim_W_Article',Element, 'hierarchieNiveau3');
        If ( Hierarchieniveau3 @>' ');
                DIMENSIONELEMENTINSERT(sDIM , '' , Hierarchieniveau3 , 'C' );
                DIMENSIONELEMENTCOMPONENTADD(sDim,HierarchieNiveau3 ,Element,1);
            Else;
                DIMENSIONELEMENTCOMPONENTADD(sDim,'Total_Hierarchie_SAP' ,Element,1);
        EndIf;
    EndIf;      
     
     
    # Hierarchie Categorie-SsFam-Famille  NewSsFam - Newfam
    #----------------------------------------------
    Categorie=Attrs('Dim_W_Article', Element,'Categorie');
    SsFam = Attrs('Dim_W_Article', Element,'SsFam');
    Famille=Attrs('Dim_W_Article', Element, 'Famille');
     
    NewFamille=Attrs('Dim_W_Article', Element, 'NewFamille');
    NewSsFam=Attrs('Dim_W_Article', Element, 'NewSsFam');
     
    If ( Categorie @> ' ');
        DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Categorie' , 'C' );
          DIMENSIONELEMENTINSERT(sDIM , '' , Categorie , 'C' );
          DIMENSIONELEMENTCOMPONENTADD(sDim,'Total_Categorie',Categorie,1);
        DIMENSIONELEMENTCOMPONENTADD(sDim,Categorie,Element,1);
    EndIf;
     
    If ( Famille @> ' ');
          DIMENSIONELEMENTINSERT(sDIM , '' , Famille , 'C' );
          DIMENSIONELEMENTCOMPONENTADD(sDim,'Total_Hierarchie_EPM',Famille,1);
    EndIf;
     
    If ( SsFam @> ' ');
          DIMENSIONELEMENTINSERT(sDIM , '' , SsFam , 'C' );
          DIMENSIONELEMENTCOMPONENTADD(sDim,Ssfam,Element,1);
              DIMENSIONELEMENTCOMPONENTADD(sDim,Famille, Ssfam,1);
    EndIf;
     
     
    If ( NewSsFam @> ' ');
          DIMENSIONELEMENTINSERT(sDIM , '' , NewSsFam , 'C' );
          DIMENSIONELEMENTCOMPONENTADD(sDim,NewSsfam,Element,1);
    EndIf;
    If ( NewFamille @> ' ');
          DIMENSIONELEMENTINSERT(sDIM , '' , NewFamille , 'C' );
          DIMENSIONELEMENTCOMPONENTADD(sDim,NewFamille,NewSsfam,1);
     
     
          DIMENSIONELEMENTCOMPONENTADD(sDim,'Total_Hierarchie_NewEPM',NewFamille,1);
    EndIf;
     
     
    # insertyion generique
    # ---------------------------
     
     
     
    If ( Niveau  @='Matiere' & PAPA @='');
        DIMENSIONELEMENTCOMPONENTADD(sDim, 'Total_Matieres_Premieres',Element ,1);
    EndIf;
     
    CodeModele=Attrs('Dim_W_Article', Element, 'CodeModele');
     
    If ( Niveau  @='Article' & CodeModele @>'');
        DIMENSIONELEMENTCOMPONENTADD(sDim, 'Total_Produits_Finis',CodeModele ,1);
    EndIf;
     
    ===============
    DATA
    ===============
    Papa = Attrs('Dim_W_Article', Element, 'Papa');
    Niveau=Attrs('Dim_W_Article', Element, 'Niveau');
      Hierarchieniveau3 = Attrs('Dim_W_Article',Element, 'hierarchieNiveau3');
     
     
     
    #ATTRPUTS(AnneeSuivante,sDim,Element,'AnneeSuivante');
    # Insertion de tous les attributs de la dim_w_article
     
    CellPuts( CellGetS('}ElementAttributes_Dim_w_Article',Element, 'NewSsFam'),'}ElementAttributes_Dim_Article',Element,'NewSsFam');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'NewFamille'),'}ElementAttributes_Dim_Article',Element,'NewFamille');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'Categorie'),'}ElementAttributes_Dim_Article',Element,'Categorie');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'SsFam'),'}ElementAttributes_Dim_Article',Element,'SsFam');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'Famille'),'}ElementAttributes_Dim_Article',Element,'Famille');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'TypologieStock'),'}ElementAttributes_Dim_Article',Element,'TypologieStock');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'LibHierarchieEN'),'}ElementAttributes_Dim_Article',Element,'LibHierarchieEN');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'LibHierarchieFR'),'}ElementAttributes_Dim_Article',Element,'LibHierarchieFR');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'UniteStock'),'}ElementAttributes_Dim_Article',Element,'UniteStock');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'UniteBasePRI'),'}ElementAttributes_Dim_Article',Element,'UniteBasePRI');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'CodeFournisseurPrincipal'),'}ElementAttributes_Dim_Article',Element,'CodeFournisseurPrincipal');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'NomCourtFichier'),'}ElementAttributes_Dim_Article',Element,'NomCourtFichier');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'Niveau'),'}ElementAttributes_Dim_Article',Element,'Niveau');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'Papa'),'}ElementAttributes_Dim_Article',Element,'Papa');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'DiscriminantEAN'),'}ElementAttributes_Dim_Article',Element,'DiscriminantEAN');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'LibTaille'),'}ElementAttributes_Dim_Article',Element,'LibTaille');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'CodeTaille'),'}ElementAttributes_Dim_Article',Element,'CodeTaille');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'LibCouleur'),'}ElementAttributes_Dim_Article',Element,'LibCouleur');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'CodeCouleur'),'}ElementAttributes_Dim_Article',Element,'CodeCouleur');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'CodeArticleEAN'),'}ElementAttributes_Dim_Article',Element,'CodeArticleEAN');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'MoisExtractPRI'),'}ElementAttributes_Dim_Article',Element,'MoisExtractPRI');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'AnneeExtracPRI'),'}ElementAttributes_Dim_Article',Element,'AnneeExtracPRI');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'MoisMajPRI'),'}ElementAttributes_Dim_Article',Element,'MoisMajPRI');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'AnneeMajPRI'),'}ElementAttributes_Dim_Article',Element,'AnneeMajPRI');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'PRI'),'}ElementAttributes_Dim_Article',Element,'PRI');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'hierarchieNiveau3'),'}ElementAttributes_Dim_Article',Element,'hierarchieNiveau3');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'LibMarque'),'}ElementAttributes_Dim_Article',Element,'LibMarque');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'Codemarque'),'}ElementAttributes_Dim_Article',Element,'Codemarque');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'LibModele'),'}ElementAttributes_Dim_Article',Element,'LibModele');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'TypeModele'),'}ElementAttributes_Dim_Article',Element,'TypeModele');
    CellPuts(CellGetS('}ElementAttributes_Dim_w_Article',Element, 'CodeModele'),'}ElementAttributes_Dim_Article',Element,'CodeModele');
     
    # Definition des libelles et Alias
    # -------------------------------------
    CodeModele = Attrs('Dim_w_Article'  ,  Element  ,  'CodeModele');
    DiscriminantEAN = Attrs('Dim_w_Article'  ,  Element  ,  'DiscriminantEAN');
    LibModele = Attrs('Dim_w_Article'  ,  Element  ,  'LibModele');
     
    # Article libModele + discriminant
    If ( Niveau @='Article' ) ;
            Libelle = LibModele | ' (' | CodeModele |') ' | DiscriminantEAN;
            LibelleFR = Libelle;
            LibelleEN = Libelle;    
            attrPutS (LibelleEN, sDim, Element, 'Libelle');
            attrPutS (LibelleFR, sDim, Element, 'Libelle', 'fr');
            AttrPuts(LibelleFR, sDim, Element, 'LibelleFR');
            AttrPuts(LibelleEN, sDim, Element, 'LibelleEN');
    ElseIf ( niveau@='Composant') ;
            Libelle = LibModele | ' (' | CodeModele |') ' | DiscriminantEAN;
            LibelleFR = Libelle;
            LibelleEN = Libelle;    
            attrPutS (LibelleEN, sDim, Element, 'Libelle');
            attrPutS (LibelleFR, sDim, Element, 'Libelle', 'fr');
            AttrPuts(LibelleFR, sDim, Element, 'LibelleFR');
            AttrPuts(LibelleEN, sDim, Element, 'LibelleEN');    
     ElseIf (Niveau @='Modele' % Niveau@='Matiere');
            Libelle = LibModele | ' (' | CodeModele |') ' | DiscriminantEAN;
            LibelleFR = Libelle;
            LibelleEN = Libelle;    
            attrPutS (LibelleEN, sDim, Element, 'Libelle');
            attrPutS (LibelleFR, sDim, Element, 'Libelle', 'fr');
            AttrPuts(LibelleFR, sDim, Element, 'LibelleFR');
            AttrPuts(LibelleEN, sDim, Element, 'LibelleEN');
         
    ElseIf(subst(Niveau, 1, 10) @= 'Hierarchie');
            LibelleEN=Attrs('dim_w_article',Element,'LibHierarchieEN') | ' (' | Element | ')' ;
            LibelleFR=Attrs('dim_w_article',Element,'LibHierarchieFR') | ' (' | Element | ')' ;
             attrPutS (LibelleEN, sDim, Element, 'Libelle');
            attrPutS (LibelleFR, sDim, Element, 'Libelle', 'fr');
            AttrPuts(LibelleFR, sDim, Element, 'LibelleFR');
            AttrPuts(LibelleEN, sDim, Element, 'LibelleEN');
    EndIf;    
     
     
    =============================
    EPILOG
    ============================
    sFichierErreur = GetProcessErrorFilename();
     
    If (sFichierErreur @> ' ');
        ProcessRollback();
    Endif;
    Kind regards,
    philippe


    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 4.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 16 days ago

    Hi Philippe,

    If you on your data tab start with one variable:

    • vTest = 1;
    • comment out the rest of the statement

    How does it the perform?

    Then comment in sections, one by on, from the top. What sections are causing the issue?

    I see you use @>'' / @>' ' quite allot. When comparing numbers, it is allot more efficient to use numeric variables, then to convert strings for each test.

    • One more question: Are you getting any errors when running your process? It the rollback being triggeret? 

    Another small thing. You should move this part to prolog. You can do it once there, no need to do it 15k times on the metadata tab :-)

    DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Hierarchie_SAP' , 'C' );
     DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Hierarchie_EPM' , 'C' );
     DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Hierarchie_NewEPM' , 'C' );
     DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Articles' , 'C' );
            DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Matieres_Premieres' , 'C' );
                  DIMENSIONELEMENTCOMPONENTADD(sDim, 'Total_Articles', 'Total_Matieres_Premieres' ,1);
           DIMENSIONELEMENTINSERT(sDIM , '' , 'Total_Produits_Finis' , 'C' );
                    DIMENSIONELEMENTCOMPONENTADD(sDim, 'Total_Articles', 'Total_Produits_Finis' ,1);


    ------------------------------
    Emil Malmberg Fosdal
    Solution Architect
    CogniTech A/S
    ------------------------------



  • 5.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 16 days ago

    Hi Emil,

    Thank for your suggestion to move several dimensionelementinsert and dimensionelementcoponentadd to prolog.

    About attributs all are string and can only use @>' ' to test if theay are empty or not.

    it is only Data wich take a long time....

    Good Idea, I Will test step by step to comment all and uncomment row by row to see wich instruction take a long time

    Regards,

    Philippe



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 6.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 15 days ago

    Hi Emil

    I try a lot of thing hand have the solution (but not the explanation !!!!!)

    I Put "Logging"=NO for these cubes
     }DimensionProperties
     }ElementAttributes_Dim_Article
     }ElementAttributes_Dim_w_Article
     }LocalizedElementAttributes_Dim_Article
     }localizedElementAttributes_Dim_w_Article

    I Run my TI with several tests :

    1°) without anything in DataSection :
    ==>    3.65 seconds

    é)) With Only First CellPutS : 
      CellPuts( CellGetS('}ElementAttributes_Dim_w_Article',Element, 'NewSsFam'),'}ElementAttributes_Dim_Article',Element,'NewSsFam');
    ==> 29 minutes
    (and lot of locks on }DimensionProperties : Thread xxxxx holds the lock in IX mode)

    3°) Try to change this alone instruction by :
     CellPuts( 'Nimportequoi','}ElementAttributes_Dim_Article',Element,'NewSsFam');
    ==> Manualy killed after 5 minutes

    4°) Try to use a static subset (and not a mdx subset) as datasource
    ==> finished in 4 seconds

    Try the complete Process with a static Subset in datasource
    ==> complete finish in 11 seconds.

    Then , I think that use a MDX Subset is the expplanation, I will use A Static Subset, create in other process.

    BUT WHY ????

    Regards,

    Philippe



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 7.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 15 days ago

    Can you share the subset as the MDX will refire if there is a change in the underlying drivers of the dynamic set e.g. if you are filtering on an attribute and you are updating the the attributes, the MDX needs to refresh to ensure you are seeing a current set.



    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------



  • 8.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 15 days ago

    Hello George,

    The Subset  I use as datasource in on  "Dim_W_Article" dimension and I manage an other  dimension "Dim_Article". (forr me, no need to refresh, because datasource not updated)

    The MDX is so simple : << [Dim_W_Article].[Dim_W_Article].MEMBERS >>

    I don't understand why this comportment arrive.

    i am going to workaround with a static subset created in ohter previous Ti

    ( SubsetMDXSet with mdx formula followed by  SubsetMDXSet with empty MdxFormula)

    I have given thes information to IBM Support to have an explanation (perhaps)

    Best regards,

    philippe



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 9.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 15 days ago

    HI Philippe, so there can be a huge distinction between elements and members.

    Going to try explain and assuming you do not know any of this so apologies if you do and not relevant, but may be helpful to others.

    TM1SubsetAll() will give you the elements
    [...].Members will give you members

    Elements are not always Members as an element that has two parents is essentially two Members, made distinct by their Member_Unique_Name (think of the fully qualified name e.g. [ParentsParent^Parent^Element] when you copy unique name in the old architect set editor.

    If you have many rollups in the default hierarchy and you have linked in the Leaf elements into these, there could be many times more Members than Elements.
    Furthermore, if for example the element has multiple parents the set is likely to contain the element multiple times and your process would process the same item multiple times.

    With all of that being said, your set may just have more members/duplicates than you want but does not explain why it should refire/refresh.
    Does your set have an alias set perhaps? Updating the attributes could trigger a refire.

    I cannot see that you are making any other changes to the Dim_W_Article dimension i.e. insert or delete elements/members, so not expecting the set to refresh.



    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------



  • 10.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 15 days ago

    Thank George,

    But my Dim_W_Article dimension has only leaf members, I could Use tm1filterByLevel( Tm1Subsetall( [dim_W_Article] ) , 0 ) I would have the same as "Members".

    And During TI execution not nay change are made on my datasource Dimension (Dim_W_Article) , change are made on an iother dimension (Dim_Article).

    As some people used to say, "The truth is out there" (I think).

    I change my tI and use a static Subset on datasource, then everything works perfectly 

    But I still don't know why I have to use this workaround.
    If anyone would like to do a test on their own environment ....

    Regards,

    Philippe

    Regards,

    Philippe



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 11.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 15 days ago

    100% - does not make sense if the underlying dimension is not changing through any kind of update that would impact the members.

    Maybe one for IBM support to advise on.



    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------



  • 12.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 15 days ago

    Great that @George Tonkin were able to work out the issue :-)

    Dynamic subsets sets allot more locks, then static. You should always use static subsets for TI's to avoid locking and performance issues.

    If you need to update your static subset before running your TI process, you can use the SubsetMDXSet() to update your subset with an MDX expression, followed by the same statement, only with '' in the place of the MDX. That will convert your subset to being static ;-)



    ------------------------------
    Emil Malmberg Fosdal
    Solution Architect
    CogniTech A/S
    ------------------------------



  • 13.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 15 days ago

    Cannot take credit, Philippe tested static sets himself.

    Still curious as to why it is necessary in this example though.



    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------



  • 14.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 16 days ago

    and My dimension has aprox 15 000 members



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 15.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 16 days ago

    Hi Philippe,

    Are there any rules on the attributes cubes e.g. }ElementAttributes_Dim_Article?

    Any feeders from the values you are updating?



    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------



  • 16.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 16 days ago

    Hi George,

    Alas, no calculation rules anywhere (I haven't had the time yet) and .... then  no feeders ....

    Regards,

    Philippe



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 17.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 16 days ago

    Hi Philippe,

    Any reason you are not turning logging off for this process?

    Can you test with logging off on the cube(s) being written to?



    ------------------------------
    George Tonkin
    Business Partner
    MCI Consultants
    Johannesburg
    ------------------------------



  • 18.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 16 days ago

    George,

    I try "No Logging"  for }elementattributs, }Dimensionproperties and so on ..... not better.

    When I use metadata to export (asciioutput) a file with all attribut  and after, on a second TI read this file to update attributs, it takes only 10 seconds.

    Perhaps it is the best solution  but ..... I'd like to understand what's going on, because I don't think it's normal.

    philippe



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------



  • 19.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    IBM Champion
    Posted 12 days ago

    Dear Philippe,

    I have another question about your code. Why aren't you leveraging alternate hierarchies for your article dimension?

    Kind regards,

    Luc



    ------------------------------
    Luc Cusiel
    ------------------------------



  • 20.  RE: Strange lock during Dimension Update - Hudge duration of Update dimension by TI

    Posted 11 days ago

    Hello Luc,

    Now, I have not yet need alternate hierarchie, perhaps in future.

    Kind regards,

    Philippe



    ------------------------------
    Philippe CHAMPLEBOUX
    ------------------------------