Alle öffnen | Alle schließen | Zoom

MS-OLAP Cubes via vbs Scripte erstellen

Ziel: Cubes mit VBS oder VB Anwendungen erstellen.
 
Inhalt

OQY Dateien automatisieren

Abfrage erstellen

Ausgangspunkt ist eine Abfrage (*.dqy), die mit MSQRY32.EXE erstellt wurde:
Inhalt der Abfrage:
XLODBC
1
DefaultDir=D:\MS_Cube;Driver={Microsoft Text Driver (*.txt; *.csv)};DriverId=27;Extensions=txt,csv,tab,asc;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;
SELECT cub_src3.D1, cub_src3.D11, cub_src3.D2, cub_src3.V1, cub_src3.V2  FROM cub_src3.csv cub_src3
D1	D11	D2	V1	V2
				

Cube erstellen

Mit Dieser Abfrage wurde ein Cube (*.cub) erstellt. Die Cube Definitionsdatei (*.oqy) hat den folgenden Inhalt:
QueryType=OLEDB
Version=1
CommandType=Cube
Connection=Provider=MSOLAP; Initial Catalog=[OCWCube]; Data Source=D:\MS_Cube\cymoryl_txtsrc3.cub; CreateCube=CREATE CUBE [OCWCube] ( DIMENSION [D1], LEVEL [Alle] TYPE ALL, LEVEL [D1], LEVEL [D11], DIMENSION [D2], LEVEL [Alle] TYPE ALL, LEVEL [D2], MEASURE [Summe von V1] FUNCTION SUM, MEASURE [Summe von V2] FUNCTION SUM ); InsertInto=INSERT INTO OCWCube([D1].[D1], [D11], [D2].[D2], [Summe von V1], [Summe von V2]) OPTIONS ATTEMPT_ANALYSIS SELECT cub_src3.D1, cub_src3.D11, cub_src3.D2, cub_src3.V1, cub_src3.V2 FROM cub_src3.csv cub_src3; Source_DSN="DefaultDir=D:\MS_Cube;Driver={Microsoft Text Driver (*.txt; *.csv)};DriverId=27;Extensions=txt,csv,tab,asc;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;";UseExistingFile=True
CommandText=OCWCube
				

VBS Script erstellen

Mit dem folgenden VBS Script wird die CUB Datei ebenfalls erstellt:
Dim OQY_content
OQY_content="Provider=MSOLAP; Initial Catalog=[OCWCube]; Data Source=D:\MS_Cube\cymoryl_txtsrc3.cub;  CreateCube=CREATE CUBE [OCWCube] ( DIMENSION [D1], LEVEL [Alle] TYPE ALL, LEVEL [D1], LEVEL [D11], DIMENSION [D2], LEVEL [Alle] TYPE ALL, LEVEL [D2], MEASURE [Summe von V1] FUNCTION SUM, MEASURE [Summe von V2] FUNCTION SUM ); InsertInto=INSERT INTO OCWCube([D1].[D1], [D11], [D2].[D2], [Summe von V1], [Summe von V2]) OPTIONS ATTEMPT_ANALYSIS SELECT cub_src3.D1, cub_src3.D11, cub_src3.D2, cub_src3.V1, cub_src3.V2 FROM cub_src3.csv cub_src3; Source_DSN=""DefaultDir=D:\MS_Cube;Driver={Microsoft Text Driver (*.txt; *.csv)};DriverId=27;Extensions=txt,csv,tab,asc;FIL=text;MaxBufferSize=2048;MaxScanRows=25;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"";UseExistingFile=False"
Dim Connection
Set Connection = CreateObject("ADODB.Connection")
Connection.Provider = "msolap.2" 
Connection.ConnectionString = OQY_content 
	Connection.Open
	Connection.Close
msgbox "done"
				
Hinweis #1: die Option UseExistingFile=False oder UseExistingFile=True kann auch ganz weggelassen werden. Sie gibt an ob der Cube existieren muss.
Hinweis #2: In dern Sprachen VB oder VBS wird ein " als Begrenzung für Variablen genutzt. Daher wird ein einzelnes " zu einem doppelten "", sofern der Wert Teil des Variablenwertes ist.
 

