产品和运营如何利用MLSQL完成excel处理

概览

MLSQL Console 是一款集数据研发,数据分析,机器学习等于一体Web产品。他的目标是让产品,运营,分析师,研发,算法等都有一个统一的数据工作台。这篇文章重点面向产品和运营,在该文章中,他们会学习到如何在该平台上操作excel,关联多个excel,同时将结果进行图表化。

工作区介绍

image.png
image.png

快捷菜单区可以自动帮我们生成MLSQL语句,一般而言,用户只需要自己能够手动写一些select 语句即可。

该文章可在try.mlsql.tech 体验

image.png

登录账号:

demo@gmail.com
123456

待处理数据描述

有两个excel文件:

image.png

内容分别如下:

image.png
image.png

第一个excel有每天每个科室的接待病人的数量。第二个excel有主任和对应的邮箱。

分析任务列表

现在我们的目标是:

  1. 绘制每个科室每天接收到病人的分布图,从而方便查看两个科室的就诊人数的分布情况。
  2. 找到日均就诊病人最多的那个医生的邮箱
  3. 将我们的分析结果保存成新的excel,并且下载到自己电脑。

任务一

我们大致会分成四个步骤:

  1. 将excel文档上传,上传完成后下载到自己的工作区得到操作路径
  2. 加载excel文件,然后给他们取表名
  3. 使用SQL对这些excel进行数据操作
  4. 使用SQL生成图标

下面我们看下具体步骤:

Step1:上传文件(在try.mlsql.tech可略过)

打开操作界面的 Tools/Dashboard,然后拖拽excel-example(目录里包含了两个示例excel)到上传区进行上传操作:

image.png

上传成功后,即可在/tmp/upload目录查看到。你也可以通过如下指令确认:

!hdfs -ls /tmp/upload;

Step2: 加载Excel并且查看

接着我们要加载我们的excel,把它们转化为SQL能操作的表。拖拽 Load data到编辑区:

image.png

填写路径以及表名。表名随意,只要你自己记得就行。点击Ok,那么就能生成对应的语句了。
同理完成另外一个脚本的处理。

这个时候你已经可以通过表名来查看内容了:

image.png

excel里的内容能够被正确的展示。

Step3: 对数据做预处理

现在我们开始用SQL绘图,我们需要的是折线图,横坐标是date, 纵坐标是patientNum两条曲线,分别是眼科和皮肤科。眼科对应的patientNum我们取名叫y1,皮肤科对应的patientNum叫y2。为了方便,我们先把把皮肤科的都过滤出来,然后y1设置为0,y2设置为实际的病人数,
同理眼科,然后把这些数据放到一起,最后的SQL大致如下:

select date  as x, 0 as y1, patientNum as y2 from triagePatient where triage="皮肤科"
union all
select date  as x, patientNum as y1, 0 as y2 from triagePatient where triage="眼科" 
as tempTable;

Step4: 生成图表并分析

select x,sum(y1) as `眼科`,sum(y2) as `皮肤科`, 
-- 告诉系统需要生成图表
"line" as dash
from tempTable where x is not null group by x order by x asc 
as finalTable;

为了展示出图,横坐标名字一定要为x,然后通过dash参数告诉系统使用什么图做展示。这里是折线图,写line就好。最后的SQL大概是如下的:

image.png

我们点击运行,运行的结果如下:

image.png

点击 Tools/Dashboard 查看图标:

image.png

可以看到 两者差异还是非常大的,而且皮肤科还有数据缺失。

image.png

任务二

因为我们已经做完了文件上传和加载excel文件等,所以任务二里,我们只要做数据预处理和生成图标即可。

Step1: 数据预处理

那么现在,第一个任务已经做好了,我们接着做第二任务,第二个任务核心就是要关联两张表,
这可以用Join语法:

select tp.*,me.email from triagePatient as tp  left join masterEmail as me on tp.master==me.master
as triagePatientWithEmail;

Step2: 生成图表并做分析

这样我们得到了一张新表,该表有email字段了。接着我们根据用户进行聚合:

select first(email) as x, 
avg(patientNum) as patientEveryDay
"bar" as dash
from triagePatientWithEmail 
group by master 
order by patientEveryDay desc
as output;

我们用email做横坐标,然后平均病人数作为纵坐标的值,同时使用柱状图:

image.png

可以看到 jack@hotmail的科室日均接诊量遥遥领先。

任务三:保存和下载包含email的新表为excel文件

最后我们希望把triagePatientWithEmail表保存下来,然后下载到自己的电脑上。拖拽
Save data到编辑区,打开对话框,选择excel格式,然后将triagePatientWithEmail 表保存到/tmp/triagePatientWithEmail.xlsx 文件:

image.png

点击ok后自动生成语句,然后点击运行,结果显示保存完毕。我们可以用前面查看excel的方法加载他:

image.png

很完美。然后我们现在要下载他,拖拽


image.png

到编辑区,然后填写路径:

image.png

点击Ok,会打开新标签页进行下载。

完整脚本

最后完整脚本如下:

--------------------------------------------------------------------------------
-- 数据描述:
--
-- 我们有两个excel文件,第一个文件是每个科室每天接收的病人,并且有这个科室的负责人。
-- 第二个文件是科室负责人以及对应的email信息。
--
-- 需求描述:
-- 1. 我们希望看到科室每天接收到的人的一个时间分布图。
-- 2. 日均接收用户最高的科室负责人的email
--------------------------------------------------------------------------------

-- 需求一

-- 下载文件
-- run command as DownloadExt.`` where 
-- from="excel-example" and
-- to="/tmp";
 
load excel.`/tmp/excel-example/triage-patient.xlsx` where useHeader="true"  as triagePatient;
load excel.`/tmp/excel-example/master-email.xlsx` where useHeader="true" as masterEmail;

-- select date_format(cast (UNIX_TIMESTAMP(date, 'dd/MM/yy') as TIMESTAMP),'dd/MM/yy') as x,date from triagePatient as output;

select date  as x, 0 as y1, patientNum as y2 from triagePatient where triage="皮肤科"
union all
select date  as x, patientNum as y1, 0 as y2 from triagePatient where triage="眼科" 
as tempTable;

select x,sum(y1) as `眼科`,sum(y2) as `皮肤科`, 
-- 告诉系统需要生成图表
"line" as dash
from tempTable where x is not null group by x order by x asc 
as finalTable;

select tp.*,me.email from triagePatient as tp  left join masterEmail as me on tp.master==me.master
as triagePatientWithEmail;

select first(email) as x, 
avg(patientNum) as patientEveryDay,master,first(email) as email, 
"bar" as dash
from triagePatientWithEmail 
group by master 
order by patientEveryDay desc
as output;

save overwrite triagePatientWithEmail as excel.`/tmp/triagePatientWithEmail.xlsx`;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260