2017-06-07 4 views
0

similaires à cette question, mais pas tout à fait le même: Spotfire: "limit data using markings" by python scriptRégler le marquage sur un savoir par IPython

J'ai un script qui ressemble actuellement à ceci:

from Spotfire.Dxp import Data 
from Spotfire.Dxp.Application.Visuals import * 

#Remove the current Marking Filter 
for filtering in vis.As[VisualContent]().Data.Filterings: 
    vis.As[VisualContent]().Data.Filterings.Remove(filtering) 

#Set the new Marking Filter 
vis.As[VisualContent]().Data.Filterings.Add(Document.Data.Markings["Marking (4)"]) 

#Set the new Marking 
#Need code here 

J'ai besoin de définir un nouveau marquage pour la visualisation afin que je puisse ensuite utiliser cela pour une autre visualisation. Plus précisément, je dois mettre cette boîte: enter image description here

MISE À JOUR Je suis en mesure de définir des marques en utilisant ce morceau de code:

vc = vis.As[VisualContent]() 
marking = vc.Data.MarkingReference 
marking.SetSelection(marking.GetSelection(dataTable),dataTable) 

Cela fait marquer les disques que je veux, mais parce qu'il ne fonctionne pas changer le réglage dans la case de marquage, il ne me laissera pas descendre plus loin (filtré au même marquage qu'il est en train de définir).

Répondre

0

Ce script finalement travaillé pour moi:

from Spotfire.Dxp import Data 
from Spotfire.Dxp.Application.Visuals import * 

if Document.Properties['KPIHierLevel'] == '<[SBA_NAME] NEST [MARKET_NAME]>': 
    Document.Properties['KPIHierLevel'] = '<[MARKET_NAME] NEST [BRAND]>' 
    for filtering in vis.As[VisualContent]().Data.Filterings: 
     vis.As[VisualContent]().Data.Filterings.Remove(filtering) 
    vis.As[VisualContent]().Data.Filterings.Add(Document.ActiveMarkingSelectionReference) 
    vis.As[VisualContent]().Data.MarkingReference = (Document.Data.Markings["Marking (7)"]) 
elif Document.Properties['KPIHierLevel'] == '<[MARKET_NAME] NEST [BRAND]>': 
    Document.Properties['KPIHierLevel'] = '<[BRAND] NEST [PRODUCT]>' 
    for filtering in vis.As[VisualContent]().Data.Filterings: 
     vis.As[VisualContent]().Data.Filterings.Remove(filtering) 
    vis.As[VisualContent]().Data.Filterings.Add(Document.ActiveMarkingSelectionReference) 
    vis.As[VisualContent]().Data.MarkingReference = (Document.ActiveMarkingSelectionReference) 

J'ai aussi créé un script de réinitialisation qui est similaire à cela, mais définit le marquage à quelque chose d'autre que le marquage (7).