跳到主要内容 跳到补充内容

Qlik 脚本处理器

使用 Qlik 脚本创建或转换输入。

通过 Qlik 脚本处理器,您可以直接在文本编辑器中输入 Qlik 脚本以准备数据,或在用作输入时加载数据。它面向更高级的用户,如果您喜欢在操作表格时手动编码某些操作,您可以从整个 Qlik 语法中获益。

使用

  • 要在数据流中使用脚本处理器,您在编辑器中添加的代码必须与传入数据的模式以及在此之前执行的准备操作保持一致。此外,脚本还需要关注某些规则:

    • 脚本中必须包含 resident 语句,以使用输入流中的表。

      resident tablename

      有关详细信息,请参阅加载

    • 您需要附上一份 NoConcatenate 声明。

      NoConcatenate LOAD A,B

      有关详细信息,请参阅 NoConcatenate

    • 为要执行的特定操作添加脚本后,必须在末尾添加一条 drop table 语句,以删除输入表并只保留生成的输出。

      drop table  tablename

      更多信息,请参见下拉表

  • 将处理器用作输入节点时,最多可以有两个输出流,以加载两个不同的表。
  • 使用处理器作为中间节点时,可以有多个输入流和最多两个输出流。
  • 您最多可在一个数据流中使用 50 个 Qlik 脚本处理器。
警告注释为了避免数据流中的错误,请确保脚本处理器生成的表名是唯一的,并且与流中其他处理器生成的表格不同。

属性

配置
属性 配置
脚本

在文本编辑器中输入您的 Qlik 脚本,其中包括以下带有所需语句的占位符。

MyTable:
NoConcatenate Load *
Resident [name of input table];
Drop Table [name of input table];

脚本编辑器上方列出了输入表的名称。它们与连接到处理器的输入端相对应。单击表名以将其直接插入脚本中。

要重命名处理器或编辑其描述,请将鼠标指向属性面板中要更改的名称或描述,然后单击 编辑 编辑图标。

使用脚本编辑器

单击配置面板中的打开编辑器按钮将打开功能强大的脚本编辑器,以帮助您编写 Qlik 脚本。轻松插入表、字段名或函数,打开文档,从其他 .qvf 文件插入脚本,并检查表达式的有效性。

使用脚本编辑器编写 Qlik 脚本

在左侧面板中,您可以查看数据流中当前加载的表和字段,并浏览各种 Qlik 脚本函数。此面板分为三个选项卡:

  • ,其中列出了流中加载的表。将鼠标指向任何表名,然后单击 + 将其直接插入脚本中。

  • 字段,其中列出了流程中该点可用的字段。将鼠标指向任何字段名称,然后单击 + 将其直接插入表达式中。

  • 函数,您可以在此浏览 Qlik 函数。您可以使用搜索字段查找特定函数,也可以使用函数类别下拉列表对其进行筛选。

    将鼠标指向任何函数,然后单击 + 将其直接插入表达式中。

  • 如果选择说明指南切换按钮,点击函数时将显示简短说明和文档链接。

在顶部面板中,您可以启用或禁用三个工具来帮助和指导您编写脚本,使用快捷方式从其他文件插入脚本,以及撤消和重做按钮来修复潜在的错误。

  • 搜索和替换,自动查找特定值,并在需要时进行替换。

    表达式编辑器的搜索和替换功能

  • 帮助模式,将您在脚本中编写的任何函数转换为可点击的链接,这些链接将带您进入文档。

    在脚本编辑器中激活帮助模式

  • 自动完成,在您键入时显示建议,并附有简短的描述和函数示例。

    使用自动补全来编写脚本函数

  • 包含脚本,以打开您的目录并浏览以 .qvf 文件形式提供给您的脚本,然后插入它们。

    从 qvf 文件插入脚本

底部面板描述了脚本中的任何潜在错误,例如字段名不正确或表达式无效。

显示脚本中错误的验证工具

当状态面板显示绿色确定时,您的表达式有效。单击确认以将此表达式用于您的 Qlik 脚本处理器并返回数据流编辑器。然后,您可以验证处理器配置。

实例

  • 将具有相同模式的多个表加载到流的一个输入表中。此示例使用了目录中的两个 .txt 文件,其中字段相同,但内容不同:此外,此表达式将添加一个字段来跟踪数据来自哪个表,并生成一个整数作为 id 号:

    [MyTable_1]:
    LOAD
    'table1' as source_table,
    [firstname],
    [lastname],
    [nationality]
    FROM [lib://DataFiles/MyTable_1.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq);
    
    [MyTable_2]:
    CONCATENATE (MyTable_1)
    LOAD
    'table2' as source_table,
    [firstname],
    [lastname],
    [nationality]
    FROM [lib://DataFiles/MyTable_2.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq);
    
    [NewTable]:
    LOAD
    recno() as id,
    * RESIDENT MyTable_1;
    
    drop table MyTable_1;

    更多信息,请参见串联

  • 创建一个内联数据表,将可编辑的数据作为数据流的输入:

    MyTable:
    Load * Inline [
    Country, Year, Sales
    Argentina, 2014, 66295.03
    Argentina, 2015, 140037.89
    Austria, 2014, 54166.09
    Austria, 205,182739.87
    ];
    

    更多信息,请参阅使用内联加载来加载数据

  • 有关脚本表达式的更多示例,请参阅正则表达式脚本与图表函数

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!