了解第一段 envision 脚本

了解第一段 envision 脚本


首页 » 资源 » 此处

本教程将为您详细介绍一个附带简短 Envision 脚本的仪表板。使用本教程无需您掌握 Envision 或一般编程知识。通过该快速教程,您将更熟悉与 Envision 相关的重要概念。

快速入门

如果您还没有 Lokad 账户,需要开设 Lokad 账户,该账户提供 30 天免费试用。有了 Lokad 账户后,需要加载 Envision 样本数据集。该数据集表示某个小型虚拟零售商的历史数据,在本教程中,我们将使用该数据。

在您的账户中成功导入样本文件后,点击“项目”选项卡。进入项目页面后,点击页面底部的创建 Envision 脚本链接并选择一个名称。随即会出现一个近乎空白的新页面。这个视图被称为“代码编辑器”,从中可编辑 Envision 脚本。剪切并粘贴下面的代码,然后点击右侧的开始运行绿色按钮。
/// This is my first sample script!
read "/sample/Lokad_Items.tsv"
read "/sample/Lokad_Orders.tsv" as Orders
read "/sample/Lokad_PurchaseOrders.tsv" as PurchaseOrders

oend := max(Orders.Date)

// Top indicators about the dataset
show label "This is a sample script" a1f1 tomato
show table "Product Lines" a2b2 with sum(1)
show table "Order Lines" c2d2 with sum(Orders.1)
show table "Purchase Order Lines" e2f2 with sum(PurchaseOrders.1)

// Two linecharts
Week.sold := sum(Orders.NetAmount)
Week.purchased := sum(PurchaseOrders.NetAmount)
when date >= monday(oend) - 52 * 7 & date < monday(oend) 
show linechart "Purchased and sold{$}" a3f4 tomato with
Week.sold as "Sold"
Week.purchased as "Purchased"

// Worst rotating inventory
UnitSold = sum(Orders.Quantity) when date > oend - 365
Turns = UnitSold / max(1, StockOnHand + StockOnOrder)
show table "Slowest inventory turns" a5f8 with
Id
Name
Turns
UnitSold
order by Turns
完成脚本执行后,开始运行按钮 下方 会显示一个绿色的新行。绿色 表示操作成功完成。点击此行,将带您进入新生成的仪表板。点击仪表板上方的顶部按钮编辑脚本,将返回代码编辑器。现在您应当了解了如何在仪表板视图和代码编辑器视图之间来回导航。

Image

了解脚本含义

此时,根据您对编程原理的熟悉程度,您可能还是不明白上面的脚本。我们来逐行查看这段脚本,了解脚本的含义。第 1 行以 // 开头,所有此类的行皆为备注。这些行在脚本逻辑中不发挥任何作用,其目的仅在于提供可读性。第一行也可以有三条划线 /// 。有了这三条划线,这一行便成为项目副标题,会显示在项目列表视图中的项目标题下面。

第 2 至 4 行有三个 read 语句,这些语句用于加载创建仪表板所需的数据。其中每个语句上载一个文件。

第 6 行定义了一个变量,用于存储最新订购日期。定义此变量很有用,因为会在这段脚本中的其他地方多次用到此日期。

在第 8 至 12 行,前两行为仪表板,总共包含 4 个磁贴。最上面的磁贴仅为一个标签,下面的三个磁贴为简单的 1x1 表,这些表只包含一个指标。从下文可以看到,这些表也可用于显示实际的列表数据,而不仅仅一次只显示一个值。

在第 4 至 20 行,我们定义了线形图,它显示在三个小磁贴的正下方。第 15 行和第 16 行是计算每周销售和采购总计,第 17 行则是过滤数据,只保留过去 52 周的数据。这个逻辑稍显复杂,但可以归结为一个开始条件和一个结束条件。第 18 行的开头为 2 个空格。这些空格非常重要:when 定义了一个块,所有内容皆在此块的 里面,也即所有包含 2 个多余空格的行都会相应进行过滤。最后,在第 18 至 20 行定义了线形图。 在第 18 行,我们设置了此图的标题、颜色和位置。在第 19 和 20 行,定义了显示的两条曲线。请注意,这两行的前面都有 4 个空格:when 块需要 2个空格,show 块需要 2 个额外的空格。

第 22 至 30 行是关于线形图下面的表。此表显示在库存中轮转最少的产品。第 23 行是计算每款产品在过去 365 天中的销售件数。第 24 行则是计算库存周转,即库存在一年内的轮转次数。分母中的 max() 函数,其作用是在碰巧库存为零时避免与零相除。在第 5 至 30 行中的表显示了语句本身。第 25 行设置了标题和标题位置。从第 26 到 29 行,定义了表的所有列:从左至右,一列一行。第 30 行使用了 order by 选项来将周转较少的产品置于表的顶部。

结语

除非您已熟悉编程,否则本教程汇中的信息量可能会让你感到有点吃力。但你可以看到,在短短 30 行的代码中,就包罗了一个涵盖 KPI 的有效仪表板、部分数据可视化,以及需要予以注意以避免其扰乱库存,因而需要优先采取措施的产品列表。通过这区区 30 行脚本,我们便已收获良多。

一般说来,构成计算表达式所采用的语法与 Excel 中的极为相似。例如,总库存值应考量现有库存和订单库存,其表达式可以是 sum(PurchasePrice * (StockOnHand + StockOnOrder))。你可以用该样本进行试验,修改其中的部分脚本,马上就可以看到它对新生成的仪表板的相应影响。