Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否支持从其他列生成相对应的参数,或规则中新增函数类型,调用函数支持传参实现来求值? #95

Open
kamjin1996 opened this issue Dec 23, 2021 · 2 comments

Comments

@kamjin1996
Copy link

我已经用datafaker生成了很多表的数据,首先非常的感谢作者!感觉很好用,简单,高效,同时也推荐给了其他同事使用
但我在生成某个表时,有以下需求难以实现:
举个例子:
表有字段level,值为枚举【first,second,third】随机一个,
同表的另一字段为is_first_level,tinyint(1)类型,这个列的值是根据上面level字段的值是否为first来确定是true还是false,level是first时,is_first_level为true,考虑了orderEnum的方式,虽然orderEnum某些场景下很好用,也能满足大部分需求,但这种根据列自定义生成其他列的需求用orderEnum工作量还是蛮大的,生成的数据量比较大,写orderEnum就要手动写很多
请问我不用orderEnum该怎么实现这个生成规则?

需求2:
还有个类似的需求,比如id是递增的数字,我有个code值是前缀加id来生成的并且格式化为前面补充0,比如id是1时,则code生成tp_001

虚心请教一下,现有的api是否支持以上的操作?我看文档有个op,我的level字段在第2列,is_first_level在第3列,我在第三列试了op(c2),我虽可取到第二列的值但我却无法根据值判断且转换为true或false填入对应列,这个操作其实感觉就像是三元表达式:op(c2) == first ? true : false,以上有对应的支持计划吗,或者现有的api该如何不使用orderEnum的情况下实现这个操作?再次感谢作者

@gangly
Copy link
Owner

gangly commented Jan 7, 2022

需求1目前只能用order_enum来实现,对于数据量大的话确实比较麻烦;
需求2中可以用metaj参数合成复杂字符串,前面自动填0现在还不能实现;
op参数主要用来实现列之间的四则运算,不过你给出的op(c2) == first ? true : false倒是给了我提示,
试试op(c2=='first'),我这里本地测试可以的

@kamjin1996
Copy link
Author

哇哦,期待,目前我已经用java代码里调用bat脚本,结合代码再做数据前后处理的方式实现需求了,感觉代码结合datafaker库做前后处理也挺好用的,不过肯定还是没有直接脚本省事毕竟要打开idea花时间写代码

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants