跳至主要內容

逻辑模型

2025年7月7日大约 14 分钟

逻辑模型

逻辑模型是利用数据表之间的关系,描述业务规则的实体。包括基本信息、属性、关系、映射四个部分,通过属性、映射等要素转换为数据库可以识别的数据表关系图。

逻辑模型新建

操作步骤如下:

  1. 选择新建: 点击+ 新建按钮或者左侧列表上方+按钮新建逻辑模型

  2. 填写基本信息: 填写名称和描述,名称必填

  1. 引入属性: 点击引入属性按钮
  • 标记①: 选择数据源

  • 标记②: 选择数据源中的数据表

  • 标记③: 按名称模糊搜索数据表

  • 标记④: 选择数据表中的字段

  • 点击确定按钮

  1. 添加关系: 选择关系栏,点击添加关系按钮添加逻辑模型关系。
  • 关系: 逻辑模型之间的主外键关系,描述逻辑模型之间以什么关系关联在一起
  1. 添加映射: 当逻辑模型属性来源于多个数据表,选择映射栏,点击添加映射按钮添加映射信息

提示

  • 第一个映射的左表为主表,所有映射中的表都必须和主表直接或间接关联

  • 映射的左表和右表不能是同一张数据表

  • 如果两张数据表已经在映射中存在,不能再添加这两张数据表的映射

逻辑模型导入

操作步骤如下:

  1. 批量导入: 点击批量导入按钮,进入导入页面

  2. 选择数据源: 在标记①处选择数据源

  3. 选择数据表: 左边栏选择数据表,或者点击下方一键导入按钮选择全部数据表

  4. 点击确认,完成导入

逻辑模型编辑

  • 点击要编辑的逻辑模型

  • 弹出编辑页面,重新编辑逻辑模型信息

  • 点击保存按钮,完成逻辑模型的编辑

逻辑模型批量删除

  • 选择要删除的逻辑模型,右上角会出现删除标志按钮

  • 点击删除按钮,弹出删除提示框

  • 点击确定,完成删除

逻辑模型使用

  1. 在应用平台首页,选择对应空间的数据资源模块,进入数据资源页面。

  2. 在数据资源的数据连接处选择逻辑模型。

  3. 选择逻辑模型中的表创建数据资源。

提示

函数参考手册

数据处理、SQL查询中的函数用法参考,包括数学函数、类型转换函数、时间函数、文本函数、聚合函数

1. 数学函数

1.1 ABS

  • 表达式:ABS([数字])
  • 功能:返回给定数字的绝对值。
  • 示例:
    ABS(-8) 返回 8

1.2 CBRT

  • 表达式:CBRT([数字])
  • 功能:返回给定数字的立方根。
  • 示例:
    CBRT(3) 返回 1.44225

1.3 CEIL

  • 表达式:CEIL([数字])
  • 功能:返回不小于给定数字的最小整数。
  • 示例:
    CEIL(5.5) 返回 6

1.4 DEGREES

  • 表达式:DEGREES([数字])
  • 功能:将以弧度表示的给定数字转换为度数。
  • 示例:
    DEGREES(PI()/4) 返回 45.0  -- π/4弧度=45度

1.5 EXP

  • 表达式:EXP([数字])
  • 功能:计算常数e的数字次幂(e≈2.71828)。
  • 示例:
    EXP(2) 返回 7.389

1.6 FLOOR

  • 表达式:FLOOR([数字])
  • 功能:将数值舍入为不大于数字的最大整数。
  • 示例:
    FLOOR(3.1415) 返回 3

1.7 LOG

  • 表达式1:LOG([数字])
    • 功能:返回数字的自然对数(以e为底)。
    • 示例:
      LOG(2.718281828459) 返回 0.9999999999999832

1.8 LOG10

  • 表达式:LOG10([数字])
  • 功能:返回以10为底的数字的对数。
  • 示例:
    LOG10(10) 返回 1

1.9 LSHIFT

  • 表达式:LSHIFT([数字1],[数字2])
  • 功能:将数字1按二进制展开后整体左移数字2位。
  • 示例:
    LSHIFT(2, 10) 返回 2048

1.10 RSHIFT

  • 表达式:RSHIFT([数字1],[数字2])
  • 功能:将数字1按二进制展开后整体右移数字2位。
  • 示例:
    RSHIFT(2048, 2) 返回 512

