我有一个庞大的CSV文件,第2列是x数据,第3列是y数据。每个CSV文件都是不同的时间戳。每个文件中的x数据略有不同,但是行数是恒定的。我很高兴假设x数据实际上是相同的。
我说服Tableau是一个很好的界面,可以让我进行一些可视化并愉快地安装tabpy和“瞧”,我可以从Tableau调用python ...除非...要返回一个数组,我将需要返回一个字符串,每个时间戳带有逗号分隔的值,然后是每个x轴的字符串之一,然后....嗯,听起来不正确。
我试图告诉Tableau将它们全部打开,我稍后再加入,但是在处理30分钟后放弃了。
那你觉得呢?我完全不可知。安装SQL Server并创建数据库?创建一个大的CSV文件,该文件的每一列都带有时间戳?谷歌? JSON?
或者Tableau中可能有一些巧妙的方法来遍历CSV文件?
答案 0 :(得分:1)
我建议在Tableau之外进行任何数据准备。既然您似乎熟悉Python,请尝试使用Pandas将所有csv文件组合为一个数据帧,然后输出到数据库或单个csv。然后连接到该单一来源。
答案 1 :(得分:0)
如果使用Windows,则可以将所有csv文件合并到一个csv中,然后将其导入到Tableau中。当然,这假定您的所有csv文件都具有相同的数据结构。
cd
命令)copy *.csv combined-file.csv
。组合文件.csv可以是您想要的任何名称。答案 2 :(得分:0)
这是我昨晚尝试过的。速度极快,以后任何CSV都会自动添加到底部。谢谢大家的建议。
#
#
import os, csv
from tableausdk import *
from tableausdk.HyperExtract import *
basepath = "C:\Users\Admin\Desktop\242RawFiles"
fpattern = "Well_242"
tableau_filename = "BigData.hyper"
ExtractAPI.initialize()
extract = Extract( tableau_filename )
if ( not extract.hasTable( 'Extract' ) ):
schema = TableDefinition()
schema.setDefaultCollation( Collation.EN_GB )
schema.addColumn( 'Datafile', Type.CHAR_STRING )
schema.addColumn( 'Solenoid', Type.DOUBLE )
schema.addColumn( 'Data', Type.DOUBLE )
table = extract.addTable( 'Extract', schema )
if ( table == None ):
print("Error occurred while creating the table:\nExiting now\n.")
exit( -1 )
else:
table = extract.openTable( 'Extract' )
if ( table == None ):
print("Error occurred while opening the table:\nExiting now\n.")
exit( -1 )
schema = table.getTableDefinition()
row = Row( schema )
for filename in os.listdir(basepath):
if (filename.endswith(".csv") and fpattern in filename ):
with open(basepath+"\\" + filename) as csvfile:
readCSV = csv.reader(csvfile,delimiter=",")
readCSV.next()
for datarow in readCSV:
row.setCharString( 0, filename[-17:-4] ) #only the tail
row.setDouble( 1, float(datarow[2]) )
row.setDouble( 2, float(datarow[3]) )
table.insert( row )
# Flush the Extract to Disk
extract.close()
# Close the Tableau Extract API
ExtractAPI.cleanup()