Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Processing a cube

Status
Not open for further replies.

efr

Programmer
Aug 21, 2001
8
0
0
AR
How can i process a cube from the Data Transformation Service of Sql Server.
Thanks, Ernesto.
 
you can use special "OLAP Services processing task".
Open the dts package in design mode and see the Task Floating bar (there is an yellow icon with cube)

I don't use this because I need my processing task to be more generic.

I tryed to implement the processing via DSO directly in DTS vbscript but it is not possible because of next problem - you cannot get mdstore collection of cubes from the database (or single cube from this collection) - nothing is returned always. I thing but i am not sure (I solved this problem one year ago) I so the article about this disablity that it is not supported from vbscript of DTS.

I solved this problem by writing special vb component that is called from the dts vbscript and makes all the job inside the dll..

please, notify me if this explanation was helpful for you.


Issahar Gourfinkel
senior software engineer
Softwatch LTD
Israel
 
...one more thing - I am speaking about OLAP 7 and NOT about OLAP 2000. My explanation is regarding OLAP 7 and SQL Server 7 only. Issahar Gourfinkel
senior software engineer
Softwatch LTD
Israel
 
Gracias Issahar. Te cuento que estoy tratando de programar el procesamiento del cubo con DSO. Lo que tengo que hacer es un procesamiento incremental del cubo. Voy a ver si puedo hacerlo con Visual Basic. Despues te cuento como me fue.
Gracias.

Ernesto F. Rau.
ernestofrau@hotmail.com
 
Si queres un ejemplo como hacer un procesamiento incremental puedo mandartelo.

Hay algunos problemas in la realizacion de este tipo de procesamients, pero este dipende de como tu lo haces.


Hay dos tipos generales de hacerlo:
1.
En OLAP Standard y Enterprise ediciones puedes creer una particion temporanea, llevar todos los recuerdos nuevos alla, y despues hacer &quot;merge&quot; con la particion principia y deletar la particion temporanea. Hay algunos scenarios 'paranoicos' con este tipo de procesamiento y por eso tienes que realizar muchos verificaciones antes de hacerlo, por ejemplo - no puedes hacer un &quot;merge&quot; si la particion principia no tiene data (size<=0) , un otro problema es que puedes llevar los mismo recuerdos mas de una vez - tu OLAP database habra dados dublicados etc...

2.
En OLAP enterprise edicion puedes creer mucha particiones por un cubo - cada particion per una mes (o para una semana tambien!) y procesar solo la particion del periodo de los recuerdos nuevos. Pero esta opcion esta solamente en la edicion Enterprise, per cuya tienes que installar SQL Server enterprise tambien.


Si tienes preguntas, escriba me

Perdona me por mi pobre, casi olvidada Espanol
Issahar Gourfinkel
senior software engineer
Softwatch LTD
Israel
 
Hola de nuevo Issahar. Gracias por ayudarme. Te cuento que no estoy trabajando con el Enterprise asi que voy a utilizar una sola particion, y a lo de los datos duplicados ya tengo la forma de controlarlo.
Te agradeceria si podes enviarme un ejemplo de como hacer el procesamiento incremental.
Disculpa que te escriba en español, si queres intento hacerlo en ingles. De todas maneras tu español no es malo.
Gracias.

Ernesto F. Rau.
ernestofrau@hotmail.com
 
Buenas Tardes, Ernesto
...
in este caso debes creer una particion temporanea, come ho dicho en mi mensaje reciente.

Mira por favor el code siguiente(es un ejemplo sin un error handling special, )

Este code no tiene algun warranty y serve como un ejemplo solamente.

'EMPIEZADO EL VB CODE
Private Function UpdateCube(cubeName As String, sourceTable As String, timeColumnName As String, minTime As String, maxTime As String) As Boolean

On Error GoTo UpdateCube_Err

Dim dsoCube As DSO.MDStore
Dim dsoPartition As DSO.MDStore
Dim dsoTmpPartition As DSO.MDStore
Dim filterStr As String

