|
|
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.
|
|
Weblinks |
http://technet.microsoft.com |
|
|
|