Fazit:

Mann muss nur einen Teil des Inhaltes der OQY Datei in eine VBS Datei einfügen und der Offline Cube kann regelmäßig erstellt werden. Man kann auch die OQY Datei als INI Datei verwenden, siehe VB Funktion getPrivateProfileStringA, und den Wert der Zeile "CONNECTION=" direkt nutzen.
 

CUB Dateien mit VBS erstellen

Formatierung

Ausgehend vom vorherigen VBS Script wurde der Erstellungsbefehl in seine Segmente gesplittet. Zusätzlich wurde auf die ursprüngliche DSN Datei verwiesen.
Dim strProvider
	strProvider = "Provider=MSOLAP;"
Dim strInitCatalog
	strInitCatalog = "Initial Catalog=[OCWCube];"
Dim strDataSource
	strDataSource = "Data Source=D:\MS_Cube\cymoryl_txtsrc3.cub;"
Dim strCreateCube
	strCreateCube = "CreateCube=CREATE CUBE [OCWCube] ( " & _ 
		"DIMENSION [D1], LEVEL [Alle] TYPE ALL, LEVEL [D1], LEVEL [D11], " & _ 
		"DIMENSION [D2], LEVEL [Alle] TYPE ALL, LEVEL [D2], " & _ 
		"MEASURE [Summe von V1] FUNCTION SUM, " & _ 
		"MEASURE [Summe von V2] FUNCTION SUM );"
Dim strInsertInto
	strInsertInto = "InsertInto=INSERT INTO OCWCube([D1].[D1], [D11], [D2].[D2], [Summe von V1], [Summe von V2]) OPTIONS ATTEMPT_ANALYSIS "
Dim strSelect
	strSelect = "SELECT cub_src3.D1, cub_src3.D11, cub_src3.D2, cub_src3.V1, cub_src3.V2 FROM cub_src3.csv cub_src3;"
Dim strSource_DSN
	strSource_DSN = " Source_DSN=""FileDSN=D:\MS_Cube\FDSN_D_XP.dsn"";"
Dim strUseExistingFile
	strUseExistingFile = "UseExistingFile=False"

Dim Connection
Set Connection = CreateObject("ADODB.Connection")
	Connection.Provider = "msolap.2" 
	Connection.ConnectionString = strProvider & _ 
		strInitCatalog & _ 
		strDataSource & _ 
		strCreateCube & _ 
		strInsertInto & _ 
		strSelect & _ 
		strSource_DSN & _ 
		strUseExistingFile
	Connection.Open
	Connection.Close
Msgbox "done"
				
 

Prozesssicherheit, Sort und KEY / NAME Eigenschaft

Prozesssicherheit wird in diesem Beispiel durch das Abfangen von Message-Boxen erreicht, die bei Fehlern entstehen könnten. Insbesondere bei Hintergrundprozessen sind Fehlermeldungen als permanente Message-Boxen unschön. Fehler werden in einer Datei mitgeschrieben. Die VBS Datei besitzt je nach Ausgang einen Return Code. Die KEY / NAME Eigenschaft und die Anweisung SORTBYNAME bzw. SORTBYKEY wurde den Dimensionen und Ebenen hinzugefügt.
'Formated with Key, Value, Sort
On Error Resume Next

'Error collection string
Dim sErrors

'overall Result
Dim bResult
	bResult = true
'aktueller Pfad
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")

Dim strProvider
	strProvider = "Provider=MSOLAP;"
Dim strInitCatalog
	strInitCatalog = "Initial Catalog=[OCWCube];"
Dim strDataSource
	strDataSource = "Data Source=D:\MS_Cube\cymoryl_txtsrc3.cub;"
