Qlik Sense 循环2 For Each...Next

本文介绍如何使用ForEach循环在Qlik Sense中处理数据,包括按字段拆分表导出qvd文件,以及合并Excel文件。通过FieldValueList函数实现表拆分,展示了列表循环和文件操作的实践应用。
摘要由CSDN通过智能技术生成

For Each...Next是一种对‘列表’元素逐个处理的循环方式。列表元素可以为逗号分隔。
其基本语法格式为:

For Each var In list
    循环体
Next;

我们还是以上面的例子进行处理

For Each m in 1,2,3,4,5,6,7,8,9,10,11,12
    TMP:
    Load *
    Resident T
    WHERE Month(date) = $(m);
    // 把数据导出到qvd文件。导出时如果文件夹不存在,会自动创建,无需额外创建。
    Store TMP Into [lib://FistDemo/$(m).qvd](qvd);
    Drop Table TMP;
Next;

当然,该语法中的list也可以通过其他方式获取。如下两个示例

示例1:假设我们有表T如下,我们现在需要将该表按字段gp进行拆分,gp中的每个元素输出一个qvd文件,其中表T中gp字段的元素个数不确定。

date

gp

value

2021/4/28

g1

562

2021/4/29

g1

235

2021/4/30

g3

374

2021/5/1

g2

740

2021/5/2

g2

914

...

...

...

这里需要首先了解一个函数FieldValueList,该函数可以获取指定字段中的去重元素。

For Each g In FieldValueList('gp')
    TMP:
    Load *
    Resident T
    WHERE gp = $(g);
    // 把数据导出到qvd文件。导出时如果文件夹不存在,会自动创建,无需额外创建。
    Store TMP Into [lib://FistDemo/$(g).qvd](qvd);
    Drop Table TMP;
Next;

示例2:合并目录C:\QlikSense下的所有Excel(后缀名为.xlsx)文件。

For Each FileIn filelist('C:\QlikSense\*.xlsx')
    T:
    Load *
    ,'$(File)' as FileName
    ,FileSize('$(File)') as FileSize
    ,FileTime('$(File)') as FileTimeFROM [$(File)]
	(ooxml, embedded labels, table is Sheet1);
Next;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值