QlikView - 从远程服务器加载特定文件

时间:2014-08-07 07:32:39

标签: csv qlikview

我试图解决这个问题很长一段时间了,但现在我得请求你的帮助。

我的本​​地PC上有一个QVD文件,例如: server001_CPU.qvd和远程服务器我有共享文件夹,包含许多类型的文件。还有一些名为server001_CPU_YYYYMMDD.csv(例如server001_CPU_20140806.csv)的文件,它们每天生成并且具有与本地qvd文件相同的结构。他们有列DATE。我需要的是(在加载脚本中)检查本地文件中的最后一个DATE并从那天开始加载远程文件到今天然后将它连接在一起。像这样:

CPU:
LOAD * FROM server001_CPU.qvd

LET vMAX = Max(DATE) FROM CPU

DO WHILE vMAX <= Today()

  CPU:
  LOAD * FROM serverpath/server001_CPU_$(vMAX).csv

LOOP

我真的很努力,但我是QV的新手,对我来说它有着奇怪的逻辑。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下脚本代码段,该代码段应该可以满足您的需求。

这样做首先打开现有数据集(在QVD中),然后找到最大日期并将其存储在表MaxCPUDate中。然后将此最大值读入变量并删除表。

这&#34; Max Date&#34;然后从今天的日期中减去值,以确定要加载单个文件的循环次数。循环变量被添加到&#34; Max Date&#34;用于创建要加载的文件名的值。

CPU:
LOAD 
    *
FROM server001_CPU.qvd (qvd);

MaxCPUDate:
LOAD DISTINCT
    max(DATE) as MaxDate
RESIDENT CPU;

LET vMaxCPUDate = peek('MaxDate',-1,'MaxCPUDate');

DROP TABLE MaxCPUDate;    

FOR vFileNum = 0 TO (num(Today()) - $(vMaxCPUDate))

    LET Filename ='serverpath/server001_CPU_' & date($(vMaxCPUDate) + $(vFileNum),'YYYYMMDD') & '.csv';

    CONCATENATE (CPU)
    LOAD
        *
    FROM $(Filename) (txt, codepage is 1252, embedded labels, delimiter is ',', msq);

NEXT