我有一个csv字符串输入
string_in="country,100,color"
任何人都可以建议我如何在spotfire中使用ironpython脚本将此输入(string_in)附加到已存在的数据表可视化。
谢谢。
答案 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指向文件而不是内存流内容。取决于您的输入类型。
如果您有任何疑问,请与我们联系。我试图评论重要部分,但如果需要,可以进一步解释具体功能。
编辑:在我添加记录几次
之后,请查看下面的屏幕截图