Quick B的SQL传参建模功能提供基于SQL的数据加工处理能力,减轻了IT支撑人员的工作量。在即席查询SQL中,我们用物理字段显示别名来表示参数的占位符,配置完占位符后,就可以在查询控件中进行参数绑定。在的传参建模中,本质透传的是逻辑条件,执行过程中会将物理字段:显示别名来表示参数的占位符,配置完占位符后,就可以在查询控件中进行参数绑定。在QuickBI的SQL传参建模中,本质透传的是逻辑条件,执行过程中会将“{物理字段:显示别名}”替换为“物理字段 > 查询值 ” 或 “物理字段 = 查询值 ” 或 “物理字段 in (查询值A、查询值B、查询值C) ” 或 “物理字段>= 查询值A and物理字段<= 查询值B”。下面我们来看看,哪些场景会用到Quick B的SQL传参建模功能吧!

场景一:任意时间段内的用户购买行为分析

  1. 场景描述:在零售行业往往需要分析用户的活跃度和客户的忠诚度,那么通过分析任意时间段内用户购买频率是常用的分析思路。
  2. 基于SQL传参如何实现:

1) SQL建模,这个场景就是典型的二次聚合分析,而且任意时间段,需要作用到子查询中,SQL建模语句如下:

select
sum(case when buy_cnt = 1 then 1 else 0 end ) as buy_cut_1,
sum(case when buy_cnt = 2 then 1 else 0 end ) as buy_cut_2,
sum(case when buy_cnt >2 and buy_cnt<=5 then 1 else 0 end ) as buy_cut_2_5,
sum(case when buy_cnt >5 and buy_cnt<=10 then 1 else 0 end ) as buy_cut_5_10,
sum(case when buy_cnt >10 and buy_cnt<=20 then 1 else 0 end ) as buy_cut_10_20,
sum(case when buy_cnt >20 then 1 else 0 end ) as buy_cut_up_20
from
(SELECT a.customer_name,
count(a.order_id) as buy_cnt
from company_sales_record_copy a
WHERE ${a.report_date : date_test } /定义查询时间参数/
group by a.customer_name
) b

2) 参数设置,在Quick BI中SQL传参本质上传逻辑条件,SQL传参需要选择为“日期-年月日”,供查询控件中识别数据类型。

3) 点击“创建数据集”,构建“任意时间多次购买客户数”数据集

4) 仪表板配置,以交叉表配置为例。选择对应SQL传参建模数据集,拖拽选择需要展现的字段。如下所示:

5) 查询项绑定配置,选择SQL参数项作为查询条件项,设置查询项与图表组件的关联关系和筛选项展现形式。如下图所示:

6) 数据验证:点击查询进行数据验证和SQL准确性验证。Quick BI的SQL引擎根据查询条件配置和SQL传参建模进行参数绑定。如下图所示:

通过以上六步操作,就可以很好的实现SQL传参建模的全流程穿越,以此来支撑多次聚合的复杂分析场景。

场景二、销售库存类数据分析(SQL建模供参考)

1.场景描述:在零售行业分析任意时间段的库存和销量数据是比较常用的需求,通过该数据分析甄别某个商品近期销售情况和库存?针对这样的场景,如何构建Quick BI的SQL传参建模?

1) 数据样例,后台数据具体字段包括(统计日期、省份、城市、期初库存、进货量、出货量、期末库存等):

2) 需要实现结果说明,基于以上数据,假设需要分析20190801~20190820浙江杭州的销售库存数据,需要给出的结果为:(期初库存取汇总开始时间的期初库存值,期末库存取汇总结束时间的期末库存值,进货朗、出货量采用sum汇总),另外时间为筛选区间。

3) Quick BI中SQL建模语句如下(供参考):

SELECT QBI_T_1_.COL_2 AS '省份',

    QBI_T_1_.`COL_3` AS '城市',
sum( case when QBI_T_1_.COL_1 = start_date then QBI_T_1_.COL_4else 0 end) as '期初库存',
SUM(QBI_T_1_.COL_5) AS '进货量',
SUM(QBI_T_1_.COL_6) AS '出货量',
SUM(case when QBI_T_1_.COL_1 = end_date then QBI_T_1_.COL_7 else 0 end ) as '期末库存'
FROM quickbi_test.QBI_0808_1566542575222 AS QBI_T_1_ /每日库存销量表/
left join (
select min(a.COL_1) as start_date,
max(a.COL_1) as end_date
FROM quickbi_test.QBI_0808_1566542575222 AS a /每日库存销量表/
where ${a.COL_1:report_date} /查询项中绑定的SQL传参/ ) b /*获取待汇总的统计时间*/
on ( QBI_T_1_.COL_1 >= start_date
and QBI_T_1_.COL_1 <= end_date )
group by QBI_T_1_.COL_2, QBI_T_1_.`COL_3`

阿里巴巴数据中台团队,致力于输出阿里云数据智能的最佳实践,助力每个企业建设自己的数据中台,进而共同实现新时代下的智能商业!

