sql语句需要加分号吗_SQL一秒变命令,分析师都爱哭了

44f648df8395c9fd9043b7d1110a69d4.png

一般而言,分析师交付的自己工作成果的方式有:

  • 原生SQL或者数仓表
  • 报表
  • 邮件(excel附件以及html table等)
  • PPT(分析报告)
  • Word/Wiki(分析文档说明)

这五种应该是比较普及的。如果分析师所在公司数据平台比较成熟,也可以直接:

  • 表单交付
  • API交付
  • 文件交付(比excel,csv等的下载链接)

简单解释下,表单交付是指将SQL语句转化为表单。在MLSQL里其实非常容易做到这点,基本不会遇到任何困难。表单交付是一个极为优秀的交付方式,用户得到不再是数据,而是一段计算逻辑,但用户看到的交互形态是表单,而且用户有一定的自由度。这个是我非常推荐的一种交付方式。

API交互顾名思义就是交付一个接口。文件交付则是在数据平台可自动生成数据的现在链接地址。

然鹅,今天我们会提供一个全新的交付方式,当当当,全新闪亮登场(:

命令

该功能为MLSQL原生支持。

Hello World示例

我们有一条SQL语句如下:

select "hello world" as value as output;

执行后的结果如下:

37ee4bb2d780c1f6b039f70a28ccd241.png

虽然简单,但毕竟还是标准的SQL语句,用户需要学习。所以能不能搞简单点? 把这条SQL简化成一条命令? 答案是阔以:

set hello='''

select "hello world" as value as output

''';

!hello;

设置一个变量,然后把SQL语句放到这个变量里面。注意最后一句不需要加分号。

接着就可以使用! 执行这个变量。

最后输出结果:

67bba0bab191fe6b771833e75c9daaa6.png

如果仅仅是这样静态执行,没啥意思。因为用户没有交互,只能傻傻的执行下这个命令。如果用户想打印出 hello,william呢? 没问题,MLSQL支持占位符对应的命令行。我们稍稍修改下前面的语句:

set hello='''

select "hello {}" as value as output

''';

!hello william;

其中,SQL语句中的{}为占位符,MLSQL会将 !hello 后面的参数按位置放进去,结果如下:

79aa050443f06a76af3f43d4690edba1.png

乌拉,现在,我们成功提供了一个!hello 命令,并且用户可以传递参数改变我们的SQL了。

如何交付

分析师可以将自己的hello命令放到一个单独的目录下,下图是我设计的目录:

09f2317d1d1a8926c32cb9c1ad5d9d81.png

其中hello.mlsql的内容如下:

set hello='''

select "hello {}" as value as output

''';

用户需要使用时,只要知道你的项目路径名即可,比如main.mlsql想要用你的hello命令,这样就可以:

include command_demo.`commands.hello.mlsql`;

!hello william;

使用场景介绍

大家看了hello world,可能会觉得这有啥用。本质上命令交付和表单交互是一致的,都是交付计算逻辑,但用户使用上会更简单。表单肯定是最简单的,但是命令对于用户门槛也很低。

假设我有一批数据(可能是数仓也可能是任何其他的数据源),我们希望提供这么一个功能,根据邮箱找到用户的完整记录。这个时候我们就可以封装一个命令叫findUserByEmail

set findUserByEmail='''

load hive.`db.users` as users;

select * from users where email="{}" as output

''';

!findUserByEmail "a@qq.com";

用户就可以自己使用这个命令去查找了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值