在寻找基于数据的弹性解决方案时,本文将引导通过回答一些棘手的问题来实现。本文中,将使用自助式分析工具在云服务中可视化和探索数据。是的,这一切都与Power BI和Azure SQL数据库有关。
首先,需要一个数据库来获取数据以创建洞察。要创建Azure数据库,请转到MS Azure主页并点击“创建资源”。拥有一个活跃的Azure订阅是创建Azure SQL数据库的先决条件。创建免费账户后,可以按照官方Azure SQL文档中的说明创建数据库。
之后,选择数据库并从数据库页面选择“查询编辑器(预览)”。
假设从各个组织获取数据,他们可以提交他们位置的地理数据。他们需要回答一些问题,评分从1到10,这将创建一些定量数据,将用这些数据创建区域地图。
为上述场景创建了一个样本架构,如下所示:
--创建组织表
CREATE TABLE Organisation
(
OrganisationId INT IDENTITY PRIMARY KEY,
Name NVARCHAR(128) NOT NULL,
HeadQuarters NVARCHAR(128),
Head NVARCHAR(128) NOT NULL,
Status TINYINT
)
--创建位置表
CREATE TABLE Location
(
LocationId INT IDENTITY PRIMARY KEY,
OrganisationId INT REFERENCES Organisation (OrganisationId),
Latitude NVARCHAR(256),
Longitude NVARCHAR(256),
Status TINYINT
)
--创建问题表
CREATE TABLE Question
(
QuestionId INT IDENTITY PRIMARY KEY,
Description NVARCHAR(256) NOT NULL,
Status TINYINT
)
--创建分数表
CREATE TABLE Score
(
LocationId INT REFERENCES Location (LocationId),
QuestionId INT REFERENCES Question (QuestionId),
Score DECIMAL(5,2) CHECK (Score <= 5.00),
Status TINYINT
)
接下来是添加数据...
如果想熟悉查询(选择、插入、删除等)Azure SQL数据库,可以按照的步骤进行。现在将从CSV文件加载数据到Azure SQL数据库。
使用了GLOBAL PEACE INDEX 2020的一些数据来填充问题表。选择了军事化领域和正在进行的国内外冲突领域的前25个和平国家和最不和平国家。从GPI领域分数中提取的样本数据可以在GitHub仓库中找到。
创建一个存储账户并将CSV文件加载到Azure存储账户的容器中。上传文件后,创建一个共享访问签名。然后点击生成SAS令牌和URL。然后复制Blob SAS令牌并返回到Azure SQL数据库。在这里使用数据库范围的凭据来访问Azure Blob存储,如下截图所示。
--创建数据库主密钥,如果尚未定义,请使用自己的密码。它用于在后续步骤中加密凭据秘密。否则跳过此步骤
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourStrong!Password' ;
--创建数据库范围的凭据。
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE' ,
SECRET = 'paste copied Blob SAS token here';
--创建外部数据源,带有CREDENTIAL选项。
--转到容器属性并复制位置URL
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH
( LOCATION = 'https://xxxxxxx.blob.core.windows.net/project1948',
CREDENTIAL = MyAzureBlobStorageCredential ,
TYPE = BLOB_STORAGE
) ;
如果查询成功,可以执行以下步骤将数据加载到指定的表中。
BULK INSERT [dbo].[Question] FROM 'question.csv'
WITH (
CHECK_CONSTRAINTS,
DATA_SOURCE = 'MyAzureBlobStorage',
DATAFILETYPE='char',
FIELDTERMINATOR=',',
ROWTERMINATOR='0x0a',
FIRSTROW=1,
KEEPIDENTITY,
TABLOCK
);
执行批量插入查询后,可以检查数据是否已正确加载。
类似地,在检查数据库中的外键约束后,可以将所有其他数据集加载到相应的表中。