解读SQL Server分析服务中的数据挖掘功能Word下载.docx
- 文档编号:4527209
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:12
- 大小:57.37KB
解读SQL Server分析服务中的数据挖掘功能Word下载.docx
《解读SQL Server分析服务中的数据挖掘功能Word下载.docx》由会员分享,可在线阅读,更多相关《解读SQL Server分析服务中的数据挖掘功能Word下载.docx(12页珍藏版)》请在冰点文库上搜索。
与群集算法相比,我更喜欢决策树算法,因为它可以根据决策树算法进行数据挖掘的结果创建新的“维”,我们可以将这些“维”纳入一个新的虚拟多维数据集,还可以用数据挖掘的结果浏览现有的维。
创建挖掘模型
创建挖掘模型,需要打开分析管理器(AnalysisManager),展开左边的树形浏览窗口,打开FoodMart2000数据库。
你将看到挖掘模型文件夹(挖掘模型定义了所挖掘的具体数据和根据该信息所做的预测类型。
),右击该文件夹,选择新挖掘模型(NewMiningModel)运行挖掘模型向导。
该向导首先要求选择是在关系型数据还是在多维数据集中进行数据挖掘。
选择Multidimensional后单击Next按钮。
然后选择要挖掘的数据集(在本例中选择Sale数据集)。
向导的第三步是选择数据挖掘算法,选择MicrosoftDecisionTrees(微软的决策树)后单击Next按钮。
y/us/e|et0
下一步就该选择数据挖掘容器了(容器是新挖掘多维模型挖掘的数据实体)。
选择Customers维和Name层。
下一步,选择所作预测的类型。
假设数据挖掘算法有输入输出,本例将用户的相关信息作为输入,年收入作为被预测的实体或输出。
年收入是Customer维中Name层的一个成员属性。
依次选择Amemberpropertyofthecaselevel(容器层的成员属性)―>
YearlyIncome,如图1所示。
CO#G8zH1d0
*b$DTU-sTG0
dOF7o$y0
下一步需要选择为预测年收入所需要用到的OLAP多维数据集中的那部分数据。
选中Customers维、Customers维中所有的层及Name层中Member属性下的所有层,如图2所示(这些都是缺省的设置)。
需要注意的是,YearlyIncome既是输入也是输出,这是因为我们正在训练挖掘模型。
为训练挖掘模型,算法需要正确的答案。
(如:
现有用户的实际年收入)
.|FgSoV0
(图2)
N*H?
bBw;
F3Wp0
点击Next按钮,创建一个OLAP维和一个虚拟多维数据集。
对话框设置按图3所示。
挖掘向导模式将根据Sales多维数据集创建一个虚拟多维数据集,增加一个名为PredictIncome的新数据挖掘维,点击Next后,为建立挖掘模型起个名字并决定是否立刻执行。
我们将建立的挖掘模型命名为IncomModel,点击Save按钮并立刻执行。
当点击Finish按钮后,分析服务将对数据进行处理,并在挖掘模型编辑器中显示挖掘的结果。
ITPUB个人空间hiFRBxDt
图4显示的就是OLAP挖掘模式编辑器,中间的窗口显示了结果决策树的几个结点(图5显示的是一棵完整的决策树)图4右上方标题为“ContentNavigator”(内容导航员)窗口用颜色表示数据密度,用图形的方式描述了整棵决策树,其中颜色越深就代表用户越多。
在中间的窗口,我选择了一个结点Customers.Name.MemberCard=Normal,该结点代表所有成员属性会员卡的值为Normal的用户。
中间靠右的窗口显示了该类别中用户不同年份年收入的条形图。
我们发现他们中的83%的人的收入介于10000美元至30000美元之间,这就意味着会员卡值为normal可以很好地预测这一收入水平的用户。
(我们对这一结论不应该感到意外,因为MemberCards属性是挖掘模型通过挖掘年收入和教育水平而创建的。
)
不使用分析管理器分析多维数据集
现在假设你从客户端应用程序分析TrainedIncome多维数据集,不具有OLAP管理员权限来运行分析管理器(AnalysisManager),就可以用下面的多维表达查询(MDX)来得到相同的条形图信息,查询将返回每一个收入水平符合“MemberCard=Normal”条件的用户编号。
查询首先创建一个持有普通成员卡的用户的集合(CustMembers),然后创建新的方法来统计符合当前所选收入水平的用户有多少。
WITHSET[CustMembers]as'
Filter([Customers].[Name].Members,notIsEmpty([Customers].CurrentMember))'
ITPUB个人空间8R:
ydv5F-~G)W*[$p
MEMBER[Measures].[CustCount]as'
Count(Filter([CustMembers],
fT1JVh&
jj+xY0 [Customers].CurrentMember.Properties("
YearlyIncome"
)=[YearlyIncome].CurrentMember.Name))'
ITPUB个人空间9k8EV!
]B3elG9~
SELECT{[Measures].[CustCount]}ONCOLUMNS,[YearlyIncome].[AllYearlyIncome].ChildrenONROWSFROM[TrainedIncome]ITPUB个人空间rd\)OX8j?
WHERE([PredictIncome].[All].[Customers.Name.MemberCard=Normal])
在客户端创建挖掘模型
尝试不同的挖掘模型,从其中找到效果最好的。
尽管目前的客户端应用程序还不支持这一功能,但用户希望在客户机端,而不是在服务器端创建挖掘模型。
客户分析程序需要支持这项功能,可以利用MDX扩展通过OLEDBforOLAP或ADOMD来创建挖掘模型。
在客户机端创建挖掘模型需要运行SQLServer企业版,因为该功能依赖于企业版的自定义累积功能。
本文发表于(编程入门)
用数据挖掘维创建虚拟数据集需要三个步骤。
第一,创建挖掘模型。
下面的命令生成一个挖掘决策树来根据用户的性别、婚姻和教育状况预测年收入。
CREATEOLAPMININGMODEL[LocalFindSalary]
!
`yJJe%E/kO;
eV0 FROM[Sales]
9ZH2chq+Xj4Y0 (
fW+`+ir!
z0 CASEITPUB个人空间+\%|[([d9F
DIMENSION[Customers]ITPUB个人空间[G4L^/KG
LEVEL[Name]ITPUB个人空间l)NE1O3KiV;
G
PROPERTY[Gender],
RZ^*U0lnaO9fsX0 PROPERTY[MaritalStatus],
b6J2tc&
W7m}0 PROPERTY[Education],ITPUB个人空间4By)H/zr&
c9e9w
PROPERTY[YearlyIncome]PREDICTITPUB个人空间2e5Zq#i+_5V"
^|c:
O
)ITPUB个人空间A%KR:
~7@r8ck
USINGMicrosoft_Decision_Trees
注意调用数据集名字的FROM语句和引出Customers维Name层的成员属性的每个PROPERTY关健字。
运行上面的命令后,就会得到一个空的挖掘模型,它对你的分析服务(AnalysisServices)连接是唯一的,也会与其它工作站共享。
(要创建共享的挖掘模型,需要用分析管理器或DSO编程接口)。
下面的命令是将Sales多维数据集中的数据送入挖掘模型。
这是一个简单的指定了挖掘模型名字的INSERTINTO语句:
INSERTINTO[LocalFindSalary]
最后,将根据挖掘模型、其它维以及从源多维数据集中引用的度创建一个虚拟多维数据集。
下面是创建多维数据集的代码:
CREATESESSIONVIRTUALCUBE[PredictIncomeCube]ITPUB个人空间pRN:
Dhh6S#`d3K
FROM[Sales]
okn%g5vQT:
Ha0 (ITPUB个人空间1\jN-}
a%_4^P
MEASURE[Sales].[UnitSales],
:
WN|4W+R5i0 DIMENSION[Sales].[Customers],ITPUB个人空间K9s(juJ#{ao&
C
DIMENSION[Sales].[Time],ITPUB个人空间0{)g0_3zaXb-s#g
DIMENSION[PredictIncome]NOT_RELATED_TO_FACTS
mx}6R7b%u@@0 FROM[LocalFindSalary]ITPUB个人空间LN&
h1Dp$u1CzQH|
COLUMN[Customers.Name.YearlyIncome]
)P(S#Cxzb0 )
在这一语句中,我仅仅使用了UnitSales度、Customers和Time维。
最后一个维━━PredictIncome是作为CREATEVIRTUALCUBE语句的一部分而创建的。
NOT_RELATED_TO_FACTS关键字让分析服务(AnalysisServices)知道该维不是由同多维数据集相关的表得来的,FROM和COLUMN子句进一步说明了在创建虚拟多维数据集时使用了挖掘模型和挖掘模型的预测实体。
ITPUB个人空间,r@ga6w
下面是用VisualBasic编写的用来演示上述的命令运行的一小段程序:
ConstsGUID_SCHEMA_SERVICE_PARAMETERSAsString="
{3ADD8A75-D8B9-11D2-8D2A-00E029154FDE}"
ITPUB个人空间;
d5ng$]sD3y(b
ConstsGUID_SCHEMA_MINING_SERVICESAsString="
{3ADD8A95-D8B9-11D2-8D2A-00E029154FDE}"
.B6VTpo0 ConstsGUID_SCHEMA_MINING_MODELSAsString="
{3ADD8A77-D8B9-11D2-8D2A-00E029154FDE}"
[Ai"
f-iw?
`0 ConstsGUID_SCHEMA_MINING_COLUMNSAsString="
{3ADD8A78-D8B9-11D2-8D2A-00E029154FDE}"
f"
f+A,s.W0 ConstsGUID_SCHEMA_MODEL_CONTENTAsString="
{3ADD8A76-D8B9-11D2-8D2A-00E029154FDE}"
|_9xF;
~bd|0 ConstsGUID_SCHEMA_MODEL_CONTENT_PMMLAsString="
{4290B2D5-0E9C-4AA7-9369-98C95CFD9D13}"
ITPUB个人空间jpQ,Cet
ITPUB个人空间)K_B4|5mzS!
Y
p
Dimm_connAsNewADODB.Connection
%y2h$C`2b(pa,Ik0
h$V9X&
]w,h'
P:
y'
A0 PrivateSubExecuteMDX(ByValv_sMDXAsString)ITPUB个人空间5j!
}+TLxP+|l
OnErrorGoToErrHandlerITPUB个人空间yF$gov@
ITPUB个人空间7Ge0G-?
'
Q9iW2]
DimcmdAsNewADODB.Command
-M%p1b(C?
&
UV0 DimrecAsRecordsetITPUB个人空间-U"
s#V!
c.E9n2R
DimnNumAsIntegerITPUB个人空间+yRb)cn4C0s
0yt"
c*e,_ImV1z(X0 Setcmd.ActiveConnection=m_conn
cWD&
wqJ0 cmd.CommandText=v_sMDX
rU7VaC"
L4Kl0 Setrec=cmd.Execute(nNum)
2j@_.b8a*O3Ks^_-s0
+`!
Tr9o9e0rm0 MsgBox"
CommandExecutedSuccessfully."
&
nNum&
"
rowsaffected."
vbOKOnly+vbInformationITPUB个人空间'
x+lf'
HYX
ExitSub
q'
I#uZ(}TG'
R0
+cs'
N2aEL0 ErrHandler:
$b7Mo3R1vc+I`0 MsgBoxErr.Description,vbExclamationITPUB个人空间Q9K3S9Ffo!
|
EndSub
0_I`&
Udu-`B.W0 ITPUB个人空间"
mq)nQB
PrivateSubForm_Load()
w6^u+UK~}b0 '
Specify.2ontheprovidersoonlySQL2000willwork
Kq{q0 '
ConnecttoaserveronthelocalPC.Changethisifyouareconnecting
)}PNw/`pf0 '
toanotherPCwithAnalysisServices.ITPUB个人空间|*|v!
Kq]s~
Callm_conn.Open("
PROVIDER=MSOLAP.2;
DataSource=LOCALHOST;
"
)ITPUB个人空间9V2Dq"
^n-O5H_sl
*Kk7?
#b-B}iz0 '
Createtheminingmodel
3hoK;
|Nxv0 CallExecuteMDX(_"
CREATEOLAPMININGMODEL[LocalFindSalary]"
_
*K+X"
P]_E&
ef0 "
From[Sales]"
"
("
CASE"
_ITPUB个人空间_`B;
C2]X$Ygs
"
Dimension[Customers]"
_ITPUB个人空间rZ`h5oE8t
Level[Name]"
UZP&
pAv%_:
d6D3g0 "
PROPERTY[Gender],"
_ITPUB个人空间K&
CcqW^c^
PROPERTY[MaritalStatus],"
_ITPUB个人空间%r9~Ec8^.Yn
PROPERTY[Education],"
6j5O%c:
~'
c0a0{\(X-T&
Z0 "
PROPERTY[YearlyIncome]PREDICT"
T,J:
~#hH-v0hW0`jO%[B0 "
)"
^3[9~M
V[k2^0 "
USINGMicrosoft_Decision_Trees"
|8p(jXm6^`0 ITPUB个人空间'
Y\3W7}{$tiuR"
I'
_M
'
FilltheminingmodelITPUB个人空间?
DtJl/v7rS
CallExecuteMDX("
INSERTINTO[LocalFindSalary]"
s(z;
@H?
W+uRWJ7L0
qi;
g!
{UptG(Q9e0 '
Createavirtualcubebasedontheminingmodel
F1`R}%I.G|*O0`0 CallExecuteMDX(_ITPUB个人空间2['
h'
Ve:
q|a/Zs
"
CREATESESSIONVIRTUALCUBE[PredictIncomeCube]"
OBW4uPna2oI0jh0 "
FROM[Sales]"
4I4C^)b,Z:
]/e)Ap0 "
_ITPUB个人空间%iLb'
j^qz?
MEASURE[Sales].[UnitSales],"
_ITPUB个人空间A._%Sb.U*C"
ie
DIMENSION[Sales].[Customers],"
_ITPUB个人空间BnKq(OxVop8^
DIMENSION[Sales].[Time],"
_ITPUB个人空间Z*kc&
T|(TaX;
j?
DIMENSION[PredictIncome]NOT_RELATED_TO_FACTS"
_ITPUB个人空间u?
]{$J(m8Kq
FROM[LocalFindSalary]"
3Z~3U5z_)[{0 "
COLUMN[Customers.Name.YearlyIncome]"
Mp7Bwe^N0 "
)"
)ITPUB个人空间VS`8`I
ZY*B3W2p%u
P(A,A0n/@]/nhe0 DimrecColsAsRecordset
VRLr_2Q8VB0 DimvtRestrictAsVariantITPUB个人空间%LV?
e'
}r:
J#Z
ITPUB个人空间xp{D1_Cy8f.](R
vtRestrict=Array(Empty,Empty,"
LocalFindSalary"
)ITPUB个人空间:
kE2K~_Ql$J
ITPUB个人空间kl6{"
y!
v
'
openthedataminingmodel'
scontentasarowsetITPUB个人空间s\0I)LZ!
KGnC$d$W
SetrecCols=m_conn.OpenSchema(adSchemaProviderSpecific,vtRestrict,sGUID_SCHEMA_MODEL_CONTENT)
N[(k`M
Cu0
YP5G{8jH\0 '
displayeachnodecaptionoftheresultingdecisiontree
-Dv
R-}kR{X;
r{0 DoWhileNotrecCols.EOF
J,@`W6z0 MsgBoxrecCols.Fields("
NODE_CAPTION"
).Value
$I~H6[%I0 recCols.MoveNextITPUB个人空间+I0\2l+e%TKf
d#]
LoopITPUB个人空间r{:
]pA/|,oRg
]KE@3d)jB+M0 m_conn.CloseITPUB个人空间\m)`0IX;
不幸的是你不得不使用这样的程序而不是MDX范例,因为命令的执行必须用到一个返回记录集
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 解读SQL Server分析服务中的数据挖掘功能 解读 SQL Server 分析 服务 中的 数据 挖掘 功能