反馈已提交

网络繁忙

您好,只有最新版本的6.X支持在线编辑修改,如果想创建/编辑文档,请移步到 *最新版本*

SQL 数据集定义参数

  • 文档创建者:doreen0813
  • 历史版本:13
  • 最近更新:panda君 于 2020-11-24
  • 1. 概述

    本文介绍在 添加 SQL 数据集 中如何命名参数和如何定义参数。

    参数具体使用可参见:实时数据中SQL参数使用过滤组件的参数用法

    2. 参数命名

    2.1 必须遵守的命名规则

    1)不能以数字$符号开头。

    2)变量名只能是字母(a-z A-Z)数字(0-9)下划线(_)(@)中文的组合,并且之间不能包含空格。

    3)变量名中不能含有? * . - 等字符和空格

    4)变量名不能使用编程语言的保留字。比如小写的 true、false 等保留字。但大写的 TRUE、FALSE 可以。

    2.2 经典命名规则

    2.2.1 匈牙利命名法

    该命名法是在每个变量名的前面加上若干表示数据类型的字符。基本原则是:变量名=属性+类型+对象描述

    如 i 表示 int ,所有 i 开头的变量命都表示 int 类型。s 表示 String ,所有变量命以 s 开头的都表示 String 类型变量。

    2.2.2 骆驼命名法

    正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。

    驼峰命名法跟帕斯卡命名法相似,只是首字母为小写,如 userName 。因为看上去像驼峰,因此而得名。

    2.2.3 帕斯卡命名法

    做法是首字母大写,如 UserName 。


    3. 参数示例

    3.1 不使用公式定义参数

    在创建 添加 SQL 数据集 时,直接使用where条件定义参数,并过滤出需要的数据,缩短取数时间,例如:SELECT * FROM 销量 where 地区 = '${地区}'  

    3.2 使用公式定义参数

    数据集 SQL 中可以使用参数宏${}动态地生成过滤条件,${}中的语句在 FineBI 中执行,将${}的执行结果与 SQL 语句拼接起来形成最终的查询语句,传递给数据库执行,可以使用多个${}。

    1)例如:SELECT * FROM new_dian where 1=1 ${if(len(店性质) == 0,"","and 店性质 in ('" + 店性质 + "')")}   

    则设置了店性质参数,如下图所示:

    58.png

    2)${} 中除了 FineBI 内置的函数名、常量外,还支持自定义的参数;

    例如输入如下 SQL 语句

    SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}  

    731.png

    IF 公式是 FineBI 内置的公式,area 和 province 都是自定义的参数。如果len(area)!=0,即 area 参数不为空,比如说 area 的值为华东,那么 IF 语句的执行结果为and 货主地区='华东',然后再把这句话拼接到 SQL 语句当中,SQL 语句就变成:

    SELECT * FROM 订单 where 1=1 and 货主地区='华东' and 货主省份='江苏'

    注:${} 中可以使用所有内置的 FineBI 公式,如 IF 函数。详情参见:函数 

    4. 注意事项

    1)字符参数有英文单引号'${adce}',数字参数没有英文单引号${adce}。其中 adce 为参数。

    2)参数值的引用格式为参数前面加$符号,如$adce


    附件列表


    主题: 连接到数据
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    在线QQ(将在2023.01.03关停):800049425

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