Cannot take credit, Philippe tested static sets himself.
Still curious as to why it is necessary in this example though.
Original Message:
Sent: Fri May 17, 2024 10:18 AM
From: Emil Malmberg Fosdal
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 10:05 AM
From: Philippe CHAMPLEBOUX
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 09:50 AM
From: George Tonkin
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 08:59 AM
From: Philippe CHAMPLEBOUX
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 08:50 AM
From: George Tonkin
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 08:46 AM
From: Philippe CHAMPLEBOUX
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 02:55 AM
From: Emil Malmberg Fosdal
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 02:27 AM
From: Philippe CHAMPLEBOUX
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Fri May 17, 2024 02:09 AM
From: Emil Malmberg Fosdal
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
Original Message:
Sent: Thu May 16, 2024 10:51 AM
From: Philippe CHAMPLEBOUX
Subject: Strange lock during Dimension Update - Hudge duration of Update dimension by TI
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
------------------------------