我想在 QlikSense 脚本中转换我的数据,其中每列中的数据类似于“��345”,我想删除此 �� 数据并将数据转换为每列中有意义的数据。
如何一次转换所有列,以便一次从所有列中删除 �� 数据?
我认为首先您必须找到隐藏在
�
符号后面的字符编号。为此,您可以使用 ord() 函数。
Ord
函数将从给定的字符返回 uniconde 字符数。例如:Ord('A')
将返回65
。 Ord('B')
将返回66
等
您可以从您的字段中获取第一个字符并确定其编号。比如:
从您的字段中选择单个值。创建一个简单的文本框并使用类似的措施:
Ord( left(MyField, 1) )
一旦识别出角色编号,您就可以返回脚本。
假设我们想要用空字符串替换
A
的所有实例:
// create variable that will hold the replace function
// the $1 is representing the first parameter passed to the function
set vClear = replace($1, chr(65), '');
RawData:
Load
Temp, // keep Temp just as a reference
// Call the variable/function vClear
// on each row that is being loaded
$(vClear(Temp)) as ClearedTemp,
;
Load
'ABCDXYZ' as Temp
AutoGenerate 1
;
应用程序重新加载后,
ClearedTemp
的值将是BCDXYZ
(A
被替换为空字符串)
这种方法可以应用于您想要/需要的许多领域。
附注
�
后面可能隐藏着多个不同的字符。你必须弄清楚是否有多个角色或者总是同一个角色。如果有多个特征,那么您必须扩展 vClear
定义并多次调用 replace
。
P.S.1 如果应该应用该函数的字段太多,那么我们可能可以使用一些自动化来创建所需的脚本。但这将使当前的示例变得复杂,这就是为什么我没有在这个答案中包含这种方法