spotfire ironpython:将新行追加到数据表中

时间:2015-06-01 14:11:52

标签: ironpython spotfire

我有一个csv字符串输入
string_in="country,100,color"
任何人都可以建议我如何在spotfire中使用ironpython脚本将此输入(string_in)附加到已存在的数据表可视化。
谢谢。

1 个答案:

答案 0 :(得分:5)

您想要提供一些不同的功能,通过脚本来解决这个问题。我在下面有我的脚本,但总体而言,您要做的是将输入设置为数据源,然后将该数据源中的行添加到现有数据源中。我从TIBCO的this spotfire教程中借了很多钱,并根据需要对其进行了修改,以便将我们带到您想去的地方。结果可能会有一些超额进口。

我使用datTab作为脚本的输入参数作为我们要添加行的数据表。

from Spotfire.Dxp.Data import AddRowsSettings
import System
from System import DateTime
from System.IO import StringReader, StreamReader, StreamWriter, MemoryStream, SeekOrigin
from Spotfire.Dxp.Data import DataType, DataTableSaveSettings
from Spotfire.Dxp.Data.Import import TextFileDataSource, TextDataReaderSettings

#First we need to create your data with some columns. 
#Here I have a comma separated miniature table built up with 
#a commented option for your variable itself. \r\n used for newline
textData = "name,values,category\r\ncountry,100,color\r\n" 
#textData = "col1,col2,col3\r\n" + string_in + "\r\n"

#Memory Stream stuff. Simply just writing our variable 
#into a place we can access to make a data source
stream = MemoryStream()
writer = StreamWriter(stream)
writer.Write(textData)
writer.Flush()
stream.Seek(0, SeekOrigin.Begin)

#you need settings to tell the system what stuff you're importing.
#here we define it is comma separated and what data types our columns are.
readerSettings = TextDataReaderSettings()
readerSettings.Separator = ","
readerSettings.AddColumnNameRow(0)
readerSettings.SetDataType(0, DataType.String)
readerSettings.SetDataType(1, DataType.Integer)
readerSettings.SetDataType(2, DataType.String)
textDataSource = TextFileDataSource(stream,readerSettings)

#We create some settings here automatically having the system match
#column names for us between the data table and our data source.
settings = AddRowsSettings(datTab,textDataSource)
#And finally we add the rows from our datasource with our settings.
datTab.AddRows(textDataSource,settings)

当然,您可以使用更长的输入变量使这更复杂,循环浏览以添加多行等等。您也可以使用URL指向文件而不是内存流内容。取决于您的输入类型。

如果您有任何疑问,请与我们联系。我试图评论重要部分,但如果需要,可以进一步解释具体功能。

编辑:在我添加记录几次screenshot

之后,请查看下面的屏幕截图