QlikView - 如何在加载过程中使用 "set" in "edit script"
QlikView - How to use "set" in "edit script" during loading process
我正在尝试加载一个数字为 1 到 12 的字段。但我希望将等效的月份名称加载到 Qlik View 中。就像我希望单元格包含 Jan 而不是 1 而不是 2 我希望它是 Feb 等等,到处都有人建议使用名为 MonthNames 的设置变量。当我将 table 加载到 qlik 视图中时,我看到有 set MonthNames="jan;feb;mar;apr;..' 变量可用于将相应的月份分配给该字段。但我无法找到一个如何使用它的例子。有人能帮忙吗?
我的域名是"Mon"。我不确定如何在编辑脚本的加载语句中使用它。
对于这种情况,您可以使用 Mappng Load 功能。您可以将 Mapping load 视为查找功能。在数据加载期间调用时,对于加载的每个值,映射将尝试在映射 table 中找到匹配项。如果未找到匹配项,它将 return 原始值。
映射 table 不是数据模型的一部分,不需要删除它们
在下面的示例中,映射 table 被称为 Months
,它包含从 1 到 12 的数字,每个数字都有一个字符串值应该 returned .使用接受 2-3 个参数的 ApplyMap
函数调用映射:
- mapping name - 映射的名称table(名称应在引号内)
- 字段名 - 应用映射的字段
- 默认值(可选)- 如果在未找到匹配项时未指定,则原始值为 returned。这可以用这个参数覆盖。例如:
ApplyMap('MyMappingTable', MyField, 'No match found')
脚本:
Months:
Mapping
Load * Inline [
Old, New
1 , Jan
2 , Feb
3 , Mar
4 , Apr
5 , May
6 , Jun
7 , Jul
8 , Aug
9 , Sep
10 , Oct
11 , Nov
12 , Dec
];
Data:
Load
MyFeld, // this will contain the original values
ApplyMap('Months', MyField) as MyField_Months // this will contain the month names values
From
MyData.qvd (qvd)
;
更新:
您可以使用设置变量MonthNames
生成mapping
table。这样做的方法是在 ;
上拆分变量的内容并为每个元素生成一行并为其关联一个 id。 Qlik 有一个很好的函数可以将字符串拆分成多行 - SubField()
SubField()
接受两个参数(和一个可选的)
- 字段名 - 包含字符串值的有效字段名
- 定界符 - 应分割字符串的字符串
- 位置(可选)- 该函数可以拆分字符串和 return 位置 N 上的值。指定此参数将 return 原始字符串中只有一个值
在这种情况下,字符串包含由 ;
- 'Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec'
分隔的月份名称
当使用此字符串调用 SubField()
时,结果 table 将是:
Jan
Feb
Mar
Apr
...
更新的脚本:
Months:
Mapping // comment this row to view the "real" table
// Use SubField function to create N number of rows
// by separating the variable on ';'
// Use RowNo() function to generate and Id (1 ... 12)
// For each row
Load
RowNo() as Id,
SubField(MonthNames_Temp, ';') as MonthNames
;
// Get the content of the MonthNames variable as a string
// and generate one-row table
Load
'$(MonthNames)' as MonthNames_Temp
AutoGenerate(1)
;
我正在尝试加载一个数字为 1 到 12 的字段。但我希望将等效的月份名称加载到 Qlik View 中。就像我希望单元格包含 Jan 而不是 1 而不是 2 我希望它是 Feb 等等,到处都有人建议使用名为 MonthNames 的设置变量。当我将 table 加载到 qlik 视图中时,我看到有 set MonthNames="jan;feb;mar;apr;..' 变量可用于将相应的月份分配给该字段。但我无法找到一个如何使用它的例子。有人能帮忙吗?
我的域名是"Mon"。我不确定如何在编辑脚本的加载语句中使用它。
对于这种情况,您可以使用 Mappng Load 功能。您可以将 Mapping load 视为查找功能。在数据加载期间调用时,对于加载的每个值,映射将尝试在映射 table 中找到匹配项。如果未找到匹配项,它将 return 原始值。
映射 table 不是数据模型的一部分,不需要删除它们
在下面的示例中,映射 table 被称为 Months
,它包含从 1 到 12 的数字,每个数字都有一个字符串值应该 returned .使用接受 2-3 个参数的 ApplyMap
函数调用映射:
- mapping name - 映射的名称table(名称应在引号内)
- 字段名 - 应用映射的字段
- 默认值(可选)- 如果在未找到匹配项时未指定,则原始值为 returned。这可以用这个参数覆盖。例如:
ApplyMap('MyMappingTable', MyField, 'No match found')
脚本:
Months:
Mapping
Load * Inline [
Old, New
1 , Jan
2 , Feb
3 , Mar
4 , Apr
5 , May
6 , Jun
7 , Jul
8 , Aug
9 , Sep
10 , Oct
11 , Nov
12 , Dec
];
Data:
Load
MyFeld, // this will contain the original values
ApplyMap('Months', MyField) as MyField_Months // this will contain the month names values
From
MyData.qvd (qvd)
;
更新:
您可以使用设置变量MonthNames
生成mapping
table。这样做的方法是在 ;
上拆分变量的内容并为每个元素生成一行并为其关联一个 id。 Qlik 有一个很好的函数可以将字符串拆分成多行 - SubField()
SubField()
接受两个参数(和一个可选的)
- 字段名 - 包含字符串值的有效字段名
- 定界符 - 应分割字符串的字符串
- 位置(可选)- 该函数可以拆分字符串和 return 位置 N 上的值。指定此参数将 return 原始字符串中只有一个值
在这种情况下,字符串包含由 ;
- 'Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec'
当使用此字符串调用 SubField()
时,结果 table 将是:
Jan
Feb
Mar
Apr
...
更新的脚本:
Months:
Mapping // comment this row to view the "real" table
// Use SubField function to create N number of rows
// by separating the variable on ';'
// Use RowNo() function to generate and Id (1 ... 12)
// For each row
Load
RowNo() as Id,
SubField(MonthNames_Temp, ';') as MonthNames
;
// Get the content of the MonthNames variable as a string
// and generate one-row table
Load
'$(MonthNames)' as MonthNames_Temp
AutoGenerate(1)
;