Dim strCreateCube
	strCreateCube = "CreateCube=CREATE CUBE [OCWCube] ( " & _ 
		"DIMENSION [D1], " & _ 
			"LEVEL [Alle] TYPE ALL, " & _ 
			"LEVEL [D1] OPTIONS( SORTBYNAME ), " & _ 
			"LEVEL [D11] OPTIONS( SORTBYKEY ), " & _ 
		"DIMENSION [D2], " & _ 
			"LEVEL [Alle] TYPE ALL, " & _ 
			"LEVEL [D2] OPTIONS( SORTBYNAME ), " & _ 
		"MEASURE [Summe von V1] FUNCTION SUM, " & _ 
		"MEASURE [Summe von V2] FUNCTION SUM  );"
Dim strInsertInto
	strInsertInto = "InsertInto=INSERT INTO OCWCube(" & _ 
		"[D1].[D1].KEY, " & _ 
		"[D1].[D1].NAME, " & _ 
		"[D11].KEY, " & _ 
		"[D11].NAME, " & _ 
		"[D2].[D2].KEY, " & _ 
		"[D2].[D2].NAME, " & _ 
		"[Summe von V1], " & _ 
		"[Summe von V2])  " & _ 
		"OPTIONS ATTEMPT_ANALYSIS "
Dim strSelect
	strSelect = "SELECT " & _ 
			"cub_src3.D1 as D1_KEY, " & _ 
			"cub_src3.D1 as D1_NAME, " & _ 
			"cub_src3.D11 as D11_KEY, " & _ 
			"cub_src3.D11 as D11_NAME, " & _ 
			"cub_src3.D2 as D2_KEY, " & _ 
			"cub_src3.D2 as D2_NAME, " & _ 
			"cub_src3.V1, " & _ 
			"cub_src3.V2  " & _ 
		"FROM cub_src3.csv cub_src3;"
Dim strSource_DSN
	strSource_DSN = " Source_DSN=""FileDSN=D:\MS_Cube\FDSN_D_XP.dsn"";"
Dim strUseExistingFile
	strUseExistingFile = "UseExistingFile=False"

Dim Connection
Set Connection = CreateObject("ADODB.Connection")
	Connection.Provider = "msolap.2" 
	Connection.ConnectionString = strProvider & _
		strInitCatalog & _
		strDataSource & _
		strCreateCube & _
		strInsertInto & _
		strSelect & _
		strSource_DSN & _
		strUseExistingFile
	Connection.Open

If Err.Number <> 0 Then
    sErrors = LogError(Err, sErrors)
    Err.Clear
	bResult = false
else
	Connection.Close
	Set Connection = Nothing
End If
On Error Goto 0 ' Stop looking for errors 

if bResult then
	sErrors = "Waiting 2 Seconds" & vbCrLF + "Everything is well done."
	sTitel = "Creation Info" 
	iSek = 2 'Anzeigedauer in Sekunden
	Set WshShell = WScript.CreateObject("WScript.Shell") 
	WshShell.Popup sErrors, iSek, sTitel, vbInformation
	WScript.Quit (0)
else
	sErrors = "Waiting 5 Seconds" & vbCrLF + "Errors: " & sErrors
	sTitel = "Creation Error" 
	iSek = 5 'Anzeigedauer in Sekunden
	Set WshShell = WScript.CreateObject("WScript.Shell") 
	WshShell.Popup sErrors, iSek, sTitel, vbCritical
	WScript.Quit (56)
end if

function LogError(Details, sErrors)
    Dim fs : Set fs = CreateObject("Scripting.FileSystemObject")
    Dim logFile : Set logFile = fs.OpenTextFile(sCurPath & "\cube_errors.log", 8, True)
    logFile.WriteLine(Now() & ": Error: " & Details.Number & " Details: " & Details.Description)
	LogError = sErrors & vbCrLf & ": Error: " & Details.Number & " Details: " & Details.Description
End function
				
 

Member, Set und Formatierungen

Mit den Member Funktionen werden berechnete und statische Kennzahlen erstellt. Als Microsoft® Office® 2007 Funktionalität werden die Kennzahlen farblich formatiert oder mit dem Befehl Set gruppiert (z.B.: Top 10).
'Formated with Key, Value, Sort, Member, Set (office 2007), Formating 
On Error Resume Next

'Error collection string
Dim sErrors

'overall Result
Dim bResult
	bResult = true
'aktueller Pfad
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")

