1. Prosto的可视化界面
在使用presto引擎的时候,可以通过可视化界面,来查看各项指标,地址通常是http://127.0.0.1:8080/ui/
2. excel中数字超过一定的位数,默认会使用科学计数法显示,如何取消?
a. 首先将格式设置为文本格式
b. 然后粘贴的时候,以文本的形式粘贴,即可。
(注: 当字段内容包含逗号时,应该选择文件存为.txt(制表符分隔)模式,否则会错误切割列。建表DDL应加上 FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' 来声明分隔符和换行符。)
常用的方法:
第一种: excel导入文本数据源(注意 分隔符的选用 和 列都是text格式 )
第二种: 就是上面a,b步骤,然后分列,后续步骤和第一种一样……
3. sql中null问题(有些数据库中值为空,显示的仍然是null,需要注意)
eg: 例如我想找出 name不是 “张三” 的所有信息
sql: select * from class where name <> '张三'
上面的sql是有问题的,name为空的就不能检索出来,需要加上 name is null 的语句,才能过滤出来,虽然是小知识点,还是要记录一下。
4. Presto注册函数
1. 检查jar内容
jar tf hive-exec-2.1.1-cdh6.1.0.jar|grep UDFJson
2. 把jar包上传到hdfs的目录中
hdfs dfs -put /data/app/services/temp_function/hive-exec-2.1.1-cdh6.1.0.jar /user/udf/hive-udf.jar
3. 注册函数
create function if not exists get_json_object(String,String) returns String location "/user/cloudera/lib/hive-udf.jar" SYMBOL="org.apache.hadoop.hive.ql.udf.UDFJson";
4. 查看函数
show functions;
5. 名词解释
adhoc-data : 特设的的数据, 会用于大数据平台的域名 https://zh.wikipedia.org/wiki/Ad_hoc
mis : 管理信息系统
6. 对账遇到的问题
在对账或者取数的过程中,会碰到一个在我看来比较常见的问题,就是从各个维度去做数据汇总的时候,会发现数据对不上,差的也不多,就是对不上。第一次遇到的时候,就是一点一点的找问题,大致会有如下几类:
1. 字段间不对等
理论上是对等的,但会因为历史原因,导致一对多,等等(这个可以测试看看,找业务或技术确认下)
2. 表之间连接有问题
字段关联的时候,可能字段内容为空,导致关联不上(可以进一步通过left join 表,字段 is null 找出来,看看是否这个问题)
3. 可能会丢掉条件
这个导致两个sql不对等,也会对不上,这个应该很少吧?
就像写代码一样,一直debug下去,问题肯定会找到的。
7. 关于数据同步的小问题
之前用kettle 同步数据的时候,会出现一个问题,就是业务那面更改数据的时候,类似于update_time字段不更新,导致数仓这面数据也不会更新(增量是用这个字段)。这个也是个坑,需要对表进行标准化,规范化。
(例如基础字段肯定要有,包括但不限于 id,插入时间,更新时间,数据状态等)
备注: 事实表最好每天都有个分区或者把历史数据进行归档,方便追溯历史数据状态。
8. 查看端口与应用
经常会用到,记一下。
第一步:查看12442端口的占用情况
netstat -ano|findstr 12442
第二步:查看任务
tasklist|findstr 8452
第三步:关闭进程
taskkill /f /pid 8452
9. sql小结
1. alter table A engine=InnoDB命令来重建表
2.
# like 创建表结构
use database;
create table tablename1
like
tablename;
# as 复制表
use database;
create table tablename1
as
select * from tablename ;
10. 同步问题
1. sqoop同步的时候,一直报下面的错
2. 查一下shell脚本
3. 经过一段时间排查,是因为脚本把空格读进去,导致sql查不出表名,jobs就为空了
4. 慢慢排查,缩小排查范围,问题会找出来的。
11. Excel内容合并(将多个Excel表中的sheet合并到同一个Excel中,并以原表名为sheet名)
'功能:把多个excel工作簿的第一个sheet工作表合并到一个excel工作簿的多个sheet工作表,新工作表的名称等于原工作簿的名称
Sub Books2Sheets()
'定义对话框变量
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'新建一个工作簿
Dim newwb As Workbook
Set newwb = Workbooks.Add
With fd
If .Show = -1 Then
'定义单个文件变量
Dim vrtSelectedItem As Variant
'定义循环变量
Dim i As Integer
i = 1
'开始文件检索
For Each vrtSelectedItem In .SelectedItems
'打开被合并工作簿
Dim tempwb As Workbook
Set tempwb = Workbooks.Open(vrtSelectedItem)
'复制工作表
tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)
'把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xlsx", "")
'关闭被合并工作簿
tempwb.Close SaveChanges:=False
i = i + 1
Next vrtSelectedItem
End If
End With
Set fd = Nothing
End Sub
12. Sql疑问
select id
, SUM(ID) over(ORDER BY ID range BETWEEN 1 preceding AND 2 following) as range_sum
from tmp_20210321_2
这个id是string类型的,换成int类型,红框内的数据就对
原因: 1. current row | UNBOUNDED PRECEDING | [num] PRECEDING AND UNBOUNDED FOLLOWING | [num] FOLLOWING| current row
2. range between [num] PRECEDING AND [num] FOLLOWING
要是数值型的,string类型无法进行加减!
13. sublime块模式(ctrl+v在linux的vim可以这样操作,在sub由于被粘贴占用,可以用ctrl+shift+l代替)
- 按住字母v,进入可视化模式(注意: 每行前面的空格要是一致的,否则块模式会乱)
- 键入ctrl+shift+l (L小写),shift+ i ,这个时候块模式移动到句首,输入即可
- Esc+A 或者 shift+$ 移到行尾,输入即可
14. apache下载
-- 修改文件名就行
https://downloads.apache.org/hive/
15. linux命令
find ../lib/ -name "mysql*"
16. Excel问题
怎么将这部分数据格式调为 常规呢,然后统计呢?
1. 找一块对等地方,将格式设为常规
2. 将图片中的数据,复制出来,然后在粘贴进1找的地方即可
17. Excel求累计百分比
笔数举例
1. 求出总笔数
2. 算出第一行的占比(第一行笔数/总笔数)
3. 算出第二行占比(第一行占比 + 第二行笔数/总笔数) 总笔数行I310要锁定
4. 最后,直接使用填充功能就可以将累计百分比计算好了
18. 数据问题
商户<> 自主商户 + 外包商户 大概率是关联的问题
19.合并列值 将一列的多个值合并成一行
oralce写法:
select WM_CONCAT(A.title) as citys from tmpcity A
sql server写法:
select stuff((select ','+A.title from tmpCity A FOR xml PATH('')), 1, 1, '') as citys
mysql写法:
select GROUP_CONCAT(A.title) as citys from tmpcity A; --默认的逗号分隔
select GROUP_CONCAT(A.title SEPARATOR ' ') as citys from tmpcity A; --用空格分隔
20. zk和hdfs可视化软件
zk: ZooInspector
hdfs: HDFS Explorer