在 Spotfire 中使用脚本创建数据透视表

问题描述 投票:0回答:2

我一直在努力让数据透视脚本正常工作。  我的问题是准确识别类别、值和标识列。

我认为我的身份栏很好。  我希望类别(列标题)是 SrcTable 中“类描述”中的唯一值。  我希望每个类别列中的值为 Count( CLASS_DESCRIPTION )。  因此,如果对于一组标识列,有 4 个类描述 =“403A”的实例,我想要一个标题为“403A”且值为 4 的列。

请参阅下面我当前的脚本。  我评论了我遇到问题的部分。

from Spotfire.Dxp.Data import DataFlowBuilder, DataColumnSignature, DataType, DataSourcePromptMode
from Spotfire.Dxp.Data.Transformations import PivotTransformation
from Spotfire.Dxp.Data.Transformations import ColumnAggregation
from System.Collections.Generic import List
from Spotfire.Dxp.Data.Import import DataTableDataSource

SrcTable=Document.Data.Tables["Raw Data"]
ds=DataTableDataSource(SrcTable)
dfb=DataFlowBuilder(ds,Application.ImportContext)
pt=PivotTransformation()
IdentityCols=[]
IdentityCols.append(DataColumnSignature(SrcTable.Columns["LAYER"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["DMS DEVICE"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["SCAN DATE TIME"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["LOT"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["WAFER ID"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["SLOT ID"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["SCAN TOOL"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["TOTAL DEFECTS"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["TOTAL DEFECTS CLASSIFIED"]))
IdentityCols.append(DataColumnSignature(SrcTable.Columns["TOTAL DIE WITH DEFECTS"]))



# HERE'S WHERE MY PROBLEMS ARE STARTING
CategoryCols=[]
CategoryCols.append(DataColumnSignature(SrcTable.Columns["CLASS DESCRIPTION"]))

# IN THIS SECTION, I KEEP GETTING AN ERROR "expected IDataColumn, got ColumnAggregation"
# AT THE LIST2.ADD LINE
list2 = List[ColumnAggregation]()
list2.Clear()
col = SrcTable.Columns['CLASS DESCRIPTION']
colAg = ColumnAggregation(DataColumnSignature(col),'Count')
list2.Add(DataColumnSignature(colAg))
pt.ValueColumns = list2


pt.IdentityColumns=List[DataColumnSignature](IdentityCols)
pt.CategoryColumns=List[DataColumnSignature](CategoryCols)
dfb.AddTransformation(pt)
flow=dfb.Build()
Document.Data.Tables["Wafer Total"].ReplaceData(flow)

感谢您的帮助!

ironpython spotfire
2个回答
0
投票

您只需添加 colAg,而不是将其添加为 DataColumnSignature:

list2.Add(colAg)

希望这有帮助,


0
投票

如何将聚合名称更改为 %C(例如,将 Count(ColumnName) 更改为列名称)

© www.soinside.com 2019 - 2024. All rights reserved.