Set dsoCube = dsoDB.MDStores(cubeName)
Set dsoPartition = dsoCube.MDStores(cubeName)
Set dsoTmpPartition = dsoCube.MDStores.AddNew(&quot;~TempPartition&quot;)

dsoPartition.Clone dsoTmpPartition

filterStr = sourceTable & &quot;.&quot; & timeColumnName & &quot; >= '&quot; & minTime & &quot;' AND &quot; & _
sourceTable & &quot;.&quot; & timeColumnName & &quot; < '&quot; & maxTime & &quot;'&quot;

dsoTmpPartition.SourceTableFilter = filterStr
dsoTmpPartition.Process processFull

If dsoTmpPartition.EstimatedSize > 0 Then
dsoTmpPartition.SourceTableFilter = &quot;&quot;
dsoPartition.Merge &quot;~tmpPartition&quot;
End If

dsoCube = Nothing
dsoPartition = Nothing
dsoTmpPartition = Nothing

UpdateCube = True

Exit Function

UpdateCube_Err:
'MsgBox (&quot;An error occurred during incremental update of cube &quot; & cubeName & &quot;. number: &quot; & Err.Number & &quot;; description: &quot; & Err.Description & &quot;; Source: &quot; & Err.Source)
Err.Clear
UpdateCube = False
End Function
'TERMINADO EL VB CODE

'----------------
Recuerda que antes de este proceso debes poner atencion sobre algunos casos &quot;paranoicos&quot; como dsoPartition.EstimatedSize debe ser mas de 0 o debes comprovar que en este cubo la particion llamada &quot;~tmpPartition&quot; no existe...

buenas tardes


Issahar Gourfinkel
senior software engineer
Softwatch LTD
Israel
 
Hola Issahar. Gracias por tu ayuda. El codigo que me enviaste es lo que estaba necesitando.

Suponiendo que puedo crear varias particiones (por ejemplo una particion para el año 2000, y otra particion para el año 2001). ¿Es posible indicar que a una particion la guarde en el disco c, y a la otra en el disco d.?

Gracia de nuevo.
Ernesto Rau.
ernestofrau@hotmail.com
Argentina
 
Buenos dias, Ernesto Rau.

Queiro recordarte que creacion de particiones deferentes (mas de dos) in una cubo - es possible solamente en OLAP ENTERPRISE edicion que vale muchisimo por que no puedes obtener una licencia a usarlo sin Window NT Enterprise y sin SQL Server Enterprise...

No Lo se si existe una opcion de localizar particiones en diskos diferentes. Pienso que no es posible...pero no estoy seguro.

Hasta luego.




Issahar Gourfinkel
senior software engineer
Softwatch LTD
Israel
 
Ahora ho visto en MSDN que puedes definir particiones lejanas en OLAP 2000...Pero no se que version de OLAP estas usando...
:)
Issahar Gourfinkel
senior software engineer
Softwatch LTD
Israel
 
Buen dia Issahar. Te cuento que yo encontre algo parecido en el MSDN. Yo estoy trabajando con la version 7, pero no he podido encontrar en ninguna parte la manera de hacerlo.
Acerca de las particiones, creo que puedo crear otras, aunque aún lo estoy probando.

Saludos, Ernesto Rau
 
Hola, Ernesto.
Aqui puedes encontrar un caso &quot;paranoico&quot; sobre que no te ho dicho hayer.
- DSO tiene un bug (pequeno :) ) que puede causar te muchos problemas despues - te dara creer mas de dos particiones en un cubo de OLAP Standard (que no puedes hacer via Manager porque recebiras un mensaje error) - pero despues no podres procesar el cubo...

asi, You se seguramente que no puedes creer mas de dos particiones - una default y una temporanea per proceso incremental - y tiene que deletar la temporanea imediamente despues...


Issahar Gourfinkel
senior software engineer
Softwatch LTD
Israel
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top