跳到主要内容
转换数据

在该页面上

转换数据

您可以在数据加载编辑器中使用许多不同的技术来转换和操作数据。

数据操作的其中一个优势是,您可以选择从文件中仅加载数据的子集(如某个表格中的几个选定列),以便更高效地处理数据。还可以多次加载数据以将原始数据分隔为多个新的逻辑表格。还可以从多个源加载数据并将其合并到 Qlik Sense

在该主题中,您将使用 Resident load,然后使用 Preceding load 来执行一些基本数据转换。

Resident LOAD

您可以在 LOAD 语句中使用 Resident 源限定符,以便从之前加载的表格加载数据。当您想要在使用 SELECT 语句(没有选项使用 Qlik Sense 函数)加载的数据上执行计算时(例如日期或数值处理),这也很有用。

在该示例中,您将创建名为 Sales_Buckets 的新表格,然后使用 resident load 从 Table1 加载数据。在 Sales_Buckets 表格中,您将创建名为 quantity_threshold 的变量,然后使用 Where 语句以仅加载符合该阈值的数据。

  1. Scripting Tutorial 应用程序中,打开数据加载编辑器
  2. 单击Sales选项卡。
  3. 将以下内容添加至您脚本的末尾:
  4. SET quantity_threshold = 12000;  Sales_Buckets:     LOAD     "Sales Qty" as "High_Quantity",     "Item Description" as "Item",     "Customer Number" as "Customer" Resident Table1 Where ("Sales Qty" > $(quantity_threshold)); 

    您的脚本应如下所示:

    通过脚本加载脚本窗口以创建名为 Sales_Buckets 的新脚本

    通过脚本加载脚本窗口以创建名为 Sales_Buckets 的新脚本。
  5. 单击加载数据
  6. 打开数据模型查看器。 您可以看到自己创建了名为 Sales_Buckets 的新表格,具有根据您指定的字段以及您设置的阈值而加载的数据。
  7. 数据模型查看器中的 Sales_Buckets 表格

    数据模型查看器中的 Sales_Buckets 表格。
  8. 将数据添加至您应用程序中的表格。将 ItemCustomer 作为维度添加。将 High-Quantity 作为在 Count 上聚合然后再次在 Sum 上聚合的度量添加。接下来,通过以下公式将新的列作为度量添加。
  9. = Sum(High_Quantity) / Count(High_Quantity)

    使用公式的新度量

    使用公式的新度量。

    例如,您的表格显示 Customer 10025737 创建了高顶干蘑菇的 4 个大型订单,平均数量达到 14,800。要在字段中对数据进行排序,通过单击完成关闭编辑模式。

    显示已经创建大型订单的客户的表格

    显示已经创建大型订单的客户的表格。
  10. 现在我们已经完成了该示例,注释掉了 quantity_threshold 变量和 Sales_Buckets 表格的脚本。
  11. 脚本的末尾应当如下显示:

    注释掉脚本

    注释掉脚本。

Preceding LOAD

preceding load 可让您执行转变并应用筛选器,从而您可一次加载数据。总的来说,它是一个 LOAD 语句,可从下面的 LOADSELECT 语句加载,而无需指定通常使用的源限定符,如 FromResident。您可以按此方法叠加任意数量的 LOAD 语句。首先将会对底部的语句进行求值,然后再对上面的语句进行求值,以此类推,直至求值到顶部的语句。

如本教程中之前所述,可使用 LOADSELECT 语句将数据加载到 Qlik Sense 中。每一语句都将生成一个内部表格。LOAD 用于从文件或内联表格加载数据,而 SELECT 用于从数据库加载数据。在本教程中您已经使用了来自文件的数据。在本例中,您将使用内联表。但是,值得注意的是,可以在 SELECT 语句上方使用 preceding load 来操作数据。基本原理与您在此所见的使用 LOAD 相同。

此示例与我们在本教程中加载的数据无关。此示例只是用于表明 preceding load 形式的示例。您将在数据加载编辑器中创建名为 Transactions 的内联表。日期解释将在 preceding LOAD 中执行,其中将创建名为 transaction_date 的新字段。该字段是从 sale_date 字段创建。

  1. 新建应用程序并将其命名为 ReformatDate
  2. 打开数据加载编辑器,然后创建一个名为 TransactionData 的新标签。
  3. 添加以下脚本:
  4. Transactions:  Load *, Date(Date#(sale_date,'YYYYMMDD'),'DD/MM/YYYY') as transaction_date; Load * Inline [ transaction_id, sale_date, transaction_amount, transaction_quantity, customer_id, size, color_code  3750, 20180830, 23.56, 2, 2038593, L, Red  3751, 20180907, 556.31, 6, 203521, m, orange  3752, 20180916, 5.75, 1, 5646471, S, blue  3753, 20180922, 125.00, 7, 3036491, l, Black  3754, 20180922, 484.21, 13, 049681, xs, Red  3756, 20180922, 59.18, 2, 2038593, M, Blue  3757, 20180923, 177.42, 21, 203521, XL, Black ];

    您的脚本应如下所示:

    通过 preceding load 加载脚本

    通过 preceding load 加载脚本。
  5. 单击加载数据
  6. 打开数据模型查看器。 选择并展开 Transactions 表格。可以看到,所有字段都是按照 preceding load 语句中 * 指定的方式加载的。创建了名为 transaction_date 的新字段。字段具有重新格式化的日期。
  7. 数据模型查看器中名为 transaction_date 的新字段

    数据模型查看器中名为 transaction_date 的新字段。