●▲● **`double round(DOUBLE a)`**
-- 返回數字 a 四舍五入后的值
```sql
select round(1.5) from test; -- 結果為 2
select round(1.1) from test; -- 結果為 1
```
●▲● **`double round(DOUBLE a, INT d)`**
-- 返回數字 a 四舍五入到小數點后 d 位的值
```sql
select round(1.15, 1) from test; -- 結果為 1.2
select round(1.12, 1) from test; -- 結果為 1.1
select round(1.12, 3) from test; -- 結果為 1.12
select round(1.12, 0) from test; -- 結果為 1.0
select round(1.12, -1) from test; -- 結果為 0.0
```
●▲● **`bigint floor(DOUBLE a)`**
-- 對數字 a 向下取整
```sql
select floor(1.1) from test; -- 結果為 1
select floor(1.6) from test; -- 結果為 1
select floor(-1.1) from test; -- 結果為 -2
select floor(-1.6) from test; -- 結果為 -2
```
●▲●
**`bigint ceil(DOUBLE a)`**
**`bigint ceiling(DOUBLE a)`**
-- 對數字 a 向上取整
```sql
select ceil(1.1) from test; -- 結果為 2
select ceil(1.6) from test; -- 結果為 2
select floor(-1.1) from test; -- 結果為 -1
select floor(-1.6) from test; -- 結果為 -1
```
●▲●
**`double pow(DOUBLE a, DOUBLE p)`**
**`double power(DOUBLE a, DOUBLE p)`**
-- 返回 a 的 p 次方
```sql
select pow(-1, 2) from test; -- 結果為 1.0
select pow(0, 1.21) from test; -- 結果為 0.0
select pow(1.1, 2) from test; -- 結果為 1.2100000000000002
```
●▲●
**`double sqrt(DOUBLE a)`**
**`double sqrt(DECIMAL a)`**
-- 返回 a 的 平方根
```sql
select sqrt(4) from test; -- 結果為 2.0
select sqrt(1.21) from test; -- 結果為 1.1
select sqrt(-1) from test; -- 結果為 NULL
```
●▲● **`double abs(DOUBLE a)`**
-- 返回 a 的絕對值
```sql
select abs('-1.024') from test; -- 結果為 1.024
select abs('1.024') from test; -- 結果為 1.024
select abs(1.024) from test; -- 結果為 1.024
```
●▲●`double bround(DOUBLE a)`
-- 返回數字 a 高斯舍入后的值
-- 高斯舍入也稱銀行家舍入,簡單的說就是四舍六入五考慮,五后非空就進一,五后為空看奇偶,五前為偶應舍去,五前為奇要進一
<hr/>
```sql
-- 四舍
select bround(1.4) from test; -- 結果為 1.0
-- 六入
select bround(1.6) from test; -- 結果為 2.0
-- 五后非空就進一
select bround(1.51) from test; -- 結果為 2.0
-- 五前為偶應舍去
select bround(2.5) from test; -- 結果為 2.0
-- 五前為奇要進一
select bround(3.5) from test; -- 結果為 4.0
```
●▲●`double bround(DOUBLE a, INT d)`
-- 返回數字 a 高斯舍入到小數點后 d 位的值
<hr/>
```sql
-- 四舍
select bround(1.14, 1) from test; -- 結果為 1.1
-- 六入
select bround(1.16, 1) from test; -- 結果為 1.2
-- 五后非空就進一
select bround(1.151, 1) from test; -- 結果為 1.2
-- 五前為偶應舍去
select bround(1.25, 1) from test; -- 結果為 1.2
-- 五前為奇要進一
select bround(1.35, 1) from test; -- 結果為 1.4
```
●▲●
`double rand()`
`double rand(INT seed)`
-- 如果 seed 不指定,則返回 0 到 1 之間的隨機數
<hr/>
```sql
# 如果 seed 不指定,則返回 0 到 1 之間的隨機數
select rand() from test; -- 結果為 0.9811062452094043
# 如果 seed 指定了,隨機數是確定的,如:
select rand(2) from test; -- 結果為 0.7311469360199058
select rand(2020) from test; -- 結果為 0.6188119599189963
select rand(20201231) from test; -- 結果為 0.9412005456293369
# 一般使用 Unix 時間戳作為 seed
```
●▲●
`double exp(DOUBLE a)`
`double exp(DECIMAL a)`
-- 返回 e 的 a 次方
<hr/>
```sql
select exp(1) from test; -- 結果為 2.718281828459045
select exp(1.5) from test; -- 結果為 4.4816890703380645
select exp(2) from test; -- 結果為 7.38905609893065
select exp(0) from test; -- 結果為 1.0
select exp(-1) from test; -- 結果為 0.36787944117144233
```
●▲●
`double ln(DOUBLE a)`
`double ln(DECIMAL a)`
-- 返回以 e 為底,a 的對數
<hr/>
```sql
select ln(0) from test; -- 結果為 NULL
select ln(1) from test; -- 結果為 0.0
select ln(2) from test; -- 結果為 0.6931471805599453
select ln(2.718281828459045) from test; -- 結果為 1.0
```
●▲●
`double log10(DOUBLE a)`
`double log10(DECIMAL a)`
-- 返回以 10 為底,a 的對數
<hr/>
```sql
select log10(1) from test; -- 結果為 0.0
select log10(10) from test; -- 結果為 1.0
select log10(0.1) from test; -- 結果為 -1.0
```
●▲●
`double log2(DOUBLE a)`
`double log2(DECIMAL a)`
-- 返回以 2 為底,a 的對數
<hr/>
```sql
select log10(1) from test; -- 結果為 0.0
select log10(10) from test; -- 結果為 1.0
select log10(0.1) from test; -- 結果為 -1.0
```
●▲●
`double log(DOUBLE base, DOUBLE a)`
`double log(DECIMAL base, DECIMAL a)`
-- 返回以 base 為底,a 的對數
<hr/>
```sql
select log(1.1, 1.21) from test; -- 結果為 1.9999999999999982
select log(2, 4) from test; -- 結果為 2.0
select log(3.1, 5) from test; -- 結果為 1.4225162708181491
```
●▲●`string bin(BIGINT a)`
-- 返回 a 的 二進制表達式
<hr/>
```sql
select bin(-1024) from test; -- 結果為
1111111111111111111111111111111111111111111111111111110000000000
select bin(-1) from test; -- 結果為
1111111111111111111111111111111111111111111111111111111111111111
select bin(1) from test; -- 結果為 1
select bin(1024) from test; -- 結果為 10000000000
```
●▲●
`string hex(BIGINT a)`
`string hex(STRING a)`
`string hex(BINARY a)`
-- 如果參數 a 是整數,則返回十六進制表達式
<hr/>
```sql
select hex(16) from test; -- 結果為 10
select bin(-1024) from test; -- 結果為
select bin(-1024) from test; -- 結果為
select bin(-1024) from test; -- 結果為
```
如果參數 a 是字符串,則逐一將字符串中的每個字符對應的 ASCII 碼以十六
進制表示并返回,如:
```sql
select hex(16) from test; -- 結果為 10
select hex(11) from test; -- 結果為 B
select hex(-1) from test; -- 結果為 FFFFFFFFFFFFFFFF
```
●▲●`string unhex(STRING a)`
-- hex 的逆函數,以十六進制解釋參數 a ,并進行 ASCII 轉換,返回對應的字符
<hr/>
```sql
select unhex('41') from test; -- 結果為 A
select unhex('42') from test; -- 結果為 B
select unhex('4242') from test; -- 結果為 BB
```
●▲●
`string conv(BIGINT num, INT from_base, INT to_base)`
`string conv(STRING num, INT from_base, INT to_base)`
-- 將數字 num 或者字符串 num 從 from_base 進制轉換到 to_base 進制
<hr/>
```sql
select conv('1024', 10, 2) from test; -- 結果為 10000000000
select conv(1024, 10, 2) from test; -- 結果為 10000000000
select conv(10000000000, 2, 10) from test; -- 結果為 1024
select conv('A', 16, 10) from test; -- 結果為 1
```
●▲●
`int pmod(INT a, INT b)`
`double pmod(DOUBLE a, DOUBLE b)`
-- 返回 a 模 b 的值,pmod(a, b) 同 a % b
<hr/>
```sql
select pmod(10, 3) from test; -- 結果為 1
select 10 % 3 from test; -- 結果為 1
select pmod(10.1, 2.5) from test; -- 結果為 0.09999999999999964
select 10.1 % 2.5 from test; -- 結果為 0.09999999999999964
select pmod(10, 2.5) from test; -- 結果為 0.0
```
●▲●
`double sin(DOUBLE a)`
`double sin(DECIMAL a)`
-- 返回 a 的正弦值(a 以弧度為單位,1 弧度(rad)=57.29578 度(°))
<hr/>
```sql
select sin(1) from test; -- 結果為 0.8414709848078965
select sin(1 / 57.29578 * 90) from test; -- 結果為 0.9999999999999999
```
●▲●
`double asin(DOUBLE a)`
`double asin(DECIMAL a)`
-- 返回 a 的反正弦值( -1<=a<=1)
<hr/>
```sql
select asin(0.8414709848078965) from test; -- 結果為 1.0
select asin(1) * 57.29578 from test; -- 結果為 90.0000007648485
select asin(10) from test; -- 結果為 NaN
```
●▲●
`double cos(DOUBLE a)`
`double cos(DECIMAL a)`
-- 返回 a 的余弦值
<hr/>
```sql
select cos(1) from test; -- 結果為 0.5403023058681398
select cos(1 / 57.29578 * 120) from test; -- 結果為 -0.4999999845857585
```
●▲●
`double acos(DOUBLE a)`
`double acos(DECIMAL a)`
-- 返回 a 的反余弦值
<hr/>
```sql
select acos(0.5403023058681398) from test; -- 結果為 1.0
select acos(0.5) * 57.29578 from test; -- 結果為 60.00000050989901
```
●▲●
`double tan(DOUBLE a)`
`double tan(DECIMAL a)`
-- 返回 a 的正切值
<hr/>
```sql
select tan(1) from test; -- 結果為 1.5574077246549023
select tan(1 / 57.29578 * 45) from test; -- 結果為 0.9999999866508755
```
●▲●
`double atan(DOUBLE a)`
`double atan(DECIMAL a)`
-- 返回 a 的反正切值
<hr/>
```sql
select atan(1.5574077246549023) from test; -- 結果為 1.0
select atan(1) * 57.29578 from test; -- 結果為 45.00000038242425
```
●▲●
`double degrees(DOUBLE a)`
`double degrees(DECIMAL a)`
-- 弧度(rad)轉為度(°):1 弧度(rad)=57.29577951308232 度(°)
<hr/>
```sql
select degrees(1) from test; -- 結果為 57.29577951308232
```
●▲●
`double radians(DOUBLE a)`
`double radians(DOUBLE a)`
-- 度(°)轉為弧度(rad)
<hr/>
```sql
select radians(57.29577951308232) from test; -- 結果為 1.0
select radians(90) from test; -- 結果為 1.5707963267948966
```
●▲●
`int positive(INT a)`
`double positive(DOUBLE a)`
-- 返回 a
<hr/>
```sql
select positive(1) from test; -- 結果為 1
select positive(-1) from test; -- 結果為 -1
select positive(1.024) from test; -- 結果為 1.024
```
●▲●
`int negative(INT a)`
`double negative(DOUBLE a)`
-- 返回 -a
<hr/>
```sql
select negative(1) from test; -- 結果為 -1
select negative(-1) from test; -- 結果為 1
select negative(1.024) from test; -- 結果為 -1.024
```
●▲●
`double sign(DOUBLE a)`
`int sign(DECIMAL a)`
-- 如果 a 是正數,返回 1.0;如果 a 是負數,返回 -1.0;如果 a 是 0,返回 0.0
<hr/>
```sql
select sign(2) from test; -- 結果為 1.0
select sign(-2) from test; -- 結果為 -1.0
select sign(0) from test; -- 結果為 0.0
select sign(0) from test; -- 結果為 0.0
```
●▲●`double e()`
- 返回自然常數 e 的值
<hr/>
```sql
select e() from test; -- 結果為 2.718281828459045
```
●▲●`double pi()`
-- 返回圓周率 π 的值
<hr/>
```sql
select pi() from test; -- 結果為 3.141592653589793
```
●▲●`bigint factorial(INT a)`
-- 返回 a 的階乘(n!=1×2×3×...×(n-1)×n)
<hr/>
```sql
select factorial(3) from test; -- 結果為 6
select factorial(4) from test; -- 結果為 24
```
●▲●`double cbrt(DOUBLE a)`
-- 返回 a 的立方根
<hr/>
```sql
select cbrt(8) from test; -- 結果為 2.0
select cbrt(1.331) from test; -- 結果為 1.1
```
●▲●`T greatest(T v1, T v2, ...)`
-- 返回最大值(如果列表中有一個值為 NULL,則返回 NULL)
<hr/>
```sql
select greatest(2, 3) from test; -- 結果為 3
select greatest('11', '12', '9') from test; -- 結果為 9
select greatest(NULL, 1, 2) from test; -- 結果為 NULL
```
●▲●`T least(T v1, T v2, ...)`
-- 返回最小值(如果列表中有一個值為 NULL,則返回 NULL)
<hr/>
```sql
select least(2, 3) from test; -- 結果為 2
select least('11', '12', '9') from test; -- 結果為 11
select least(NULL, 1, 2) from test; -- 結果為 NULL
```
●▲●
```sql
int width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC
max_value, INT num_buckets)
```
-- 返回一個介于 0 和 num_buckets + 1 之間的整數(基于通過將[min_value,max_value]劃分為大小相等的區域來生成存儲桶);
如果 expr 小于 min_value 則返回 1,如果 expr 大于 max_value 則返回num_buckets + 1
<hr/>
```sql
select width_bucket(2, 1, 10, 5) from test; -- 結果為 1
select width_bucket(1, 2, 11, 5) from test; -- 結果為 1
select width_bucket(11, 1, 10, 5) from test; -- 結果為 6
```
- Hadoop
- hadoop是什么?
- Hadoop組成
- hadoop官網
- hadoop安裝
- hadoop配置
- 本地運行模式配置
- 偽分布運行模式配置
- 完全分布運行模式配置
- HDFS分布式文件系統
- HDFS架構
- HDFS設計思想
- HDFS組成架構
- HDFS文件塊大小
- HDFS優缺點
- HDFS Shell操作
- HDFS JavaAPI
- 基本使用
- HDFS的I/O 流操作
- 在SpringBoot項目中的API
- HDFS讀寫流程
- HDFS寫流程
- HDFS讀流程
- NN和SNN關系
- NN和SNN工作機制
- Fsimage和 Edits解析
- checkpoint時間設置
- NameNode故障處理
- 集群安全模式
- DataNode工作機制
- 支持的文件格式
- MapReduce分布式計算模型
- MapReduce是什么?
- MapReduce設計思想
- MapReduce優缺點
- MapReduce基本使用
- MapReduce編程規范
- WordCount案例
- MapReduce任務進程
- Hadoop序列化對象
- 為什么要序列化
- 常用數據序列化類型
- 自定義序列化對象
- MapReduce框架原理
- MapReduce工作流程
- MapReduce核心類
- MapTask工作機制
- Shuffle機制
- Partition分區
- Combiner合并
- ReduceTask工作機制
- OutputFormat
- 使用MapReduce實現SQL Join操作
- Reduce join
- Reduce join 代碼實現
- Map join
- Map join 案例實操
- MapReduce 開發總結
- Hadoop 優化
- MapReduce 優化需要考慮的點
- MapReduce 優化方法
- 分布式資源調度框架 Yarn
- Yarn 基本架構
- ResourceManager(RM)
- NodeManager(NM)
- ApplicationMaster
- Container
- 作業提交全過程
- JobHistoryServer 使用
- 資源調度器
- 先進先出調度器(FIFO)
- 容量調度器(Capacity Scheduler)
- 公平調度器(Fair Scheduler)
- Yarn 常用命令
- Zookeeper
- zookeeper是什么?
- zookeeper完全分布式搭建
- Zookeeper特點
- Zookeeper數據結構
- Zookeeper 內部原理
- 選舉機制
- stat 信息中字段解釋
- 選擇機制中的概念
- 選舉消息內容
- 監聽器原理
- Hadoop 高可用集群搭建
- Zookeeper 應用
- Zookeeper Shell操作
- Zookeeper Java應用
- Hive
- Hive是什么?
- Hive的優缺點
- Hive架構
- Hive元數據存儲模式
- 內嵌模式
- 本地模式
- 遠程模式
- Hive環境搭建
- 偽分布式環境搭建
- Hive命令工具
- 命令行模式
- 交互模式
- Hive數據類型
- Hive數據結構
- 參數配置方式
- Hive數據庫
- 數據庫存儲位置
- 數據庫操作
- 表的創建
- 建表基本語法
- 內部表
- 外部表
- 臨時表
- 建表高階語句
- 表的刪除與修改
- 分區表
- 靜態分區
- 動態分區
- 分桶表
- 創建分桶表
- 分桶抽樣
- Hive視圖
- 視圖的創建
- 側視圖Lateral View
- Hive數據導入導出
- 導入數據
- 導出數據
- 查詢表數據量
- Hive事務
- 事務是什么?
- Hive事務的局限性和特點
- Hive事務的開啟和設置
- Hive PLSQL
- Hive高階查詢
- 查詢基本語法
- 基本查詢
- distinct去重
- where語句
- 列正則表達式
- 虛擬列
- CTE查詢
- 嵌套查詢
- join語句
- 內連接
- 左連接
- 右連接
- 全連接
- 多表連接
- 笛卡爾積
- left semi join
- group by分組
- having刷選
- union與union all
- 排序
- order by
- sort by
- distribute by
- cluster by
- 聚合運算
- 基本聚合
- 高級聚合
- 窗口函數
- 序列窗口函數
- 聚合窗口函數
- 分析窗口函數
- 窗口函數練習
- 窗口子句
- Hive函數
- Hive函數分類
- 字符串函數
- 類型轉換函數
- 數學函數
- 日期函數
- 集合函數
- 條件函數
- 聚合函數
- 表生成函數
- 自定義Hive函數
- 自定義函數分類
- 自定義Hive函數流程
- 添加JAR包的方式
- 自定義臨時函數
- 自定義永久函數
- Hive優化
- Hive性能調優工具
- EXPLAIN
- ANALYZE
- Fetch抓取
- 本地模式
- 表的優化
- 小表 join 大表
- 大表 join 大表
- 開啟Map Join
- group by
- count(distinct)
- 笛卡爾積
- 行列過濾
- 動態分區調整
- 分區分桶表
- 數據傾斜
- 數據傾斜原因
- 調整Map數
- 調整Reduce數
- 產生數據傾斜的場景
- 并行執行
- 嚴格模式
- JVM重用
- 推測執行
- 啟用CBO
- 啟動矢量化
- 使用Tez引擎
- 壓縮算法和文件格式
- 文件格式
- 壓縮算法
- Zeppelin
- Zeppelin是什么?
- Zeppelin安裝
- 配置Hive解釋器
- Hbase
- Hbase是什么?
- Hbase環境搭建
- Hbase分布式環境搭建
- Hbase偽分布式環境搭建
- Hbase架構
- Hbase架構組件
- Hbase數據存儲結構
- Hbase原理
- Hbase Shell
- 基本操作
- 表操作
- namespace
- Hbase Java Api
- Phoenix集成Hbase
- Phoenix是什么?
- 安裝Phoenix
- Phoenix數據類型
- Phoenix Shell
- HBase與Hive集成
- HBase與Hive的對比
- HBase與Hive集成使用
- Hbase與Hive集成原理
- HBase優化
- RowKey設計
- 內存優化
- 基礎優化
- Hbase管理
- 權限管理
- Region管理
- Region的自動拆分
- Region的預拆分
- 到底采用哪種拆分策略?
- Region的合并
- HFile的合并
- 為什么要有HFile的合并
- HFile合并方式
- Compaction執行時間
- Compaction相關控制參數
- 演示示例
- Sqoop
- Sqoop是什么?
- Sqoop環境搭建
- RDBMS導入到HDFS
- RDBMS導入到Hive
- RDBMS導入到Hbase
- HDFS導出到RDBMS
- 使用sqoop腳本
- Sqoop常用命令
- Hadoop數據模型
- TextFile
- SequenceFile
- Avro
- Parquet
- RC&ORC
- 文件存儲格式比較
- Spark
- Spark是什么?
- Spark優勢
- Spark與MapReduce比較
- Spark技術棧
- Spark安裝
- Spark Shell
- Spark架構
- Spark編程入口
- 編程入口API
- SparkContext
- SparkSession
- Spark的maven依賴
- Spark RDD編程
- Spark核心數據結構-RDD
- RDD 概念
- RDD 特性
- RDD編程
- RDD編程流程
- pom依賴
- 創建算子
- 轉換算子
- 動作算子
- 持久化算子
- RDD 與閉包
- csv/json數據源
- Spark分布式計算原理
- RDD依賴
- RDD轉換
- RDD依賴
- DAG工作原理
- Spark Shuffle原理
- Shuffle的作用
- ShuffleManager組件
- Shuffle實踐
- RDD持久化
- 緩存機制
- 檢查點
- 檢查點與緩存的區別
- RDD共享變量
- 廣播變量
- 累計器
- RDD分區設計
- 數據傾斜
- 數據傾斜的根本原因
- 定位導致的數據傾斜
- 常見數據傾斜解決方案
- Spark SQL
- SQL on Hadoop
- Spark SQL是什么
- Spark SQL特點
- Spark SQL架構
- Spark SQL運行原理
- Spark SQL編程
- Spark SQL編程入口
- 創建Dataset
- Dataset是什么
- SparkSession創建Dataset
- 樣例類創建Dataset
- 創建DataFrame
- DataFrame是什么
- 結構化數據文件創建DataFrame
- RDD創建DataFrame
- Hive表創建DataFrame
- JDBC創建DataFrame
- SparkSession創建
- RDD、DataFrame、Dataset
- 三者對比
- 三者相互轉換
- RDD轉換為DataFrame
- DataFrame轉換為RDD
- DataFrame API
- DataFrame API分類
- Action 操作
- 基礎 Dataset 函數
- 強類型轉換
- 弱類型轉換
- Spark SQL外部數據源
- Parquet文件
- Hive表
- RDBMS表
- JSON/CSV
- Spark SQL函數
- Spark SQL內置函數
- 自定SparkSQL函數
- Spark SQL CLI
- Spark SQL性能優化
- Spark GraphX圖形數據分析
- 為什么需要圖計算
- 圖的概念
- 圖的術語
- 圖的經典表示法
- Spark Graphix簡介
- Graphx核心抽象
- Graphx Scala API
- 核心組件
- 屬性圖應用示例1
- 屬性圖應用示例2
- 查看圖信息
- 圖的算子
- 連通分量
- PageRank算法
- Pregel分布式計算框架
- Flume日志收集
- Flume是什么?
- Flume官方文檔
- Flume架構
- Flume安裝
- Flume使用過程
- Flume組件
- Flume工作流程
- Flume事務
- Source、Channel、Sink文檔
- Source文檔
- Channel文檔
- Sink文檔
- Flume攔截器
- Flume攔截器概念
- 配置攔截器
- 自定義攔截器
- Flume可靠性保證
- 故障轉移
- 負載均衡
- 多層代理
- 多路復用
- Kafka
- 消息中間件MQ
- Kafka是什么?
- Kafka安裝
- Kafka本地單機部署
- Kafka基本命令使用
- Topic的生產與消費
- 基本命令
- 查看kafka目錄
- Kafka架構
- Kafka Topic
- Kafka Producer
- Kafka Consumer
- Kafka Partition
- Kafka Message
- Kafka Broker
- 存儲策略
- ZooKeeper在Kafka中的作用
- 副本同步
- 容災
- 高吞吐
- Leader均衡機制
- Kafka Scala API
- Producer API
- Consumer API
- Kafka優化
- 消費者參數優化
- 生產者參數優化
- Spark Streaming
- 什么是流?
- 批處理和流處理
- Spark Streaming簡介
- 流數據處理架構
- 內部工作流程
- StreamingContext組件
- SparkStreaming的編程入口
- WordCount案例
- DStream
- DStream是什么?
- Input DStream與Receivers接收器
- DStream API
- 轉換操作
- 輸出操作
- 數據源
- 數據源分類
- Socket數據源
- 統計HDFS文件的詞頻
- 處理狀態數據
- SparkStreaming整合SparkSQL
- SparkStreaming整合Flume
- SparkStreaming整合Kafka
- 自定義數據源
- Spark Streaming優化策略
- 優化運行時間
- 優化內存使用
- 數據倉庫
- 數據倉庫是什么?
- 數據倉庫的意義
- 數據倉庫和數據庫的區別
- OLTP和OLAP的區別
- OLTP的特點
- OLAP的特點
- OLTP與OLAP對比
- 數據倉庫架構
- Inmon架構
- Kimball架構
- 混合型架構
- 數據倉庫的解決方案
- 數據ETL
- 數據倉庫建模流程
- 維度模型
- 星型模式
- 雪花模型
- 星座模型
- 數據ETL處理
- 數倉分層術語
- 數據抽取方式
- CDC抽取方案
- 數據轉換
- 常見的ETL工具