Databricks 入门之sql(二)常用函数

本文介绍了SQL中的关键功能,包括类型转换函数CAST,常用统计函数如SUM和AVG,取样方法,NULL值处理用COALESCE,以及探索复杂数据结构的EXPLODE和日期转换函数。

1.类型转换函数

使用CAST函数转换数据类型(可以起别名)

SELECT
  rating,
  CAST(timeRecorded as timestamp)
FROM
  movieRatings;

支持的数据类型有:

BIGINTBINARYBOOLEANDATE 、DECIMAL(p,s)、 DOUBLE、 FLOAT、 INT、 INTERVAL intervalQualifier、 VOID、 SMALLINT、 STRING、 TIMESTAMP、 TIMESTAMP_NTZ、 ARRAY、 MAP < keyType,valueType >、 STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, …]] >

 2.常见统计函数

SUM、AVG、SPLIT

SELECT sum(quantity) as totalQuantity,countryName
FROM sales

3.取样函数

3.1 随机排序并取前N条

SELECT * FROM DCDataRaw
ORDER BY RAND()
LIMIT 3;

3.2 从所有数据中取样N条

SELECT * FROM outdoorProductsRaw TABLESAMPLE (5 ROWS)

3.3 按比率抽样数据

SELECT * FROM outdoorProductsRaw TABLESAMPLE (2 PERCENT) ORDER BY InvoiceDate 

4.Null值填充 COALESCE

-- Description字段为null的填充为“Misc”
SELECT
  COALESCE(Description, "Misc") AS Description,
  SPLIT(InvoiceDate, "/")[0] month,
  SPLIT(InvoiceDate, "/")[1] day
FROM
  outdoorProductsRaw

5. explore函数单行拆多行 

复杂的数据类型可以通过explore来拆分多行。访问深层的数据可以直接点 “.” 或[key]来查询。

-- source是key value键值对map数据
select source from DCDataRaw;

-- EXPLODE 与数组和映射表达式的元素一起使用。 
当与数组一起使用时,它将元素分成多行。
 与映射一起使用(如本例所示),它将映射的元素拆分为多行和多列,
并使用默认名称、键和值来命名新列。 
该数据结构被映射为每个键(某个设备的名称)保存一个对象(值),其中包含有关该设备的信息。

SELECT EXPLODE (source)
FROM DCDataRaw;

 

通过点“.”来查询深层数据

SELECT            
  key,
  value.description,  
  value.ip,
  value.temps,
  value.co2_level
FROM               
  ExplodeSource;  

 通过[key]查询

SELECT       
    dc_id,
    to_date(date) AS date,
    source['sensor-igauge']
FROM
    DCDataRaw

6.日期转换, 字符串转日期类型:to_date,日期转字符串类型date_format

-- 字符串转日期格式
SELECT
  to_date(sDate, "MM/dd/yy") date
FROM
  standardDate

-- 日期转字符串格式
SELECT
  date_format(date, "E") day
FROM
  salesDateFormatted

6.1 查询周几 dayofweek

select dayofweek(eventDate) as dayWeek from purchaseEvents

更新中....

### Databricks ETL 工具及其数据处理方案 Databricks 是一种强大的数据分析平台,支持大规模数据处理和机器学习工作流。其内置的ETL(Extract, Transform, Load)功能可以通过多种方式实现复杂的数据转换操作[^1]。 #### 1. Delta Lake 支持下的 ETL 流程 Delta Lake 是 Databricks 平台的核心组件之一,专为可靠性和性能优化设计。通过 Delta Lake,可以构建高效的 ETL 管道来处理结构化、半结构化和非结构化的数据。以下是基于 Delta Lake 的典型 ETL 处理流程: - **提取 (Extract)**: 利用 Spark SQL 或 Python/Scala 脚本从各种源系统读取原始数据,例如数据库、云存储服务(如 Azure Blob Storage)、API 等。 - **转换 (Transform)**: 借助 PySpark 或 Scala 编写复杂的业务逻辑以清洗、聚合或标准化数据。此外,还可以利用内置函数库完成日期解析、字符串操作等常见任务。 - **加载 (Load)**: 将经过加工后的高质量数据保存到目标位置,比如企业级数据仓库或者用于实时查询的交互式表单中。整个过程中始终保持着 ACID 特性以保障事务一致性[^4]。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder.appName("ETL Example").getOrCreate() # Extract data from source source_df = spark.read.format("csv").option("header", "true").load("/path/to/source") # Transform the dataset using DataFrame API or SQL queries transformed_df = source_df.filter(source_df["age"] > 20).groupBy("gender").count() # Save results into a delta table for further analysis transformed_df.write.format("delta").mode("overwrite").saveAsTable("clean_data.gender_counts") ``` #### 2. Data Flow 图形界面简化开发体验 对于那些希望减少编程负担的技术人员来说,Azure Data Factory (ADF) 提供了一种无需编写代码即可创建高级别的数据集成流水线的方法——即所谓的 “Code-Free” 方法。虽然 ADF 底层依然运行于 Databricks 集群之上,但它隐藏了许多底层细节从而降低了入门门槛并提高了生产力。 然而值得注意的是,在某些情况下过度依赖自动生成的结果可能引入潜在风险;因为即使像 ChatGPT 这样的先进 AI 模型也可能误解需求甚至破坏原有架构稳定性[^2]。因此建议始终保持人工审查环节确保最终产出符合预期标准。 #### 3. 安全性考量与最佳实践 当涉及到多租户场景下敏感信息保护时,则需特别注意遵循严格的安全策略。借助 Unity Catalog 功能模块,不仅可以定义精细粒度的角色权限控制机制防止未授权访问行为发生,而且还能灵活适应不同类型的组织管理模式需求[^3]。 综上所述,无论是追求极致效率还是注重用户体验层面考虑,Databricks 及其关联产品都能很好地满足各类用户的多样化诉求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值