在数据分析工具QLikView中运行Python脚本

时间:2017-11-01 13:23:21

标签: python qlikview

现在我正在学习分析BI工具 QLikView 中的数据。我尝试在执行QLikView脚本时运行Python脚本。

调用Python脚本的QLikView 脚本的一部分:

General error
EXECUTE python3 BerekenBezetting.py 

Directory

执行脚本时,我收到错误

log

在我的QLikView 2017-11-01 14:16:02 0303 STORE DatumRange INTO [C:\Users\masc\Desktop\Data-analyse voor U-Center in QLikView\Zelfgemaakte dummy dataset U-Center\Bezetting berekenen in Python\NumDateRange.csv] (txt) 2017-11-01 14:16:02 0304 STORE BeginEindVerblijf INTO [C:\Users\masc\Desktop\Data-analyse voor U-Center in QLikView\Zelfgemaakte dummy dataset U-Center\Bezetting berekenen in Python\VerblijfStart_VerblijfEind.csv] (txt) 2017-11-01 14:16:02 0306 DROP Table DatumRange 2017-11-01 14:16:02 0307 DROP Table BeginEindVerblijf 2017-11-01 14:16:02 0309 EXECUTE python3 BerekenBezetting.py 2017-11-01 14:16:02 0310 2017-11-01 14:16:02 0311 Directory 2017-11-01 14:16:02 Error: 2017-11-01 14:16:09 Execution Failed 2017-11-01 14:16:09 Execution finished. 文件中,我收到错误:

.CSV

如果我在Python IDLE中运行我的Python脚本,它可以正常工作,并创建一个NumDateRangeArray = [] # 1D array met alle numDate tussen de eerste en laatste datum VerblijfStart_VerblijfEindArray = [] # 2D array waarin elke begin en einddatum opgeslagen wordt bezetting = [] # 2D array waarin elke numDate in opgeslagen is tesamen met het aantal patiënt dat aanwezig is per dag def main(): bestandenInladen() bezettingBerekenen() maakCSVBestand() def bestandenInladen(): NumDateRangeFile = open('NumDateRange.csv' ,'r') VerblijfStart_VerblijfEindFile = open('VerblijfStart_VerblijfEind.csv', 'r') beginEind = [] begin = '' eind = '' for date in NumDateRangeFile: if date.startswith(tuple(str(i) for i in range(10))): NumDateRangeArray.append(int(date.strip('\n'))) # verwijder de eerste niet nummerieke waarde for verblijf in VerblijfStart_VerblijfEindFile: # maak 2D array aan met begin en eind verblijf per patiënt beginEind = (verblijf.strip('\n').split(',')) if beginEind[0].startswith(tuple(str(i) for i in range(10))): begin = int(beginEind[0]) eind = int(beginEind[1]) beginEind = [] # subarray met een begin en eindverblijf in NumDate formaat beginEind.append(begin) beginEind.append(eind) VerblijfStart_VerblijfEindArray.append(beginEind) NumDateRangeFile.close() VerblijfStart_VerblijfEindFile.close() #print (NumDateRangeArray) #print #print (VerblijfStart_VerblijfEindArray) def bezettingBerekenen(): aantalPatiëntenAanwezig = 0 numDate = 0 numDateAndAanwezigArray = [] # subarray met hoeveel patiënten er aanwezig zijn per datum for numDate in NumDateRangeArray: for verblijf in VerblijfStart_VerblijfEindArray: if numDate >= verblijf[0] and numDate <= verblijf[1]: aantalPatiëntenAanwezig += 1 numDateAndAanwezigArray.append(numDate) numDateAndAanwezigArray.append(aantalPatiëntenAanwezig) bezetting.append(numDateAndAanwezigArray) numDateAndAanwezigArray = [] aantalPatiëntenAanwezig = 0 #print (bezetting) def maakCSVBestand(): import csv delimiter = ',' csvfile = open('Bezetting.csv', 'w') csvfile.write('DatumNum' + delimiter + 'AantalPatiënten' + '\n') for datum in bezetting: csvfile.write(str(datum[0]) + delimiter + str(datum[1]) + '\n') csvfile.close() main() 文件,在我的Python脚本执行后,需要在QLikView中导入。

我的Python脚本是:

SegmentControl

这里出了什么问题,因为错误信息没有给我任何信息?

2 个答案:

答案 0 :(得分:2)

您需要包含python.exe的完整路径。

EXECUTE C:\Python27\python.exe c:\Users\User123\Desktop\test.py;

还应检查Script (Allow Database Write and Execute Statement)中的User Preferences -> Security复选框

enter image description here

请记住此设置位于User Preferences。这意味着它只会为您启用。如果您与其他人共享该文件,他们将无法执行外部文件,他们将启用相同的复选框

答案 1 :(得分:1)

感谢Stefan,我找到了解决方案,命令:

EXECUTE C:\\Users\\masc\\AppData\\Local\\Programs\\Python\\Python36\\python "C:\\Users\\masc\\Desktop\\Data-analyse voor U-Center in QLikView\\Zelfgemaakte dummy dataset U-Center\\Bezetting berekenen in Python\\BerekenBezetting.py";

正常运作。