前一篇文章SSIS 学习(2):数据流任务(上),介绍了如何创建一个简单的ETL包,如何通过一个简单的数据流任务,将一个文本文件的数据导入到数据库中去。这些数据都保持了它原有的本色,一个字符不多,一个字符地少导入,但是在实际应用过程中,可能很少有这种情况,就拿IisLog文件来说吧,其中包含有:请求成功的记录(sc-Status=200),也有请求失败的记录;有网页(比如:*.aspx、*.htm、*.asp、*.php等)、有图片、有样式表文件(*.CSS)、有脚本文件(*.js)等,可谓是鲜花与毒草并存,精华与糟铂同居啊,我们如何根据不同的需求,把其中的鲜花与精华提炼出来呢,这就是我们今天要讲的重点:数据流转换

  在进行数据流转换之前,我们先介绍一下使用场景:以IISLOG为依据,进行网站点击率分析(IP & PV 分析),具体需求如下:

  (1)分析一段时间内,网站点击率的变化趋势。同时还需要知道各个周未、各个节假日网站的流量情况。

  (2)分析一天内,各时段(以小时为单位)网站的压力情况。

  (3)了解网站客户群分别来自哪些国家,哪些地区。

  为了实现这些需求,我们建立了如下的数据模型,请看:

Integration Services学习(3):数据流任务(下)

   

代码
USE [IisLog]
GO
--建立事实表
CREATE TABLE [dbo].[IISLog](
    
[lngID] [bigint] NOT NULL,
    
[lngShopID] [int] NULL,
    
[lngDateID] [int] NULL,
    
[lngTimeID] [int] NULL,
    
[csDateTime] [datetime] NULL,
    
[lngIpID] [int] NULL,
    
[cIP] [varchar](30NULL,
    
[csUriStem] [varchar](1000NULL,
    
[csUriQuery] [varchar](1000NULL,
    
[scStatus] [varchar](30NULL,
    
[UserAgent] [varchar](255NULL,
    
[lngReferer] [int] NULL,
    
[csReferer] [varchar](1000NULL,
    
[csRefererKPI] [varchar](1000NULL,
    
[lngFlag] [int] NULL
ON [PRIMARY]

--IP库
CREATE TABLE [dbo].[dimIP](
    
[ID] [bigint] IDENTITY(1,1NOT NULL,
    
[ipSegment] [nvarchar](20NULL,
    
[strCountry] [varchar](20NULL,
    
[strProvince] [varchar](20NULL,
    
[strCity] [varchar](50NULL,
    
[strMemo] [varchar](100NULL,
 
CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED 
(
    
[ID] ASC
)
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
ON [PRIMARY]

--日期
CREATE TABLE [dbo].[dimDate](
    
[lngDateID] [int] NOT NULL,
    
[lngYear] [int] NULL,
    
[strMonth] [varchar](10NULL,
    
[dtDateTime] [datetime] NULL,
    
[strQuarter] [varchar](10NULL,
    
[strDateAttr] [varchar](10NULL,
    
[strMemo] [varchar](50NULL,
 
CONSTRAINT [PK_dimDate] PRIMARY KEY CLUSTERED 
(
    
[lngDateID] ASC
)
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
ON [PRIMARY]

--时间
CREATE TABLE [dbo].[dimTime](
    
[lngTimeID] [int] NOT NULL,
    
[lngHour] [int] NULL,
    
[strHour] [varchar](10NULL,
    
[strTimeAttr] [varchar](10NULL,
    
[strMemo] [varchar](50NULL,
 
CONSTRAINT [PK_dimTime] PRIMARY KEY CLUSTERED 
(
    
[lngTimeID] ASC
)
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ONON [PRIMARY]
ON [PRIMARY]

 

相关文章:

  • 2021-10-08
  • 2021-10-03
  • 2021-12-26
  • 2021-04-22
  • 2021-05-29
  • 2021-10-04
猜你喜欢
  • 2021-09-29
  • 2022-01-15
  • 2022-02-28
  • 2022-01-19
相关资源
相似解决方案