Day007|常见数据类型

今天是Andy学Python的第7天哦! 


大家好,我是Andy。

为了便于理解,我将常用数据类型区分为:数值、字符串、布尔值、空值。

将数据结构理解为存放数据的容器,主要有:列表、元组、字典、集合。

图片

 

知识点

01.转义符

刚才知道,字符串是用一对单引号或双引号括起来的文本,如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如:

输入:'I\'m \"OK\"!'

输出:I'm "OK"!

常用转义符号及说明

\(在行尾时)

续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\b

退格符

\n

换行符

\r

回车符

\t

制表符

 02.空值

在Python中,None、空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False。除此之外的其它对象都会被转化成True。

python变量初始化为空值分别是:

数值

digital_value = 0

字符串

str_value = ""

列表

list_value = []

字典

ditc_value = {}

元组

tuple_value = ()

 

End

不会Python,将成为人工智能时代的新“文盲”!

欢迎加入零基础自学Python计划,未来100天,Andy会把自学Python学习笔记持续输出公众号、视频号,不定期更新,邀您观战、加油、评论,亦或围观Andy被打脸。

人到中年,你一定要努力,但千万别着急。

我是Andy,一个终身学习者。

# Hive中不常见但有用的数据类型 Hive除了支持常见的基本数据类型外,还提供了一些不太常用但功能强大的特殊数据类型,以下是主要介绍: ## 1. 复杂数据类型 ### UNIONTYPE (Hive 0.7.0+) ```sql -- 创建包含UNIONTYPE的表 CREATE TABLE union_demo ( id INT, flexible_data UNIONTYPE<int, double, string, array<string>> ); -- 插入数据语法 INSERT INTO TABLE union_demo SELECT 1, create_union(0, 100) FROM dual; -- int类型 INSERT INTO TABLE union_demo SELECT 2, create_union(2, 'text_value') FROM dual; -- string类型 ``` ## 2. 二进制类型 ### BINARY (Hive 0.8.0+) ```sql -- 存储二进制数据 CREATE TABLE binary_data ( id INT, image_data BINARY, serialized_obj BINARY ); -- 转换函数 SELECT base64(binary_column) FROM binary_table; ``` ## 3. 时间间隔类型 ### INTERVAL (Hive 1.2.0+) ```sql -- 时间间隔类型 SELECT INTERVAL '1' DAY + INTERVAL '2' HOUR; -- 在表中使用 CREATE TABLE time_events ( event_id INT, duration INTERVAL YEAR TO MONTH ); -- 间隔运算 SELECT event_id, duration * 2 AS doubled_duration FROM time_events; ``` ## 4. 特殊数值类型 ### DECIMAL(precision, scale) 高精度 ```sql -- 高精度金融计算 CREATE TABLE financial_data ( id INT, amount DECIMAL(38,18) -- 总共38位数字,18位小数 ); -- 强制精度转换 SELECT CAST(column AS DECIMAL(10,4)) FROM table; ``` ## 5. 半结构化类型 ### VOID (表示NULL类型) ```sql -- 显式声明NULL类型列 CREATE TABLE void_demo ( id INT, empty_column VOID ); -- 常用于UDF返回值 SELECT NULL AS void_result FROM table; ``` ## 6. 特殊集合类型 ### MAP<key_type, value_type> 高级用法 ```sql -- 多层嵌套MAP CREATE TABLE nested_maps ( user_id INT, preferences MAP<STRING, MAP<STRING, STRING>> ); -- 查询多层MAP SELECT user_id, preferences["display"]["theme"] AS user_theme FROM nested_maps; ``` ## 7. 实现注意事项 1. **序列化格式限制**: - UNIONTYPE需要TextFile、SequenceFile或ORC格式 - BINARY类型在Parquet中有特殊处理 2. **函数支持差异**: ```sql -- 部分函数对特殊类型有版本要求 SELECT reflect('java.util.UUID', 'randomUUID') AS uuid_binary -- 返回BINARY FROM dual; ``` 3. **性能考量**: - 复杂类型在Tez/Spark引擎下性能更好 - 嵌套过深会影响查询性能 ## 8. 实际应用案例 ### 场景:存储动态表单数据 ```sql CREATE TABLE dynamic_forms ( form_id INT, form_data UNIONTYPE< string, map<string,string>, array<map<string,string>> >, submission_time TIMESTAMP ); -- 混合类型查询 SELECT form_id, CASE WHEN form_data.type = 0 THEN CAST(form_data.value AS STRING) WHEN form_data.type = 1 THEN size(CAST(form_data.value AS MAP<STRING,STRING>)) ELSE -1 END AS data_metric FROM dynamic_forms; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值