首页 > 数据库 >sql函数

sql函数

时间:2024-08-30 09:04:28浏览次数:9  
标签:COMMENT STRING sql date deserializer day string 函数

1. presto:
1. array_position(applist_install, 'com.funtomic.matchmasters') > 0
2. split('joyit_daily_mas_cleaner','_')[3]—>presto 从1开始计位(spark从0开始计位)
3. 日期diff:
1. DATE_DIFF('day', DATE_PARSE('20220301', '%Y%m%d'), DATE_PARSE('20220313', '%Y%m%d'))
2. date_diff('day',to_date(datepart,'yyyy-mm-dd'),current_date)=1
4. 日期转化:
+8小时 :format_datetime((cast(create_time as timestamp) + interval '8' hour),'yyyyMMdd') ='20230927'
每月最后一天 :last_day_of_month(to_date(dt,'yyyymmdd')

split_part(try_cast(from_unixtime((try_cast(event_time AS double)+8*60*60*1000)/1000) AS varchar),':',1)
1. 删除分区 :
	1. ALTER TABLE table_name DROP IF EXISTS PARTITION(year = 2015, month = 10, day = 1);
2. 修改表名 alter table name rename to new name
3. 修改字段名:Alter table table_name  change column 原字段名称  现字段名称  数据类型
4. 新增字段名  alter table detail_flow_test add columns(original_union_id string);
5. 查询是否字符是否包含 select strpos(addr,'北京')
6. json解析 select json_extract(feild,'$.name') as feild_name
7. 去重列转行:array_sort(array_distinct(array_agg(字段名)))
8. 展示存储地址 :show create table 表名

****2. spark
1. 动态分区要放在静态分区之后写入
2. MSCK REPAIR TABLE 修复分区
3. collect_set :将多个值汇总到一行
4. 建iceberg表: using iceberg partitioned by (dt)
5. array_contains(applist_install, 'com.funtomic.matchmasters')
6. 每月最后一天 last_day(to_date('20230727','yyyyMMdd'))

	1. 建表(csv格式的)
CREATE EXTERNAL TABLE analyst.huanglu_test  
(
`nation` string COMMENT 'from deserializer',
`beyla_id` string COMMENT 'from deserializer',
`push_launch_pv` bigint COMMENT 'from deserializer',
`other_launch_pv` bigint COMMENT 'from deserializer',

`extra1` string COMMENT 'from deserializer',
`extra2` string COMMENT 'from deserializer',
`extra3` string COMMENT 'from deserializer'
)
PARTITIONED BY (`dt` string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ('separatorChar' = ',','quoteChar' = '\"','escapeChar' = '\\')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://da.results.prod.us-east-1/huanglu/temp/test_20200529改一改这里'  ---3 这行要修改
TBLPROPERTIES ('has_encrypted_data'='false','skip.header.line.count'='1')
	1. 建表(mongodb json格式的)
CREATE EXTERNAL TABLE  game_ue1.ods_gameet_pp_feedback(
  `_id` STRING,
  u STRING,
  app STRING,
  uc STRING,
  i STRING,
  obj STRING,
  cont STRING,
  imgs STRING,
  star double,
  biz STRING,
  ct BIGINT
) PARTITIONED BY (datepart STRING)
 ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
 WITH SERDEPROPERTIES ('serialization.format' = '1') 
 STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' 
 OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
 LOCATION 's3://game.data.us-east-1/data_analyst/server_ods/ods_gameet_pp_feedback'

	1. 时间戳转化:

select from_unixtime(unix_timestamp('20230515' ,'yyyyMMdd'), 'yyyy-MM-dd')
cast(create_time as timestamp) + interval '8' hour 增加8小时
select from_unixtime(cast ('1668009600000' AS bigint)/1000+ 86060,'yyyy-MM-dd')
from_unixtime(unix_timestamp(cast(create_time as timestamp) + interval '8' hour ,'yyyyMMdd'),'yyyyMMdd')

	1. 动态分区
		1. 注意迁移数据的时候需要把分区字段放在最后select出来

set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=nonstrict

3. 累计求和

sum(order_pv)OVER (partition by pp_user_id,item_id,item_type,stage
ORDER BY datepart ASC)

**3 tableau**
1. 最大年月:{MAX(DATETRUNC('day',date))}
2. 星期几:DATENAME('weekday', [YourDateField])
3. 根据不同类型日期范围截断:
	1. DATETRUNC('date_part', date_expression, [start_of_week])
		1. 'date_part' 是指定截断到的时间单位,例如 'year'(年)、'quarter'(季)、'month'(月)、'week'(周)、'day'(日)等。
4. 日期格式:DATEPARSE('yyyy-MM-dd', '2023-01-15')
5. 指定动态分区刷新:--conf spark.sql.sources.partitionOverwriteMode=dynamic
6. spark的参数不需要加set:--conf hive.exec.dynamic.partition.mode=nonstrict
(动态分区严格模式下至少需要一个静态列,所以这时候如果使用动态分区需要增加这个参数)

标签:COMMENT,STRING,sql,date,deserializer,day,string,函数
From: https://www.cnblogs.com/iris0928/p/18387916

相关文章

  • mysql 主从复制原理
    主从形式 mysql主从复制灵活一主一从主主复制一主多从---扩展系统读取的性能,因为读是在从库读取的;多主一从---5.7开始支持联级复制---  用途及条件 mysql主从复制用途实时灾备,用于故障切换读写分离,提供查询服务备份,避免影响业务 主从部署必要条件:......
  • 批量杀死MySQL连接的几种方法
    一:通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件,然后执行临时文件中生成的指令。 mysql>selectconcat('KILL',id,';')frominformation_schema.processlistwhereuser='root';+------------------------+|concat('K......
  • MySQL sys性能监控
    1.基础介绍 MySQL5.7引入了sysschema,有了它,我们排查分析一些问题时将更得心应手。sysschema里主要存储的是视图、存储过程、函数等。在mysql的5.7版本中,性能模式是默认开启的,如果想要显式的关闭的话需要修改配置文件,不能直接进行修改。 查看performance_schema的属性my......
  • 科普文:软件架构数据库系列之【MySQL存储引擎InnoDB】
    概叙科普文:软件架构数据库系列之【MySQL前世今生及其体系结构概叙】-CSDN博客前面我们梳理了MySQL体系结构,涉及到innodb的并未进行详细说明,故在此文中进行补充说明。为了更好的理解Innodb,这里还是和前面MySQL体系结构一文中一样,保持一样的结构。重复的章节就不再描述,重点描......
  • sqlsugar 封装 单例模式 多数据库
    #PlayGround\.config\dotnet-tools.json{"version":1,"isRoot":true,"tools":{"csharpier":{"version":"0.29.1","commands":["dotnet-csharpi......
  • MySQL WAL机制详解
    目录:是什么undologRedoLog 与BinlogRedolog三种状态redolog 的持久化Binlog三种格式三种状态binlog 的持久化两者的联系状态Crash-Safe 能力三步提交的参数配置组提交优化" 三步提交"三步提交过程总结三个日志的比较(undo、redo、bin) ......
  • MySQL 支持两种主要类型的备份方法:物理备份和逻辑备份。这两种备份方法各有优缺点,适用
    物理备份物理备份是指直接备份MySQL数据库的物理文件,包括数据文件、日志文件、配置文件等。物理备份通常分为冷备份(脱机备份)和热备份(联机备份)。冷备份(ColdBackup)定义: 在数据库完全停止的情况下进行的备份。特点:  简单快速,因为只需复制文件。可以在任何时间点进行。不需要锁......
  • 开窗函数汇总
    Function(arg1)over(partitionbyargorderbyarg<windows_expression>)1.窗口函数over()后面的为窗口函数,sum这种为分析函数.over():指定分析函数工作的数据窗口大小,窗口会随着行进行变化.window_express:窗口的边界设置.默认:[rowsbetweenunbo......
  • 禁用时钟中断并不直接保证中断处理函数能够不受时钟干扰即时执行
    实际上,关闭系统定时器(或更准确地说是禁用时钟中断)并不直接保证中断处理函数能够“不受时钟干扰即时执行”。相反,这种做法可能会带来一系列问题,包括影响系统的任务调度、时间管理、以及可能破坏其他依赖于时钟中断的功能。在Linux系统中,时钟中断(也称为节拍器中断或tick中断)扮演着......
  • C语言基础——函数详解
    目录 函数的概述1函数的概念2函数的意义 函数的定义和使用1函数的定义2函数的调用2.1在同一文件中函数定义后函数调用2.2在同一文件中函数定义前函数调用2.3调用其它文件中定义的函数2.3.1在函数调用文件中进行声明2.3.2在头文件中进行函数的声明 函......