1.11 MOD

  • 表达式:MOD([数字1],[数字2])
  • 功能:返回数字1除以数字2的余数。
  • 示例:
    MOD(3, 5) 返回 3

1.12 RADIANS

  • 表达式:RADIANS([数字])
  • 功能:将数字的度数值转换为弧度数。
  • 示例:
    RADIANS(270) 返回 4.712389  -- 270度=3π/2弧度

1.13 RAND

  • 表达式:RAND()
  • 功能:返回0到1之间的随机数。
  • 示例:
    RAND() 返回 0.1712197025597102

1.14 POWER

  • 表达式:POWER([数字1],[数字2])
  • 功能:返回数字1的数字2次幂。
  • 示例:
    POWER(3,3) 返回 27

1.15 ROUND

  • 表达式1:ROUND([数字1],[数字2])

    • 功能:将数字1四舍五入到数字2位小数。
    • 示例:
      ROUND(3.1415926,3) 返回 3.142
  • 表达式2:ROUND([数字])

    • 功能:将数字四舍五入到整数位。
    • 示例:
      ROUND(3.1415926) 返回 3

1.16 SIGN

  • 表达式:SIGN([数字])
  • 功能:返回数字的符号(正数返回1,负数返回-1,0返回0)。
  • 示例:
    SIGN(-3.1415926) 返回 -1

1.17 SQRT

  • 表达式:SQRT([数字])
  • 功能:返回数字的平方根。
  • 示例:
    SQRT(2) 返回 1.414

1.18 SIN

  • 表达式:SIN([数字])
  • 功能:返回数字(弧度)的正弦值。
  • 示例:
    SIN(30) 返回 -0.988  -- 30为弧度,非角度

1.19 ASIN

  • 表达式:ASIN([数字])
  • 功能:返回给定数字的反正弦值(结果以弧度表示,范围:-π/2~π/2)。
  • 示例:
    ASIN(1) 返回 1.5707963267949  -- 即π/2弧度

1.20 COS

  • 表达式:COS([数字])
  • 功能:返回数字(弧度)的余弦值。
  • 示例:
    COS(30) 返回 0.154  -- 30为弧度

1.21 ACOS

  • 表达式:ACOS([数字])
  • 功能:返回给定数字的反余弦值(结果以弧度表示,范围:0~π)。
  • 示例:
    ACOS(-1) 返回 3.14159265358979  -- 即π弧度

1.22 TAN

  • 表达式:TAN([数字])
  • 功能:返回数字(弧度)的正切值。
  • 示例:
    TAN(30) 返回 -6.405  -- 30为弧度

1.23 ATAN

  • 表达式:ATAN([数字])
  • 功能:返回数字的反正切值(结果以弧度表示,范围:-π/2~π/2)。
  • 示例:
    ATAN(30) 返回 1.537

1.24 SINH

  • 表达式:SINH([数字])
  • 功能:返回数字的双曲正弦值。
  • 示例:
    SINH(30) 返回 5.343×10^12

1.25 COSH

  • 表达式:COSH([数字])
  • 功能:返回数字的双曲余弦值。
  • 示例:
    COSH(30) 返回 5.343×10^12

1.26 TANH

  • 表达式:TANH([数字])
  • 功能:返回数字的双曲正切值。
  • 示例:
    TANH(30) 返回 1.0

2. 类型转换函数

2.1 CAST

  • 表达式:CAST([value] AS [<type>])
  • 功能:将任意类型的[value]强制转换为<type>指定的目标类型(如INTEGER、FLOAT、VARCHAR等)。
  • 示例:
    CAST(3.14159 AS INTEGER)  → 3  -- 浮点数转整数(截断小数)  
    CAST('0.3456' AS FLOAT) + 1  → 1.3456  -- 字符串转浮点数后参与计算

2.2 FORMAT_NUMBER

  • 表达式:FORMAT_NUMBER([数字], [格式化参数])
  • 功能:将数值类型的[数字]转换为字符串,按[格式化参数]指定格式展示(如千分位、小数位数)。
  • 示例:
    FORMAT_NUMBER(381928933.2398474, '#,###.##')  → '381,928,933.24'