阿里巴巴数据中台解决方案,核心产品:
Dataphin,以阿里巴巴大数据核心方法论OneData为内核驱动,提供一站式数据构建与管理能力;
Quick BI,集阿里巴巴数据分析经验沉淀,提供一站式数据分析与展现能力;
Quick Audience,集阿里巴巴消费者洞察及营销经验,提供一站式人群圈选、洞察及营销投放能力,连接阿里巴巴商业,实现用户增长。
欢迎志同道合者一起成长!更多内容详见数据中台官网 https://dp.alibaba.com

本文作者:潘炎峰

原文链接

本文为云栖社区原创内容,未经允许不得转载。

Quick BI的SQL传参建模可以用在什么场景的更多相关文章

  1. shell动态向sql传参

    一直在想有什么好方法可以实现,用shell动态给sql传参,自己写了一个简单,有什么好方法,欢迎留言补充,下面代码纯手打,可能有疏忽之处,请大佬批评指正指正. 实现方法如下: 1.新建一个文件02.t ...

  2. ★★★Oracle sql 传参特别注意★★★

    最近遇到一个非常烦人的问题,用传参的方式执行sql语句结果老是报 Oracle ORA-01722: 无效数字 一直无法找到原因. 表结构大致如下: table test_station ( tblR ...

  3. Mybatis中使用 #{} 和 ${} 向sql传参时的区别

    今天在工作时,使用MyBatis中向sql传递两个参数时,一直显示SQL语法错误,仔细检查,才发现传入的参数被加上了引号,导致传入的参数(要传入的参数是表名)附近出现语法错误. 错误写法: } a } ...

  4. Sql传参含有单引号

    程序 exec heduling_date_select ' Name like @%a%@ or phone like @%a%@ or Cus_code like @%a%@ or objjc l ...

  5. Quick BI 的模型设计与生成SQL原理剖析

    一.摘要 随着物联网的告诉发展,数据量呈现井喷式的增长,如何来分析和使用这些数据,使数据产生商业价值,已经变得越来越重要.值得高兴的是,当前越来越多的人已经意识到了用数据分析决定商业策略的重要性,也都 ...

  6. 【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参

    转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和li ...

  7. sqlmap动态sql优化,避免传参失误批量修改和删除操作!

    分析以下的sqlmap存在问题: <delete id="deletePartspic" parameterClass="TblSpPartspic"&g ...

  8. 关于SQL Server 2017中使用json传参时解析遇到的多层解析问题

    开发新的系统,DB部分使用了SQL Server从2016版开始自带的Json解析方式. 用了快半年,在个人项目,以及公司部分项目上使用了,暂时还没遇到大的问题,和性能问题. 今天在解析Json的多级 ...

  9. Sql Server参数化查询之where in和like实现之xml和DataTable传参 (转)

    在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了xml和表值参数,这里做一个补充 文章导读 ...

随机推荐

  1. 2018.03.26 Python-Pandas 字符串常用方法

    import numpy as np import pandas as pd 1 #字符串常用方法 - strip s = pd.Series([' jack ','jill',' jease ',' ...

  2. 几家大的券商的PB系统以及算法交易概况大致是怎样的?

    PB的定位是托管-清算-交易.目前的PB系统方面的竞争点主要放在了交易环节(毕竟托管和清算没有多大的差异).目前的pb交易环节的技术提供有恒生.讯投.金证.同花顺等,以满足私募及高净值个人多样化交易和 ...

  3. PHP 验证香港身份证ID号

    /**check hk idcard$id = "K548653A";$xx= check_hkid($id);var_dump($xx);**/function check_hk ...

  4. 【Airtest】Airtest中swipe方法兼容不同分辨率的解决方法

    使用Airtest中swipe方法由于不同分辨率的手机上滑动的坐标位置不同,所以想要兼容所有的手机,仅仅靠固定坐标就会出现问题 想要兼容所有的手机,可以按照如下思路进行 1.首先获取手机的分辨率,可以 ...

  5. 第五周课程总结&试验报告(三

    实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...

  6. 把对像生成json并存储到文件

    1.创建实体对像json import com.alibaba.fastjson.annotation.JSONField; import java.util.Date; public class S ...

  7. 【Linux 环境搭建】安装arm-linux-gcc

    (1)下载或者拷贝arm-linux-gcc-4.3.2.tgz到Linux环境的任意目录. 解压: tar xvf arm-linux-gcc-4.3.2.tgz ,会解压该文件到当前目录: 拷贝: ...

  8. Nginx 的方向代理及配置

    最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡.所以搜罗了一些关于反向代理服务器的内容,整理综合. 一  概述 反向代理(Reverse Proxy)方式 ...

  9. Linux rsync 远程同步部署篇

    rsync官网: www.samba.org/ftp/rsync.html端口:873上机实战系列项目100台规模集群全网数据备份解决方案3.本项目提供免费实战讲解视频:Linux集群全网服务器数据备 ...

  10. 剑指Offer编程题(Java实现)——反转链表

    题目描述 输入一个链表,反转链表后,输出新链表的表头. 思路一 使用头插法迭代进行反转 实现 /* public class ListNode { int val; ListNode next = n ...