Dim strProvider
	strProvider = "Provider=MSOLAP;"
Dim strInitCatalog
	strInitCatalog = "Initial Catalog=[OCWCube];"
Dim strDataSource
	strDataSource = "Data Source=D:\MS_Cube\cymoryl_txtsrc3.cub;"
Dim strCreateCube
	strCreateCube = "CreateCube=CREATE CUBE [OCWCube] ( " & _ 
		"DIMENSION [D1], " & _ 
			"LEVEL [Alle] TYPE ALL, " & _ 
			"LEVEL [D1] OPTIONS( SORTBYNAME ), " & _ 
			"LEVEL [D11] OPTIONS( SORTBYKEY ), " & _ 
			"LEVEL [D111] OPTIONS( SORTBYKEY ) HIDDEN , " & _ 
		"DIMENSION [D2], " & _ 
			"LEVEL [Alle] TYPE ALL, " & _ 
			"LEVEL [D2] OPTIONS( SORTBYNAME ), " & _ 
		"MEASURE [V1] FUNCTION SUM, " & _ 
		"MEASURE [V2] FUNCTION COUNT ,  " & _ 
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C Statischer Wert als %] AS 'sum(1)', FORMAT_STRING='#0.00%'), " & _ 
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C wie V1 als % Fett Kursiv] AS '[Measures].[V1]', FORMAT_STRING='#0.00%', FONT_FLAGS = 3 /*Bold, Italic*/, VISIBLE = 1), " & _ 
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C Dim Count]  AS '(dimensions.count )' ), " & _
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C D1.Level Count]  AS '([D1].Levels.count )' ), " & _
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C Level Menber Anzahl D1.0] AS '(count([D1].Levels(0).Members))' ), " & _
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C Level Menber Anzahl D1.1] AS '(count([D1].Levels(1).Members))' ), " & _
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C Level Menber Anzahl D1.3] AS '(count([D1].Levels(2).Members))' ), " & _
		"COMMAND (CREATE MEMBER [OCWCube].[Measures].[C Berechnet als #0.00 Fett Kursiv und Farbe] AS '[Measures].[V1] / [Measures].[V2]', FORMAT_STRING = '#0.00', FORE_COLOR='iif([Measures].[V1]<0,RGB(255,0,0),RGB(0,0,0))', BACK_COLOR='iif([Measures].[V1]>10,RGB(0,255,0),RGB(255,255,0))'), " & _ 
		"COMMAND (CREATE SET [OCWCube].[Top 2 Count] as 'TopCount([D1].Members,2,[Measures].[V1])' /*Works at Office 2007*/), " & _
		"COMMAND (CREATE SET [OCWCube].[Top 2 Sum] as 'TopSum([D1].Members,2,[Measures].[V1])' /*Works at Office 2007*/), " & _
		"COMMAND (CREATE SET [OCWCube].[Sondergruppe aa und ac] as '{[D1].[D11].[aa], [D1].[D11].[ac]}' /*Works at Office 2007*/) " & _
		");"

Dim strInsertInto
	strInsertInto = "InsertInto=INSERT INTO OCWCube(" & _ 
		"[D1].[D1].KEY, " & _ 
		"[D1].[D1].NAME, " & _ 
		"[D11].KEY, " & _ 
		"[D11].NAME, " & _ 
		"[D111].KEY, " & _ 
		"[D111].NAME, " & _
		"[D2].[D2].KEY, " & _ 
		"[D2].[D2].NAME, " & _ 
		"[V1], " & _ 
		"[V2]) " & _ 
		" Options ATTEMPT_ANALYSIS " ' Possible Options: PASSTHROUGH, DEFER_DATA, ATTEMPT_DEFER, ATTEMPT_ANALYSIS
Dim strSelect
	strSelect = "SELECT " & _ 
			"cub_src3.D1 as D1_KEY, " & _ 
			"cub_src3.D1 as D1_NAME, " & _ 
			"cub_src3.D11 as D11_KEY, " & _ 
			"cub_src3.D11 as D11_NAME, " & _ 
			"1 as D111_KEY, " & _ 
			"1 as D111_NAME, " & _ 
			"cub_src3.D2 as D2_KEY, " & _ 
			"cub_src3.D2 as D2_NAME, " & _ 
			"cub_src3.V1, " & _ 
			"cub_src3.V2  " & _ 
		"FROM cub_src3.csv cub_src3;"
