2017-08-07 20 views
1

我有以下的python脚本(减少了,但它的其余部分进行类似的行动):IPython的脚本运行在Spotfire中的客户端,不Spotfire中的Web

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

#assign default values for prompts if needed 
if Document.Properties['cannedKPISelected'].isspace(): 
    Document.Properties['cannedKPISelected'] = 'GS' 
if Document.Properties['cannedTimeSelected'].isspace(): 
    Document.Properties['cannedTimeSelected'] = 'Month' 

#determine which type of viz needs displayed based on a flag in the data 
tableName='PrimaryDataTable' 
columnToFetch='displayPercentageFlag' 
activeTable=Document.Data.Tables[tableName] 
rowCount = activeTable.RowCount 
rowsToInclude = IndexSet(rowCount,True) 
cursor1 = DataValueCursor.CreateFormatted(activeTable.Columns[columnToFetch]) 
for row in activeTable.GetRows(rowsToInclude,cursor1): 
    rowIndex = row.Index 
    percentageNeeded = cursor1.CurrentValue 
    break 

#create consumer report 
for page in Document.Pages: 
    for viz in page.Visuals: 
     if str(viz.Id) == 'a7f5b4ec-f545-4d5f-a967-adec4c9fec79': 
      if Document.Properties['coffeeReportSelected'] == 'Brand Category by Market': 
       if Document.Properties['cannedKPISelected'] == 'GS' and Document.Properties['cannedTimeSelected'] == 'Month' and percentageNeeded == 'Y': 
        visualContentObject = viz.As[VisualContent]() 
        visualContentObject.MeasureAxis.Expression = 'Sum([GS Month]) as [GS Mnth]' 
        visualContentObject.RowAxis.Expression = '<[BRAND] as [Brand Category] NEST [MARKET] as [Market]>' 
        visualContentObject.ColumnAxis.Expression = '<[Axis.Default.Names] as [Measure Names]>' 
        visualContentObject.ShowColumnGrandTotal = True 
        visualContentObject.ShowColumnSubtotals = True 
        visualContentObject.ShowRowGrandTotal = False 
        visualContentObject.Title = 'Monthly GS by Brand, Market' 
        visualContentObject.Data.WhereClauseExpression = '[NAME] = "CANADA"' 
        visualContentObject.CellWidth = 125 
        Document.Properties['cannedReportHideRows'] = 'Sum(Abs(SN([GS Month],0)))' 
       elif Document.Properties['cannedKPISelected'] == 'GS' and Document.Properties['cannedTimeSelected'] == 'Quarter' and percentageNeeded == 'Y': 
        visualContentObject = viz.As[VisualContent]() 
        visualContentObject.MeasureAxis.Expression = 'Sum([GS Quarter]) as [GS Qtr]' 
        visualContentObject.RowAxis.Expression = '<[BRAND] as [Brand] NEST [MARKET] as [Market]>' 
        visualContentObject.ColumnAxis.Expression = '<[Axis.Default.Names] as [Measure Names]>' 
        visualContentObject.ShowColumnGrandTotal = True 
        visualContentObject.ShowColumnSubtotals = True 
        visualContentObject.ShowRowGrandTotal = False 
        visualContentObject.Title = 'Quarterly GS by Brand, Market' 
        visualContentObject.Data.WhereClauseExpression = '[NAME] = "CANADA"' 
        visualContentObject.CellWidth = 125 
        Document.Properties['cannedReportHideRows'] = 'Sum(Abs(SN([GS Quarter],0)))' 

等等等等等等。

这个脚本(和其他)在客户端运行得很好。它不在网上运行。网络会说处理,然后说准备好(在左下角),同时什么也不做(没有错误,什么都不做)。我在同一分析中使用的其他几个脚本运行得非常好。

为了安全起见,我知道网上的IPython脚本存在一些限制,但我只是建立一个表。这不能被限制吗? Web服务器日志没有捕获任何不寻常的东西。

我们对的Spotfire 7.6

UPDATE:这似乎是由于这样的:if str(viz.Id) == 'a7f5b4ec-f545-4d5f-a967-adec4c9fec79':。这是因为遗憾的是Web和Client之间的ID不同。了解我的标题更改,关于我可以引用可视化的任何想法在客户端和Web之间保持不变?

回答

1

由于Spotfire根据其是否位于网络播放器或客户端上来更改vis的ID,因此该脚本未按预期工作。我只是将vis添加为参数,而不是依靠脚本去找到正确的vis。当vis的名称改变时,该参数被正确更新,因此它仍然是动态的。

0

你能找出当前视觉上的索引是什么吗?

试着这么做: 替换此行:

if str(viz.Id) == 'a7f5b4ec-f545-4d5f-a967-adec4c9fec79': 

有了:

if viz[0] (or whatever the index is) 

不知道这是你脑子里想的是什么,但我相信这会给你一个办法参考可视化而无需使用ID。