2.3 TO_DATE

  • 功能:将文本或数值转换为日期类型(仅包含年/月/日)。

  • 表达式1:TO_DATE([文本], [格式化参数])

    • 说明:根据[格式化参数]解析[文本]转换为日期
    • 示例:
      TO_DATE('2022-12-31', 'yyyy-MM-dd')  → 2022-12-31
  • 表达式2:TO_DATE([数字])

    • 说明:将[数字](毫秒级时间戳)转换为对应的日期。
    • 示例:
      TO_DATE(1427849046000)  → 2015-04-01

2.4 TO_NUMBER

  • 表达式:TO_NUMBER([文本], [格式化参数])
  • 功能:将字符串类型的[文本]按[格式化参数]转换为数值类型
  • 示例:
    TO_NUMBER('987,966.21', '###,###.0')  → 987966.2

2.5 TO_TIME

  • 功能:将文本或数值转换为时间类型

  • 表达式1:TO_TIME([文本], [格式化参数])

    • 说明:根据[格式化参数]解析[文本]转换为时间。
    • 示例:
      TO_TIME('12:20:30', 'HH:mm:ss')  → 12:20:30
  • 表达式2:TO_TIME([数值])

    • 说明:将[数值](毫秒级时间戳,相对于当天0点)转换为时间。
    • 示例:
      TO_TIME(82855000)  → 23:00:55

2.6 TO_TIMESTAMP

  • 功能:将文本或数值转换为日期时间类型。

  • 表达式1:TO_TIMESTAMP([文本], [格式化参数])

    • 说明:根据[格式化参数]解析[文本]转换为日期时间。
    • 示例:
      TO_TIMESTAMP('2020-2-23 12:00:00', 'yyyy-MM-dd HH:mm:ss')  → 2020-02-23 12:00:00.0
  • 表达式2:TO_TIMESTAMP([数字])

    • 说明:将[数字](毫秒级时间戳,相对于1970-01-01 00:00:00 UTC)转换为日期时间。
    • 示例:
      TO_TIMESTAMP(1427936330000)  → 2015-04-02 08:58:50.0

3. 时间函数

3.1 TIMEOFDAY

  • 表达式:TIMEOFDAY()
  • 功能:返回包含时区信息的本地日期和时间(UTC 时区对应时间),格式为“年-月-日 时:分:秒.毫秒 时区”。
  • 示例:
    TIMEOFDAY()  → 2021-07-01 16:24:46.287 Asia/Shanghai

3.2 CURRENT_DATE

  • 表达式:CURRENT_DATE
  • 功能:返回当前系统日期(仅包含年、月、日,无时间信息),格式为yyyy-MM-dd。
  • 示例:
    CURRENT_DATE  → 2021-04-02

3.3 CURRENT_TIME

  • 表达式:CURRENT_TIME
  • 功能:返回当前系统时间(仅包含时、分、秒、毫秒,无日期信息),格式为HH:mm:ss.fff。
  • 示例:
    CURRENT_TIME  → 14:32:04.751

3.4 CURRENT_TIMESTAMP

  • 表达式:CURRENT_TIMESTAMP
  • 功能:返回当前系统日期时间(包含年、月、日、时、分、秒、毫秒),格式为yyyy-MM-dd HH:mm:ss.fff。
  • 示例:
    CURRENT_TIMESTAMP  → 2015-05-17 22:45:55.848

3.5 LOCALTIME

  • 表达式:LOCALTIME
  • 功能:返回本地时区的当前时间(仅包含时、分、秒、毫秒),格式为HH:mm:ss.fff。
  • 示例:
    LOCALTIME  → 22:46:19.656

3.6 LOCALTIMESTAMP

  • 表达式:LOCALTIMESTAMP
  • 功能:返回本地时区的当前日期时间(包含年、月、日、时、分、秒、毫秒),格式为yyyy-MM-dd HH:mm:ss.fff。
  • 示例:
    LOCALTIMESTAMP  → 2015-05-17 22:46:47.944

3.7 NOW

  • 表达式:NOW()
  • 功能:返回当前系统日期时间(与CURRENT_TIMESTAMP功能一致,包含年、月、日、时、分、秒、毫秒)。
  • 示例:
    NOW()  → 2015-05-17 22:47:11.008

3.8 DATE_ADD

  • 表达式:DATE_ADD([字段], [数字])
  • 功能:对日期/时间类型的[字段]增加指定天数([数字]为正数),返回新的日期/时间。
  • 示例:
    DATE_ADD(date '2015-04-15', 2)  → 2015-04-17