Dim strSource_DSN
	strSource_DSN = " Source_DSN=""FileDSN=D:\MS_Cube\FDSN_D_XP.dsn"";"
Dim strUseExistingFile
	strUseExistingFile = "UseExistingFile=False"

Dim Connection
Set Connection = CreateObject("ADODB.Connection")
	Connection.Provider = "msolap.2" 
	Connection.ConnectionString = strProvider & _
		strInitCatalog & _
		strDataSource & _
		strCreateCube & _
		strInsertInto & _
		strSelect & _
		strSource_DSN & _
		strUseExistingFile
	Connection.Open

If Err.Number <> 0 Then
    sErrors = LogError(Err, sErrors)
    Err.Clear
	bResult = false
else
	Connection.Close
	Set Connection = Nothing
End If
On Error Goto 0 ' Stop looking for errors 

if bResult then
	sErrors = "Waiting 2 Seconds" & vbCrLF + "Everything is well done."
	sTitel = "Creation Info" 
	iSek = 2 'Anzeigedauer in Sekunden
	Set WshShell = WScript.CreateObject("WScript.Shell") 
	WshShell.Popup sErrors, iSek, sTitel, vbInformation
	WScript.Quit (0)
else
	sErrors = "Waiting 5 Seconds" & vbCrLF + "Errors: " & sErrors
	sTitel = "Creation Error" 
	iSek = 5 'Anzeigedauer in Sekunden
	Set WshShell = WScript.CreateObject("WScript.Shell") 
	WshShell.Popup sErrors, iSek, sTitel, vbCritical
	WScript.Quit (56)
end if

function LogError(Details, sErrors)
    Dim fs : Set fs = CreateObject("Scripting.FileSystemObject")
    Dim logFile : Set logFile = fs.OpenTextFile(sCurPath & "\cube_errors.log", 8, True)
    logFile.WriteLine(Now() & ": Error: " & Details.Number & " Details: " & Details.Description)
	LogError = sErrors & vbCrLf & ": Error: " & Details.Number & " Details: " & Details.Description
End function
				
 

Hierarchy und Dimensionsbeschreibungen

Mit den Hierarchien können unterschiedliche DrillDown-Pfade für unterschiedliche Zusammenhänge dargestellt werden. Beschreibngen helfen den Benutzern die Daten richtig zuzuordnen.
'Formated with Key, Value, Sort, Hierarchy and a Dimension Description
On Error Resume Next

'Error collection string
Dim sErrors

'overall Result
Dim bResult
	bResult = true
'aktueller Pfad
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")

Dim strProvider
	strProvider = "Provider=MSOLAP;"
Dim strInitCatalog
	strInitCatalog = "Initial Catalog=[OCWCube];"
Dim strDataSource
	strDataSource = "Data Source=D:\MS_Cube\cymoryl_txtsrc3.cub;"
Dim strCreateCube
	strCreateCube = "CreateCube=CREATE CUBE [OCWCube] ( " & _ 
		"DIMENSION [D1] Description 'Something useful', " & _
			"HIERARCHY  [By D1] ," & _ 
				"LEVEL [Alle] TYPE ALL, " & _ 
				"LEVEL [D1] OPTIONS( SORTBYNAME ), " & _ 
				"LEVEL [D11] OPTIONS( SORTBYKEY ), " & _ 
			"HIERARCHY  [By D111] ," & _ 
				"LEVEL [Alle] TYPE ALL, " & _ 
				"LEVEL [D111] OPTIONS( SORTBYKEY ) , " & _ 
		"DIMENSION [D2], " & _ 
			"LEVEL [Alle] TYPE ALL, " & _ 
			"LEVEL [D2] OPTIONS( SORTBYNAME ), " & _ 
		"MEASURE [V1] FUNCTION SUM, " & _ 
		"MEASURE [V2] FUNCTION COUNT " & _
		");"

