Data Warehouse(1)
2023-03-03 本文已影响0人
山猪打不过家猪
1.Data Warehouse 结构
- 存储Store和计算(Datawarehouse,Databricks)是分离的
-
在不进行计算的时候,是不收取费用的,但是存储会收费
image.png - 功能:
Data Factory:用于从不同的数据源来提取数据
Data Lake: 将提取的各种形式的数据存储
Databricks: 用来处理数据,清洗数据
Data Warehouse: 处理完成的数据,可以放入在这里,供其他地方使用
2. Dedicated SQL pool
两种方式创建:
- 直接创建
- 使用Synapse Analytics
2.1 单独创建
-
创建服务器
image.png -
设置网络
image.png
2.2创建synapse
image.png-
创建
image.png -
创建信息
image.png
3.创建sqlpool并且使用
3.1创建一个sqlpool2
image.png创建成功后,我们可以在这里看到
image.png
3.2 添加创建表和载入数据的脚本
image.png3.3 导入脚本并且执行
image.png注意:在使用新的脚本的时候一定要记得切换数据库
image.png
4.从azure sql里移动数据到sqlpool里
-
创建
image.png -
添加任务
image.png
-
-
2.添加连接
image.png -
选择需要的表
image.png
-
-
4.移动sqlpool并且命名表明
image.png -
完成迁移
image.png
-
5. 本地数据上传到azure(032-)
5.1 创建Blob Storage Account并添加文件
-
创建账户
image.png
-
-
创建容器
image.png
-
-
添加容器
image.png
-
-
上传文件
image.png
-
- 使用资源管理查看文件
下载地址:azure.microsoft.com/en-us/features/storage-explorer/
image.png
- 使用资源管理查看文件
-
查看文件
image.png
-
5.2 用Polybius将文件从blob移动到azure data warehouse
-
1.在本地资源文件夹中可以找到2个文件
image.png - 用sqlserver连接azure
- 生成MASTER KEY
#1.生成master key
CREATE MASTER KEY
GO
-
创建数据库,用密钥
image.png
-
CREATE DATABASE SCOPED CREDENTIAL BlobStorageCredential
WITH
IDENTITY = 'blobuser',
SECRET = 'ZYfcNUnKJLRqDpZDwly1dUb8bsXe3NP8Ti4nLXCbd8jhYwEoWaBUohGN3cK4eQ0mCKr6WAEBAaUSQmY8b3hhzA=='
;
GO
- 创建外部数据源的连接
AzureBlobStorage
- 创建外部数据源的连接
CREATE EXTERNAL DATA SOURCE AzureBlobStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://demofiles@synapsestorage108.blob.core.windows.net',
CREDENTIAL = BlobStorageCredential
);
GO
其中: demofiles
是容器里的文档名,synapsestorage108
是容器的名称
BlobStorageCredential
是上面创建的库名
- 读取外部的csv文件
CREATE EXTERNAL FILE FORMAT CSVFileFormat
WITH
( FORMAT_TYPE = DELIMITEDTEXT
, FORMAT_OPTIONS ( FIELD_TERMINATOR = ','
, STRING_DELIMITER = ''
, DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss'
, USE_TYPE_DEFAULT = FALSE
)
);
GO
其中,FIELD_TERMINATOR
表示,csv字段终止符是,
STRING_DELIMITER
是分隔符,这里为空
USE_TYPE_DEFAULT
表示NAN不用默认的处理方式,直接为NULL
- 创建外部表来映射给blob存储容器
CREATE SCHEMA [stage];
GO
CREATE EXTERNAL TABLE [stage].FactTransactionHistory
(
[TransactionID] [int] NOT NULL,
[ProductKey] [int] NOT NULL,
[OrderDate] [datetime] NULL,
[Quantity] [int] NULL,
[ActualCost] [money] NULL
)
WITH
(
LOCATION='/FTH/'
, DATA_SOURCE = AzureBlobStorage
, FILE_FORMAT = CSVFileFormat
, REJECT_TYPE = VALUE
, REJECT_VALUE = 0
)
GO
image.png
这样就创建一个名为stage单独模式在外部表里,这是一个缓冲表,我们可以将最终的数据从找个缓冲表里移动到azure datawarehouse里
- 将数据从外部的stage表里移动到azure中
CREATE SCHEMA [prod];
GO
--DROP TABLE [prod].[FactTransactionHistory]
CREATE TABLE [prod].[FactTransactionHistory]
WITH (DISTRIBUTION = HASH([ProductKey] ) )
AS
SELECT * FROM [stage].[FactTransactionHistory]
OPTION (LABEL = 'Load [prod].[FactTransactionHistory1]');
image.png
- 查看这些数据在数据库总分布情况
DBCC PDW_SHOWSPACEUSED('prod.FactTransactionHistory');
在这个分布式系统中3百万行的数据被平均分配到60个子节点上
-
10.总结过程
image.png
6. 使用Data Factory迁移数据
image.png1.创建Data Factory
image.png
-
进入工厂面板,添加数据迁移
image.png
3.准备迁移据前的准备
1)创建与blob的连接
image.png
2)创建与azure synapse的连接
image.png
3)在Data warehouse里创建空表
image.png -
建立映射
image.png
5.设置
image.png -
迁移
image.png
8.导出数据
1.选择需要到的库
2.选择输出的类型
image.png
3.选择要导出的表
image.png