文章
· 八月 28, 2023 阅读大约需 2 分钟

使用Populate Utility 生成数据

大家好,由于我目前在做一个数据分析的demo,所以需要在IRIS Data platform存储百万行数据供我测试。因此使用Populate Utility 来自动生成我需要的数据。

在这篇文章中,我将会给大家分享我使用 Populate utility 包括POPSPEC parameter的心得和经验。

1.创建两个persistent class , popPatient用于存储病人信息, popSign用于存储收集到的对应病人的生命信息。在定义persistent class时需要在后面引用(%Persistent, %Populate)以支持调用Populate Utility工具.

2.1 为了使我们生成出来的数据更贴合正常的情况,我们不能取一个超出常识的值比如心跳1000次一分钟。所以我使用(MAXVAL MINVAL)来限制了生成数据的区间。

popPatient 如图所示我限制了生成病人年龄的取值范围

popSign 限制了心跳的区间

2.2 如果我们需要使用自定义的自动生成方法,这时我们需要使用 POPSPEC 来定义生成的    内容,例如 我们有预定义的method,可以直接引用并生成美国电话号码,但是我想生成一个符合澳大利亚电话号码格式的值。并且在另外一张表中(popSign)记录收集到的心率的时间戳,我们可以使用$H 的方法来收集时间戳。或者在别的生成场景我可以创建一个List,把我想生成的所有可选内容都放在这个List中。以上都需要使用 POPSPEC 来自定义生成的内容。

在本例中,我编写了两个简单的类方法来预定义电话号码格式并拾取当前时间戳作为心率收集时间。然后将POPSPEC参数添加到相关属性中

3. 执行Populate 方法并且开始生成数据

只需在IRIS terminal中输入以下命令即可开始自动生成基于我们事先定义好的数据,如图下所示把括号里面的数字替换为需要生成的行数。

do ##class(Demo.popPatient).Populate(<number>)
do ##class(Demo.popSign).Populate(<number>)

或者你可以把这两行执行命令写到一个脚本中如下图所示,然后执行

do ##class(Demo.RunPopulate). StartPop ('times for patient', times for signs')

4.下图是一个生成 10 名患者和 50 个收集到的心率信号的示例

讨论 (0)1
登录或注册以继续