Dim strInsertInto
	strInsertInto = "InsertInto=INSERT INTO OCWCube(" & _ 
		"[D1].[By D1].[D1].KEY, " & _ 
		"[D1].[By D1].[D1].NAME, " & _ 
		"[D11].KEY, " & _ 
		"[D11].NAME, " & _ 
		"[D1].[By D111].[D111].KEY, " & _ 
		"[D1].[By D111].[D111].NAME, " & _
		"[D2].[D2].KEY, " & _ 
		"[D2].[D2].NAME, " & _ 
		"[V1], " & _ 
		"[V2]) " & _ 
		" Options ATTEMPT_ANALYSIS " ' Possible Options: PASSTHROUGH, DEFER_DATA, ATTEMPT_DEFER, ATTEMPT_ANALYSIS
Dim strSelect
	strSelect = "SELECT " & _ 
			"cub_src3.D1 as D1_KEY, " & _ 
			"cub_src3.D1 as D1_NAME, " & _ 
			"cub_src3.D11 as D11_KEY, " & _ 
			"cub_src3.D11 as D11_NAME, " & _ 
			"1 as D111_KEY, " & _ 
			"1 as D111_NAME, " & _ 
			"cub_src3.D2 as D2_KEY, " & _ 
			"cub_src3.D2 as D2_NAME, " & _ 
			"cub_src3.V1, " & _ 
			"cub_src3.V2  " & _ 
		"FROM cub_src3.csv cub_src3;"
Dim strSource_DSN
	strSource_DSN = " Source_DSN=""FileDSN=D:\MS_Cube\FDSN_D_XP.dsn"";"
Dim strUseExistingFile
	strUseExistingFile = "UseExistingFile=False"

Dim Connection
Set Connection = CreateObject("ADODB.Connection")
	Connection.Provider = "msolap.2" 
	Connection.ConnectionString = strProvider & _
		strInitCatalog & _
		strDataSource & _
		strCreateCube & _
		strInsertInto & _
		strSelect & _
		strSource_DSN & _
		strUseExistingFile
	Connection.Open

If Err.Number <> 0 Then
    sErrors = LogError(Err, sErrors)
    Err.Clear
	bResult = false
else
	Connection.Close
	Set Connection = Nothing
End If
On Error Goto 0 ' Stop looking for errors 

if bResult then
	sErrors = "Waiting 2 Seconds" & vbCrLF + "Everything is well done."
	sTitel = "Creation Info" 
	iSek = 2 'Anzeigedauer in Sekunden
	Set WshShell = WScript.CreateObject("WScript.Shell") 
	WshShell.Popup sErrors, iSek, sTitel, vbInformation
	WScript.Quit (0)
else
	sErrors = "Waiting 5 Seconds" & vbCrLF + "Errors: " & sErrors
	sTitel = "Creation Error" 
	iSek = 5 'Anzeigedauer in Sekunden
	Set WshShell = WScript.CreateObject("WScript.Shell") 
	WshShell.Popup sErrors, iSek, sTitel, vbCritical
	WScript.Quit (56)
end if

function LogError(Details, sErrors)
    Dim fs : Set fs = CreateObject("Scripting.FileSystemObject")
    Dim logFile : Set logFile = fs.OpenTextFile(sCurPath & "\cube_errors.log", 8, True)
    logFile.WriteLine(Now() & ": Error: " & Details.Number & " Details: " & Details.Description)
	LogError = sErrors & vbCrLf & ": Error: " & Details.Number & " Details: " & Details.Description
End function

				
 
Download als Zip(2011-04-16)

Datei schema.ini

Die Datei wird i.d.R. vom ODBC Administrator angelegt und angepasst. Sie beinhaltet die Angaben zur Formatierung der Dateien in einem Verzeichnis. Wird sie nicht genutzt, so werden die regionalen Einstellungen verwendet.
Beispiel:
[cub_src3.csv] 
ColNameHeader=True 
Format=Delimited(;) 
MaxScanRows=25 
CharacterSet=ANSI 
Col1=D1 Char Width 255 
Col2=D11 Char Width 255 
Col3=D2 Char Width 255 
Col4=V1 Integer
Col5=V2 Integer
				
