Beruflich Dokumente
Kultur Dokumente
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
CubosdedatosenSQLServer2008AnalysisServices
(Artculopublicadopreviamenteenelnmero77dedNM+)
Resultaunhechoinnegablequeenlosltimostiempos,elvolumendedatosquelasorganizacionesdeben
manejarhaaumentadodesmesuradamente.Analizartalcantidaddedatos,conelobjetivodetomardecisiones
estratgicassehaconvertidoenunautnticoproblema.Enelpresenteartculorealizaremosunaintroduccina
loscubosdedatosenSQLServer2008AnalysisServices,unapotenteherramientaconlaquepodemos
transformaringentescantidadesdedatoseninformacindeutilidad.
Lamasificacindedatosenlossistemasdeinformacindeunacompaa,sinlaadecuadaorganizacinni
estructuracin,puedeacarrearefectosnegativostalescomolentitudenelanlisisdesuestado,oloqueespeor,
latomadedecisionesestratgicasinadecuadas,yaqueelhechodedisponerdemillonesderegistrosrepartidos
enmltiplesorgenesdedatosheterogneos(basesdedatosSQLServer,Access,archivosdetextoplano,Excel,
etc.),notieneporqueserentodosloscasossinnimodeunsistemaqueproporcioneinformacindecalidad.
Parasolventarestetipodeproblemas,enSQLServercontamos,desdehaceyaalgunasversiones,conlos
ServiciosdeAnlisis(SQLServerAnalysisServicesoSSAS)oherramientasdeInteligenciadeNegocio(Business
IntelligenceoBI),cuyoexponenteprincipal,elcubodedatos,permitegenerarinformacinparaanalizarelestado
delaempresaapartirdelconjuntodesusfuentesdedatos.
Aspectosconceptuales
Desdeunaperspectivaconceptual,uncubodedatosesunapiezamsenelengranajedeunsistemade
informacindenominadoalmacndedatos(datawarehouse).Elcuboestdotadodeunamaquinariainternaque
lepermiteprocesarelevadosvolmenesdedatosenunperiodorelativamentecortodetiempo,ycuyoobjetivoes
siemprelaobtencindeunresultadonumrico(importesdeventas,gastos,cantidaddeproductosvendidos,
etc.).Estosresultadospuedencambiarenfuncindeunoovariosfiltrosqueapliquemossobreelcubo.Eltiempo
derespuestaesmnimograciasaqueelmotordeprocesamientodelcuborealizaunclculopreviodelasposibles
combinacionesderesultadosqueelusuariopuedesolicitar.Alosdiferentesresultadosnumricosobtenidosseles
denominamedidas,mientrasqueloselementosutilizadosparaorganizar/filtrarlainformacinrecibenelnombre
dedimensiones.
Representadogrficamente,uncubodedatossemostraracomolaformageomtricadelacualtomasunombre,
particionadohorizontalyverticalmenteenunaseriededivisionesquedanlugaramltiplesceldasocasillas,las
cualesidentificancadaunodelosposiblesresultadosdelasmedidas,obtenidosporlainterseccinencadacelda
delasdimensionesqueconformanelcubo.Lasiguientefiguramuestradicharepresentacingrficadeuncubo,
coninformacindeventasporproductos,empleadosymonedas.Enlosladosdelcubosesitanlasdimensiones,
cuyocruceproducelosresultadosnumricosenlasceldas.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
1/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Observandolafiguraanterior,ellectorpuedepensarqueelnmerodedimensionesenuncuboestlimitadoa
lasquepodemosrepresentaratravsdedichaformageomtrica.Nadamslejosdelarealidad,yaqueuncubo
puedesoportarunaelevadacantidaddedimensiones,quepermitencubrirsobradamentelosrequisitosdela
informacinaobtener.
Elementosprincipalesenunalmacndedatos
Comohemosmencionadoanteriormente,uncubodedatosesunadelaspiezasdeunaarquitecturams
compleja:elalmacndedatos,encuyoprocesodecreacinestninvolucradosdiversoscomponentes,quesern
losencargadosdetomareldatooriginalenbrutoypulirlohastaconvertirloeninformacinlistaparasuanlisis.
Acontinuacinvemosundiagramaconlasfasesdeesteprocesodetransformacin.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
2/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Descritoesteprocesoagrandesrasgos,enprimerlugarserealizaunaoperacindeextraccin,transformaciny
carga(Extract,Transform&LoadoETL)desdelasfuentesdedatosorigen,situadasenelreaoperacional,auna
basededatosqueseencuentraenelreadeintegracin,utilizandoparaellopaquetesdelosServiciosde
Integracin(SQLServerIntegrationServicesoSSIS),loscualesrealizarntambintareasdedepuracinde
datos.
Acontinuacinpasaramosalafasedeconstruccindelcubo,quedesarrollaremosutilizandolasherramientasde
losserviciosdeanlisis(SSAS).Finalmente,llegaremosalafasedeaccesoaloscubosporpartedelosusuarios
finales,paraloqueexistendiversosproductostalescomoReportingServices(SSRS),Excel,etc.
Elementosfsicos.Tablasdehechosydimensiones
Anivelfsico,paraconstruiruncubodedatosnecesitamosunabasededatosquecontengaunatabla
denominadatabladehechos,cuyaestructuraestarformadaporunaseriedecampos,denominadoscamposde
medida,apartirdeloscualesobtendremoslosresultadosnumricosdelcuboyporotrolado,unconjuntode
campos,denominadoscamposdedimensin,queutilizaremosparaunirconlastablasdedimensiones,afinde
poderobtenerresultadosfiltradosporlasdiversasdimensionesdequeconsteelcubo.
Elotropilarfundamentalparalacreacindeuncubolocomponenlastablasdedimensiones.Paracada
dimensinocategoradeconsulta/filtroqueincorporemosanuestrocubonecesitaremosunatabla,queuniremos
conlatabladehechosporuncampoclave.Estatabladedimensionesactuarcomocatlogodevalores,tambin
denominadosatributos,queusaremosdeformaindependienteocombinadosconotrasdimensiones,paraobtener
resultadosconunmayorgradodeprecisin.
Desarrollandouncubodedatos
Unavezexplicadaslasnocionesbsicasnecesarias,entramosenlaparteprcticadelartculo,donde
desarrollaremosnuestropropiocubodedatos.Centraremostodosnuestrosesfuerzosexclusivamenteenla
creacindelcubo,sinabordaraqulasoperacionesdeextraccin,transformacinycarga,queseranrealizadas
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
3/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
mediantepaquetesSSIS,yaqueestosltimossonaspectosquequedanfueradelmbitodeesteartculo,
quedandopendientesparaunafuturaentrega.
Enprimerlugar,desdeelmendeWindowsiniciaremosSQLServerBusinessIntelligenceDevelopmentStudio,
cuyoaccesodirectoseencuentraenelgrupodeprogramasMicrosoftSQLServer2008R2.Setratadeuna
versinespecialdeVisualStudiopreparadaparadesarrollarproyectosdeBI,encuyodilogoinicial
seleccionaremoscomotipodeproyectoAnalysisServicesProject,alquedaremoselnombreCuboDatosAdvWorks.
Acontinuacin,haciendoclicderechoenelnodoDataSourcesdelExploradordeSoluciones,seleccionaremosla
opcinNewDataSource,queabrirelasistenteparacrearlafuentededatosdelcubo,yqueennuestrocaso
serlabasededatosdepruebaAdventureWorksDW2008,cuyaestructurayaseencuentrapreparadaparaser
utilizadaeneldiseodecubosdedatos.
Dejaremoslasopcionespordefectoenelasistentehastallegaralpasocorrespondientealaconexincontrala
fuentededatos,dondeseleccionaremosAdventureWorksDW2008.Alllegaralpasofinaldeesteasistente
veremosunresumendelafuentededatosquehemoscreado.
Nuestrosiguientepasoconsistirencrearunavistadelafuentededatos,quenospermitir,comosunombre
indica,definirunavisualizacinpersonalizadasobrelabasededatos,incluyendoaquellastablasquenecesitemos
paracrearelcubo.
Loqueenestecubodeejemplovamosamedireselimportedelasventasquelosdistribuidoresdelacompaa
AdventureWorkshanfacturado,pudiendoconsultar/filtrarlosresultadosporeltipodemonedaenqueseha
realizadolaventa,yelreageogrficaalaquesehaenviadoelpedido.Paraelloutilizaremoslatabla
FactResellerSalescomotabladehechos,siendoDimCurrencyyDimSalesTerritorylastablasdedimensin.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
4/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
HaciendoclicderechoenelnodoDataSourceViewsdelExploradordeSolucionesseleccionaremoslaopcinNew
DataSourceView,queabrirunasistenteencuyoprimerpasoelegiremoslafuentededatosrecincreada,yen
elsegundolastablasqueacabamosdemencionar.
Finalizadoesteasistenteaparecersuventanadediseo,enlaquevemosundiagramadelastablas
seleccionadas,conlasrelacionesexistentesentrelasmismas.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
5/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Creacindedimensiones.Dimensinbsica
Elsiguientepasoconsistirencrearladimensinquenospermitirconsultar/filtrarlainformacindelcuboporel
tipodemonedaconelqueserealizelpagodelpedido.HaciendoclicderechoenelnodoDimensionsdel
ExploradordeSolucionesseleccionaremoslaopcinNewDimension,inicindoseelconsabidoasistente,cuyo
primerpaso,SelectCreationMethod,dejaremosconlaopcinpredeterminadaUseanexistingtable.Alentraren
elpasoSpecifySourceInformation,treslistasdesplegablesnospermitirnconfigurarlainformacinaobtener
paraladimensin:conMaintableelegiremoslatablaqueutilizaremosenladimensin:DimCurrencyconKey
columnsindicaremoslaclaveprimariayfinalmente,conNamecolumnseleccionaremoselcampoCurrencyName,
queidentificarelatributoavisualizar.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
6/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
EnelpasoSelectDimensionAttributes,elasistentenosofrecerCurrencyKeycomoatributodeladimensin,el
cualutilizaremos,perocambiandosunombreaCurrency.Unatributoesuncampo,normalocalculado,
pertenecientealatabladedimensin,quesemostrarcomounaetiquetaencualquierlugarenelquela
dimensinparticipecomopartedeunaconsultacontraelcubodedatos.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
7/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
AlllegaralltimopasodaremoselnombreCurrencyaladimensinyfinalizaremoselasistente,mostrndoseel
diseadordedimensionesconlaestructuraqueacabamosdecrear.Observandolaspropiedadesdelatributo
Currency,lasmsimportantessonName,quecontieneelnombrequeaparecerenlasconsultascontraelcubo
KeyColumns,quecontieneelcampoclavedelatablaqueserelacionarconlatabladehechosyNameColumn,
quecontieneelcampodelatablaquemostrarelvalordelatributo.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
8/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Enelcasodequenecesitemosaadirmsatributosaladimensin,simplementetendremosquearrastrary
soltarloscamposdesdelatabladelpanelDataSourceViewhastaelpanelAttributesdeestediseador.
UnavezcreadostodoslosatributosprocesaremosladimensinhaciendoclicenelbotnProcessdelabarrade
herramientasdeldiseador,omedianteelmendeVisualStudioBuild|Process.Completadoelprocesodela
dimensin,haremosclicenlapestaaBrowserdeldiseador,dondepodremosexaminarcmohaquedado
construida.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%2
9/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Creacindedimensiones.Dimensinjerrquica
Ademsdelasdimensionesdeunniconivel,comolaqueacabamosdeverenelapartadoanterior,esposible
creardimensionesqueagrupenlosdatosenvariosniveles,loqueproporcionarunamayorcapacidadde
desagregacinsobrelainformacindelcubocuandosteseaconsultadoatravsdeunadimensindeestetipo.
Aesteelementodeunadimensinseledenominajerarqua.
PongamoscomoejemplolatablaDimSalesTerritory,incluidaenelDataSourceViewdenuestroproyectode
ejemplo.EnlamismapodemosverquelacombinacindeloscamposSalesTerritoryGroup,SalesTerritoryCountry
ySalesTerritoryRegionpermiteestablecervariosnivelesdeagrupamientoparalosdatos.
Supongamosquenecesitamoscrearunadimensinbasadaenestatablaquepermita,partiendodelcampo
SalesTerritoryGroup,unefectosimilarde"despliege"jerrquicoporniveles.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
10/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Paraello,crearemosenprimerlugarladimensinutilizandoelasistenteenlaformaexplicadaenelanterior
apartado.ElatributoseleccionadopordefectoporelasistenteserelcorrespondientealcampoSalesTerritoryKey,
claveprimariadelatabla.
Unavezsituadoseneldiseadordedimensiones,arrastraremosdesdelatabladelpanelDataSourceViewlos
camposSalesTerritoryGroup,SalesTerritoryCountryySalesTerritoryRegion,ylossoltaremosenelpanel
Attributesdeestemismodiseador.
AcontinuacinarrastraremoselatributoSalesTerritoryGrouphastaelpanelHierarchies,locualcrearuna
nuevajerarquaalaquecambiaremoselnombrepredeterminadoporSalesTerritory.Tambindepositaremosen
estajerarqualosatributosSalesTerritoryCountryySalesTerritoryRegion,observandoquejuntoalnombrede
lajerarquaapareceuniconodeadvertenciaquenosinformadequelasrelacionesentrelosatributosdela
jerarquanoestnadecuadamentecreadas,loquepuedeafectarnegativamentealprocesodeladimensin.
ParasolucionaresteinconvenienteharemosclicenlapestaaAttributeRelationships,dondeveremoslas
relacionesentrelosatributosqueautomticamentehacreadoeldiseador.
Estasrelaciones,sinembargo,nosonvlidasparanuestrospropsitos,porloqueseleccionaremoslasflechasdel
diagramaquelasrepresentanylaseliminaremos.Paracrearlasnuevasrelacionesarrastraremosdesdeel
atributoorigenhastaeldestino,hastadejarlastalycomoapreciamosenlasiguientefigura.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
11/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
AntesdeprocesarladimensinvolveremosalapestaaDimensionStructureparacomprobarquelaadvertencia
hadesaparecido.PorotroladoseleccionaremostodoslosatributosdelpanelAttributes,asignandoelvalorFalse
ensupropiedadAttributeHierarchyVisible,conloqueconseguiremosquelosatributosindependientesnose
muestren,yaqueloquenosinteresaenestecasoesexplorarsolamentelajerarqua.Acontinuacinvemosel
resultadodeestadimensin,contodosloselementosdelajerarquaexpandidos.
Creacindelcubo
Llegamosalafasefinaleneldesarrollodenuestroproyectodeejemplo:laconstruccindelcubodedatos.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
12/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
EmpezaremoshaciendoclicderechoenelnodoCubesdelExploradordeSoluciones,yseleccionandolaopcinAdd
Cube,loqueabrirelasistentedecreacin,enelquedejaremossusvalorespredeterminadoshastallegaral
pasoSelectMeasureGroupTables,quecomosunombreindica,nospideseleccionarlatablaquecontendrlos
camposqueusaremoscomomedidasparaelcubo,esdecir,latabladehechos,queenestecasoser
FactResellerSales.
HaciendoclicenNextentraremosenelpasoSelectMeasures,dondetendremosqueseleccionarloscamposque
actuarncomomedidasdelcubo.Elobjetivodeestecuboconsisteenaveriguarelimportedelasventas
realizadasporlosdistribuidores,porlotanto,seleccionaremossolamenteelcampoSalesAmount.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
13/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Elsiguientepasonossolicitalaseleccindelasdimensionesquevanaformarpartedelcubo.Automticamente
sehandetectadolasdimensionescreadaspornosotrosconanterioridad,lascualesyaseofrecenseleccionadas
pordefecto.
Acontinuacin,elasistenterealizaunabsquedaenlatabladehechos,porsialgncampopudieraser
susceptibledesertambintratadocomounadimensin.Dadoquenonecesitamosestacaracterstica,
desmarcaremoslaseleccindelatabladehechoscomofuentedeorigenparalacreacindedimensiones.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
14/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Yllegamosalpasofinal,dondedaremosalcuboelnombredeVentasDistribuidores,finalizandoaselasistente.
Comoresultadoobtendremoslapantallacorrespondientealdiseadordecubos,quemuestradiversoselementos
deimportancia,talescomoelpaneldedimensiones,diagramadetablas,medidas(Measures),etc.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
15/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Esprecisamenteenelpaneldemedidasdondeaparecelamedidaquehemosseleccionadoenelasistente,peroa
lacualcambiaremossunombreporImporteVentasdesdelaventanadepropiedades.Enestamismaventana
podemosobservarelnombre,lafuncindeagregadoqueseusaparacalcularlamedida,elcampodelatabla
utilizado,cadenadeformato,etc.
Paraquelamedidaaparezcacorrectamenteformateada,ademsdeasignarlacadenadeformatoasupropiedad
FormatString,enlaspropiedadesdelcubotenemosqueasignarelvalorSpanish(Spain)alapropiedadLanguage.
Finalmente,antesdepoderconsultarelcubo,aligualquehicimosconlasdimensiones,debemosprocesarlo
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
16/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
haciendoclicenelbotnProcess,queabrirelcuadrodedilogodeprocesamientodelcubo,enelqueharemos
clicensubotnRun.
Unavezqueelcubohasidoprocesado,podemosconsultarsucontenidohaciendoclicenlapestaaBrowser.En
elpanelMeasureGroupexpandiremoselnodoMeasureshastallegaralamedidaImporteVentas,que
arrastraremoshastalazonacentraldelvisualizador.AcontinuacinarrastraremosladimensinSalesTerritory
hastaelmargenizquierdodelvisualizador.Podemoshacerclicderechosobreestadimensin,seleccionandola
opcinExpandItems,loqueproducirundesplieguedeloselementosdeladimensin.Paraterminar
arrastraremosladimensinCurrencyhastaelmargensuperior.Comoresultadoobtendremosunacuadrculade
datosenlaquecadaceldamostrarelvalordelamedidaparalainterseccindelasdimensionessituadasenlas
columnasyfilasdelvisualizadordedatos.
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
17/18
2/12/2014
CubosdedatosenSQLServer2008AnalysisServicesElaprendizdebrujo
Conclusiones
EnelpresenteartculohemosrealizadounaintroduccinaldesarrollodecubosdedatosconSQLServer2008
AnalysisServices,uncomponentedelafamiliaSQLServerdestinadoaproporcionarsolucionesdeinteligenciade
negocioconlasqueexplotarelpotencialdeanlisisqueresideenlosdatosdelasorganizaciones.Las
posibilidadesypotenciadeestaherramientasonenormes,yconfiamosenqueesteartculoanimeallectora
llevarlasalaprctica.
Published11/9/201321:09porLuisMiguelBlanco
data:text/htmlcharset=utf8,%3Ch2%20style%3D%22margin%3A%200px%3B%20fontsize%3A%201.2em%3B%20padding%3A%200.5em%200em%3B%
18/18