一、前言
在建设数据仓库,数据中台,指标计算,OLTP等等一系列操作的时候,我们会涉及到很多的计算,下面主要来实现一下kettle的多种计算方法
二、示例脚本
CREATE TABLE `score_count` (
`ID` int NOT NULL AUTO_INCREMENT,
`CHINESE` float(10,2) DEFAULT NULL,
`MATH` float(10,2) DEFAULT NULL,
`ENGLISH` float(10,2) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
insert into score_count value(1,66.5,96,95);
insert into score_count value(2,94.5,92.6,79.5);
insert into score_count value(3,65.5,69,96);
三、使用介绍
1. 使用SQL
语句计算
通过表输入的SQL语句来就行计算,
2. 通过kettle的计算器
组件来就行计算
kettle中的计算器
组件可谓是强的雅痞,里面富含了很多的计算公式等你i来发现。
新字段:创建一个新的字段来接收计算好的值
计算:计算公式(后面有计算公式的概况)
字段A、字段B、字段C:需要计算的字段
3. 通过kettle的公式
组件来就行计算
kettle中的公式
组件可谓是与计算器
有异曲同工之处,当然里面的计算公式也很多。
4. 通过kettle的JavaScript代码
组件来就行计算
kettle中的JavaScript
组件灵活方便,但是需要有一些代码基础的人使用~~~
四、Kettle中计算器
组件计算方法的详细介绍
字段 | 值 | 解释 |
---|---|---|
Set field to constant A | 创建一个具有恒定值的字段。 | A |
Create a copy of field A | 创建具有给定字段值的字段的副本。 | A |
A + B | A加B。 | A and B |
A - B | 负B。 | A and B |
A * B | A乘以B。 | A and B |
A / B | A除以B。 | A and B |
A * A | A的平方。 | A |
SQRT( A ) | A的平方根。 | A |
100 * A / B | A在B中的百分比。 | A and B |
A - ( A * B / 100 ) | 减去A的B%。 | A and B |
A + ( A * B / 100 ) | 将B%添加到A。 | A and B |
A + B *C | 将A和B乘以C。 | A, B and C |
SQRT( AA + BB ) | 计算Δ(A2 + B2)。 | A and B |
ROUND( A ) | 返回最接近参数的Integer。通过将结果加1/2,取下限,并将结果转换为int类型,将结果舍入为整数。换句话说,结果等于表达式的值:floor(a + 0.5)。如果需要舍入方法“将一半舍入为偶数”,请使用以下方法ROUND(A,B),不带小数位(B = 0)。 | A |
ROUND( A, B ) | 将A舍入到最接近的偶数,并用B小数点后一位。使用的舍入方法为“半舍入到偶数舍入”,也称为无偏舍入,收敛舍入舍入,统计学家舍入,荷兰舍入,高斯舍入,奇偶舍入,银行家舍入或零舍入舍入,并广泛用于簿记中。这是IEEE 754计算函数和运算符中使用的默认舍入模式。在德国,它通常被称为“ Mathematisches Runden”。 | A and B |
STDROUND( A ) | 将A舍入到最接近的整数。使用的舍入方法是“从零开始舍入一半”,也称为标准或普通舍入。在德国,它被称为“kaufmännischeRundung”(在DIN 1333中定义)。 | A |
STDROUND( A, B ) | 与STDROUND(A)中使用的舍入方法相同,但十进制为B。 | A and B |
CEIL( A ) | 上限函数将数字映射到后面的最小整数。 | A |
FLOOR( A ) | 底函数将数字映射到最大的先前整数。 | A |
NVL( A, B ) | 如果A不为NULL,则返回A,否则返回B。请注意,有时您的变量将不是null而是空字符串。 | A and B |
Date A + B days | 在日期字段A中添加B天。 | A and B |
Year of date A | 计算日期的年份A。 | A |
Month of date A | 计算日期A的月份中的数字。 | A |
Day of year of date | A计算一年中的某天(1-365)。 | A |
Day of month of date A | 计算一个月中的某天(1-31)。 | A |
Day of week of date A | 计算星期几(1-7)。 | A |
Week of year of date A | 计算一年中的星期(1-54)。 | A |
ISO8601 Week of year of date A | 计算一年中的星期ISO8601样式(1-53)。 | A |
ISO8601 Year of date A | 计算年份ISO8601样式。 | A |
Byte to hex encode of string A | 将字符串中的字节编码为十六进制表示形式。 | A |
Hex encode of string A | 以自己的十六进制表示形式编码字符串。 | A |
Char to hex encode of string A | 将字符串中的字符编码为十六进制表示形式。 | A |
Hex decode of string A | 从其十六进制表示形式解码字符串(当A为奇数长度时,添加前导0)。 | A |
Checksum of a file A using CRC-32 | 使用CRC-32计算文件的校验和。 | A |
Checksum of a file A using Adler-32 | 使用Adler-32计算文件的校验和。 | A |
Checksum of a file A using MD5 | 使用MD5计算文件的校验和。 | A |
Checksum of a file A using SHA-1 | 使用SHA-1计算文件的校验和。 | A |
Levenshtein Distance (Source A and Target B) | 计算Levenshtein距离:http://en.wikipedia.org/wiki/Levenshtein_distance | A and B |
Metaphone of A (Phonetics) | 计算A的对讲机:http : //en.wikipedia.org/wiki/Metaphone | A |
Double metaphone of A | 计算A的双重音位:http : //en.wikipedia.org/wiki/Double_Metaphone | A |
Absolute value ABS(A) | 计算A的绝对值。 | A |
Remove time from a date A | 删除A的时间值。 | A |
Date A - Date B (in days) | 计算A日期字段和B日期字段之间的天数差异。 | A and B |
A + B + C | A加B加C。 | A, B, and C |
First letter of each word of a string A in capital | 转换字符串中每个单词的第一个字母。 | A |
UpperCase of a string A | 将字符串转换为大写。 | A |
LowerCase of a string A | 将字符串转换为小写。 | A |
Mask XML content from string A | 转义XML内容;用&value替换字符。 | A |
Protect (CDATA) XML content from string A | 指示XML字符串是常规字符数据,而不是非字符数据或具有更特定的受限结构的字符数据。给定的字符串将包含在<![CDATA [String]]>中。 | A |
Remove CR from a string A | 从字符串中删除回车符。 | A |
Remove LF from a string A | 从字符串中删除换行符。 | A |
Remove CRLF from a string A | 从字符串中删除回车符/换行符。 | A |
Remove TAB from a string A | 从字符串中删除制表符。 | A |
Return only digits from string A | 仅输出仅输出字符串中的数字(0-9)。 | A |
Remove digits from string A | 从字符串中删除所有数字(0-9)。 | A |
Return the length of a string A | 返回字符串的长度。 | A |
Load file content in binary | 将给定文件的内容(在字段A中)加载为二进制数据类型(例如图片)。 | A |
Add time B to date A | 将时间添加到日期,将日期和时间作为一个值返回。 | A and B |
Quarter of date A | 返回日期的四分之一(1到4)。 | A |
variable substitution in string A | 将变量替换为字符串。 | A |
Unescape XML content | 从字符串取消转义XML内容。 | A |
Escape HTML content | 在字符串中转义HTML。 | A |
Unescape HTML content | 在字符串中取消转义HTML。 | A |
Escape SQL content | 转义字符串中的字符以适合传递给SQL查询。 | A |
Date A - Date B (working days) | 计算日期字段A和日期字段B之间的差异(仅工作日为星期一至星期五)。 | A and B |
Date A + B Months | 在日期字段A中添加B个月。 | A |
Check if an XML file A is well formed | 验证XML文件输入。 | A |
Check if an XML string A is well formed | 验证XML字符串输入。 | A |
Get encoding of file A | 猜测给定文件的最佳编码(UTF-8)。 | A |
Dameraulevenshtein distance between String A and String B | 计算字符串之间的Dameraulevenshtein距离:http : //en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance | A and B |
NeedlemanWunsch distance between String A and String B | 计算字符串之间的NeedlemanWunsch距离:http : //en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm | A and B |
Jaro similitude between String A and String B | 返回两个字符串之间的Jaro相似系数。 | A and B |
JaroWinkler similitude between String A and String B | 返回两个字符串之间的Jaro相似系数:http : //en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance | A and B |
SoundEx of String A | 将字符串编码为Soundex值。 | A |
RefinedSoundEx of String A | 检索给定字符串对象的精制Soundex代码 | A |
Date A + B Hours | 在日期字段A中添加B小时 | A and B |
Date A + B Minutes | 在日期字段A中添加B分钟 | A and B |
Date A - Date B (milliseconds) | 从日期字段A减去B毫秒 | A and B |
Date A - Date B (seconds) | 从日期字段A减去B秒 | A and B |
Date A - Date B (minutes) | 从日期字段A减去B分钟 | A and B |
Date A - Date B (hours) | 从日期字段A中减去B小时 | A and B |
Hour of Day of Date A | 提取给定日期的小时部分 | A |
Minute of Hour of Date A | 提取给定日期的分钟部分 | A |
Second of Hour of Date A | 提取给定日期的第二部分 |
相关内容
Kettle工具中Rest client组件的用法!!
https://blog.csdn.net/weixin_43932609/article/details/109988783
ETL工具kettle的Excel合并操作
https://blog.csdn.net/weixin_43932609/article/details/109326043
ETL工具kettle的插入更新操作
https://blog.csdn.net/weixin_43932609/article/details/109065366
ETL工具Kettle的发送邮件功能:
https://blog.csdn.net/weixin_43932609/article/details/108766325
ETL工具Kettle的列转行组件:
https://blog.csdn.net/weixin_43932609/article/details/108795244
ETL工具Kettle性能优化:
https://blog.csdn.net/weixin_43932609/article/details/108749304
=========================================================
人生得意须尽欢,莫使金樽空对月!
__一个热爱说唱的程序员。
今日份推荐音乐:杨何苏KeyNG《阴暗面》
=========================================================