3.9 DATE_SUB

  • 表达式:DATE_SUB([字段], [数字] | interval '[数字]' [单位])
  • 功能:对日期/时间类型的[字段]减去指定时间单位(默认天,支持月、小时等),返回新的日期/时间。
  • 示例:
    DATE_SUB(dateColumn, 2)  → 减去2天(默认单位为天)  
    DATE_SUB(date '2015-04-15', interval '2' month)  → 2015-02-15  -- 减去2个月  
    DATE_SUB(timestamp '2015-04-15 22:55:55', interval '10' hour)  → 2015-04-15 12:55:55  -- 减去10小时

3.10 DATE_DIFF

  • 表达式:DATE_DIFF([字段1], [字段2], [时间单位])
  • 功能:计算[字段1]与[字段2]之间的时间差,返回以[时间单位]为单位的整数结果([字段1] > [字段2]时为正数,反之为负数)。
  • 支持的时间单位:
    MILLENNIUM(千年)、CENTURY(世纪)、DECADE(十年)、YEAR(年)、QUARTER(季度)、MONTH(月)、WEEK(周)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒)等。
  • 示例:
    DATE_DIFF(DATE '2002-03-01', DATE '2001-03-01', DAY)  → 365  -- 两个日期相差365天

3.11 DATE_PART

  • 表达式:DATE_PART([时间单位], [文本])
  • 功能:从日期/时间类型的[文本]中提取指定[时间单位]对应的数值(如提取月份、小时等)。
  • 支持的时间单位:与DATE_DIFF一致,常用YEAR(年)、MONTH(月)、DAY(日)、HOUR(时)等。
  • 示例:
    DATE_PART('DAY', DATE '2015-04-02')  → 2  -- 提取日期中的“日”部分  
    DATE_PART('HOUR', timestamp '2023-10-01 14:30:00')  → 14  -- 提取时间中的“小时”部分

4. 文本函数

4.1 CONCAT

  • 表达式:CONCAT([文本1],[文本2],[...])
  • 功能:将多个字符串(、等)拼接为一个字符串。
  • 示例:
    CONCAT('Hello', ' ', 1.0, ' ', 'release') 返回 Hello 1.0 release

4.2 ILIKE

  • 表达式:ILIKE([文本],[模式])
  • 功能:对与进行不区分大小写的模糊匹配(返回布尔值)。
  • 示例:
    CAST(ILIKE('abcde', 'ABC%') AS VARCHAR) 返回 true  -- 'abcde'匹配'ABC%'

4.3 LIKE

  • 表达式:LIKE([文本],[模式])
  • 功能:对与进行区分大小写的模糊匹配(返回布尔值)。
  • 示例:
    CAST(LIKE('abcde', 'ABC%') AS VARCHAR) 返回 false  -- 'abcde'不匹配'ABC%'

4.4 INITCAP

  • 表达式:INITCAP([文本])
  • 功能:将中每个单词的首字母转换为大写,其余为小写。
  • 示例:
    INITCAP('hello word release 1.0') 返回 Hello Word Release 1.0

4.5 LENGTH

  • 表达式:LENGTH([文本])
  • 功能:返回的字符数。
  • 示例:
    LENGTH('apache hello release 1.0') 返回 24

4.6 LOWER

  • 表达式:LOWER([文本])
  • 功能:将转换为全小写。
  • 示例:
    LOWER('HELLO WORD') 返回 hello word

4.7 LEFT

  • 表达式:LEFT([文本1],[数字])
  • 功能:返回左侧的个字符。
  • 示例:
    LEFT('abcdef', 4) 返回 abcd

4.8 LPAD

  • 表达式:LPAD([文本1],[数字],[文本2])
  • 功能:在左侧填充,直到总长度为(若文本1长度超过数字,则截断左侧)。
  • 示例:
    LPAD('d', 4, 'abc') 返回 abcd

4.9 RPAD

  • 表达式:RPAD([文本1],[数字],[文本2])
  • 功能:在右侧填充,直到总长度为(若文本1长度超过数字,则截断右侧)。
  • 示例:
    RPAD('d', 4, 'abc') 返回 dabc

4.10 RIGHT

  • 表达式:RIGHT([文本1],[数字])
  • 功能:返回右侧的个字符。
  • 示例:
    RIGHT('abcdef', 4) 返回 cdef