Das folgende Beispiel zeigt die Verwendung von Vorformatierungen für Dezimalzahlen und Datumswerte.
[ein_beispiel_mit_formatierung.csv]
ColNameHeader=True
Format=Delimited(;)
MaxScanRows=0
CharacterSet=ANSI
DateTimeFormat=dd.MM.yyyy
Col1=SPALTE_MIT_TEXT Char Width 255
Col2=SPALTE_MIT_DEZIMALZAHL Float
Col5=SPALTE_MIT_DATUM date
				

Datei fdsn_d_xp.dsn

Die Datei wird i.d.R. vom ODBC Administrator angelegt und angepasst. Sie beinhaltet den Typ des Treibers und in diesem Falle den Pfad zu den Dateien.
Beispiel:
[ODBC] 
DRIVER=Microsoft Text Driver (*.txt; *.csv) 
UID=admin 
UserCommitSync=Yes 
Threads=3 
SafeTransactions=0 
PageTimeout=5 
MaxScanRows=25 
MaxBufferSize=2048 
FIL=text 
Extensions=txt,csv,tab,asc 
DriverId=27 
DefaultDir=D:\MS_Cube 
				

Datei fdsn_d_win7.dsn

Die Datei wird i.d.R. vom ODBC Administrator angelegt und angepasst. Sie beinhaltet den Typ des Treibers und in diesem Falle den Pfad zu den Dateien. Der wesentliche Unterschied ist die Bezeichnung des Treibers. Auch bei deutschen Systemen ist dieser in englischer Sprache. In der Folge sind weniger Sprachprobleme im Deploymentprozess zu erwarten.
Beispiel:
[ODBC]
DRIVER=Microsoft Access Text Driver (*.txt, *.csv)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=25
MaxBufferSize=2048
FIL=text
Extensions=txt,csv,tab,asc
DriverId=27
DefaultDir=D:\MS_Cube
DBQ=D:\MS_Cube 
				

Datei cub_src3.csv

Inhalt des Cubes als CSV Datei. Beispielinhalt:
D1;D11;D2;V1;V2
aa;aaa;ba;2;2
aa;aaa;bb;3;3
aa;aab;ba;2;4
aa;aab;bb;3;5
ab;aab;bc;4;6
ab;aab;bd;5;7
ac;aab;ba;2;8
ac;aab;bb;3;9
ad;aab;bc;4;0
...
				

Meldungen

Meldung: Error: 3706 Details: Provider cannot be found. It may not be properly installed.
Ursache: Die notwendigen Bibliotheken wurden nicht installiert.
In der Registry findet man unter HKEY_CLASSES_ROOT\MSOLAP den Provider, der im Schlüssel DefaultValue auf die aktuell verwendete verweist. Weitere Werte HKEY_CLASSES_ROOT\MSOLAP.2, HKEY_CLASSES_ROOT\MSOLAP.3, HKEY_CLASSES_ROOT\MSOLAP.4 verweisen auf die installierten Versionen.
MSOLAP.3 kann mit ptslite.exe von der Seite Feature Pack for Microsoft® SQL Server® 2005 von http://www.microsoft.com/downloads nachinstalliert werden.
MSOLAP.4 kann mit SQLServer2008_ASOLEDB10.msi von der Seite Microsoft® SQL Server® 2008 Feature Pack von http://www.microsoft.com/downloads nachinstalliert werden.
MSOLAP.4 kann mit SQLServer2008_ASOLEDB10.msi von der Seite Microsoft® SQL Server® 2008 R2 Feature Pack von http://www.microsoft.com/downloads nachinstalliert werden.
 
Meldung: Error: 80040E14 Details: Unbekannte Funktion bei ).
Ursache: Eine Kennzahl hat keine Aggregationsregel. Nach Function folgt immer SUM | MIN | MAX | COUNT. Bei der OQY Erstellung fehlt dies oft.

http://technet.microsoft.com