4.11 REGEXP_REPLACE

  • 表达式:REGEXP_REPLACE([文本1],[正则],[文本2])
  • 功能:用替换中匹配的部分。
  • 示例:
    REGEXP_REPLACE('Hello 123 World', '\\d+', '###') 返回 Hello ### World

4.12 REPEAT

  • 表达式:REPEAT([文本],[数字])
  • 功能:返回重复指定次数的输入字符串。
  • 示例:
    REPEAT('Hello Word ', 3) 返回 Hello Word Hello Word Hello Word

4.13 REPLACE

  • 表达式:REPLACE([文本],[from],[to])
  • 功能:用另一个指定的子字符串替换所有出现的指定子字符串。
  • 示例:
    REPLACE('The quick brown fox jumps...', 'jumps', 'sleeps') 返回 The quick brown fox sleeps...

4.14 SPLIT_PART

  • 表达式:SPLIT_PART([文本],[分隔符], start[, end])
  • 功能:使用指定的分隔符对输入文本进行拆分,返回开始到结束部分。
  • 示例:
    SPLIT_PART('The quick brown fox jumps...', ' ', 4) 返回 fox

4.15 SUBSTR

  • 表达式:SUBSTR([文本],[数字],[数字])
  • 功能:对输入的字符串进行截取,可指定开始位置、长度或通过正则匹配。
  • 示例:
    SUBSTR('Hello Word', 7) 返回 Word  
    SUBSTR('Hello Word', 3, 2) 返回 ll  
    SUBSTR('On 1970-01-01 the quick', '[\\d-]+') 返回 1970-01-01

4.16 TRIM

  • 表达式:TRIM ([leading | trailing | both] [文本1] from [文本2])
  • 功能:将[文本2]从开始(leading)、结尾(trailing)或两侧(both)移除匹配[文本1]的字符串。
  • 示例:
    TRIM(trailing 'l' from 'Drill') 返回 Dri  
    TRIM(both 'l' from 'long live Drill') 返回 ong live Dri  
    TRIM(leading 'l' from 'long live Drill') 返回 ong live Drill

4.17 UPPER

  • 表达式:UPPER([文本])
  • 功能:将输入的字符串全部转换为大写。
  • 示例:
    UPPER('hello word') 返回 HELLO WORD

5. 聚合函数

5.1 SUM

  • 表达式:SUM([数字])
  • 功能:计算一列的总和。
  • 示例:
    SUM(销售额) 返回 数据列{{销售额}}的总和

5.2 AVG

  • 表达式:AVG([数字])
  • 功能:计算一列的平均值。
  • 示例:
    AVG(销售额) 返回 数据列{{销售额}}的平均值

5.3 MAX

  • 表达式:MAX([数字])
  • 功能:返回一列的最大值。
  • 示例:
    MAX(销售额) 返回 数据列{{销售额}}的最大值

5.4 MIN

  • 表达式:MIN([数字])
  • 功能:返回一列的最小值。
  • 示例:
    MIN(销售额) 返回 数据列{{销售额}}的最小值

5.5 COUNT

  • 表达式:COUNT([数字])
  • 功能:返回一列的非空值总数。
  • 示例:
    COUNT(销售额) 返回 数据列{{销售额}}的非空值数量

5.6 STDDEV

  • 表达式:STDDEV([数字])
  • 功能:计算一列的样本标准差(反映数据离散程度)。
  • 示例:
    STDDEV(销售额) 返回 数据列{{销售额}}的样本标准差

5.7 STDDEV_POP

  • 表达式:STDDEV_POP([数字])
  • 功能:计算一列的总体标准差。
  • 示例:
    STDDEV_POP(销售额) 返回 数据列{{销售额}}的总体标准差

5.8 VARIANCE

  • 表达式:VARIANCE([数字])
  • 功能:计算一列的样本方差(标准差的平方)。
  • 示例:
    VARIANCE(销售额) 返回 数据列{{销售额}}的样本方差

5.9 VAR_POP

  • 表达式:VAR_POP([数字])
  • 功能:计算一列的总体方差。
  • 示例:
    VAR_POP(销售额) 返回 数据列{{销售额}}的总体方差
上次编辑于: 2025/7/11 17:36:33
贡献者: qinhaotian