Business Intelligence (BI) Inhalt 1. Architekturschichten ....................................................................................................................... 3 1.1. Quellsystem ............................................................................................................................. 3 1.2. ETL- Komponenten (Extract / Transform / Load) .................................................................... 3 1.2.1. Staging (TXP_BI_Staging) ................................................................................................. 3 1.2.2. Cleansing (TXP_BI_Cleansing) ......................................................................................... 4 1.2.3. Metdata (TXP_BI_Metadata)........................................................................................... 5 1.3. Datawarehouse ....................................................................................................................... 5 1.3.1. TXP_BI_Core .................................................................................................................... 5 1.3.2. TXP_BI_DM_SSAS ............................................................................................................ 5 1.4. Zugriffs-Schicht ........................................................................................................................ 5 2. Voraussetzungen ............................................................................................................................. 6 3. Erste Installation BI/DWH in Zielumgebung .................................................................................... 7 4. 3.1. Dateien aus Repository laden.................................................................................................. 7 3.2. Linked Server auf Zielumgebung einrichten ............................................................................ 7 3.3. SQL Skript der ETL - Schicht generieren und ausführen .......................................................... 7 3.4. Datamart Datenbank, Tabellen und Views anlegen .............................................................. 10 3.5. Berechtigungen auf neue DB vergeben................................................................................. 11 3.6. Job zum Befüllen und Aktualisieren der BI- Tabellen erstellen und ausführen .................... 11 3.7. Fehler in der Job- Ausführung ............................................................................................... 12 Neue Entität hinzufügen / Entität bearbeiten............................................................................... 13 4.1. 4.1.1. Staging ........................................................................................................................... 13 4.1.2. Entscheidung: Entität oder Transaktion? ...................................................................... 14 4.1.3. Entity.............................................................................................................................. 14 4.1.4. Relations (Entity) ........................................................................................................... 15 4.1.5. EntityTransformations ................................................................................................... 15 4.1.6. Transaction .................................................................................................................... 16 4.1.7. TransactionTransformations ......................................................................................... 16 4.1.8. SQL Skript generieren und ausführen ........................................................................... 17 4.1.9. Berechtigungen auf neuen DB vergeben ...................................................................... 17 4.2. 5. Skripte für Extracting, Transforming und Loading (ETL) anpassen........................................ 13 SSIS Paket anpassen .............................................................................................................. 17 4.2.1. Tasks für das Staging hinzufügen .................................................................................. 18 4.2.2. Task für Transforming und Loading hinzufügen ............................................................ 19 4.3. BI Datamart Skripte anpassen und generieren ..................................................................... 20 4.4. DB Job ausführen................................................................................................................... 21 4.5. OLAP Cube erstellen / anpassen ........................................................................................... 21 Fehlerbehandlung / FAQ ............................................................................................................... 22 5.1. DB Job läuft nicht durch ........................................................................................................ 22 5.1.1. Keine Berechtigung auf TXP Datenbank ........................................................................ 22 5.1.2. SsasMaintain.exe konnte nicht ausgeführt werden ...................................................... 22 6. Durchgeführte Änderungen .......................................................................................................... 23 7. Verbesserungsmöglichkeiten / Ideen ............................................................................................ 25 1. Architekturschichten 1.1. Quellsystem Die Datenbanken des TicketXperts bilden das Quellsystem. 1.2. ETL- Komponenten (Extract / Transform / Load) 1.2.1. Staging (TXP_BI_Staging) Erstellung von Snapshot-Tabellen aus dem Quellsystem - Kleinere Tabellen werden komplett übernommen z.B. Ticketstatus, … Bei größere Tabellen wird die Differenz seit letzten Aufbereitung ermittelt z.B. TicketStatusChanges Die Staging- Tabellen halten eine Kopie der TXP-Daten bereit. Auf Basis dieser Datensätze erfolgt später dann die Transformation und Aufbereitung Über Stored Procedures werden die Datensätze aus dem Quellsystem (TXP) in die Staging- Tabellen geladen. Für jede Entität gibt es eine eigene SP. Ebenfalls in der Staging Datenbank befinden sich Tabellenwertfunktionen, die für den TransformingProzess herangezogen werden: 1.2.2. Cleansing (TXP_BI_Cleansing) Aufgabe des Cleansing-Bereichs ist - Transformation der Daten aus den Staging- Tabellen und Speicherung in den CleansingTabellen, unter Verwendung der Tabellenwertfunktionen aus dem Staging Bereich - Prüfung der Datensätze aus den Cleansing-Tabellen auf z.B. Doppelte Einträge. Der Zugriff auf die bereinigten Datensätze erfolgt über die „Valid Views“ - Hinzufügen des Singleton-Datensatzes und Speicherung als „Singleton Views“ - Auflösen der Fremdschlüssel (Surrogate key vs. Business key) auf Basis der „Singleton Views“ und Speicherung in „Lookup Views“ - Basierend auf den Lookup Views wird in den „Merge-Views“ unterschieden bzw. gekennzeichnet, ob der Datensatz hinzugefügt oder geupdated wird. - Laden der Datensätze aus den MergeViews in die TXP_BI_Core- Datenbank. Hierbei wird bereits der jeweils definierte „Slowly Changing Dimension“ Typ angewandt und die vorhandenen Datensätze entsprechend geupdated und historisiert. 1.2.3. Metdata (TXP_BI_Metadata) Speicherung von Meta-Daten wie z.B. Logeinträge des DB Jobs, Letzte Ausführungszeitpunkt, usw. 1.3. Datawarehouse 1.3.1. TXP_BI_Core Diese Datenbank enthält die transformierten, bereinigten und aufbereiteten Daten. Für jede Entität existiert eine Tabelle die Datensätze der jeweiligen Entität beinhaltet und eine Histo- Tabelle, die kennzeichnet wann welcher Datensatz gültig ist bzw. war. Zusätzlich gibt es pro Entität 3 Views: - All_<Entität>: Alle Datensätze der Entität, inkl. Gültigkeitsinformation - Current_All_<Entity>: Alle aktuell gültigen Datensätze der Entität - Current_<Entity>: Alle nicht gelöschten, aktuelle gültigen Datensätze der Entität 1.3.2. TXP_BI_DM_SSAS Die TXP_BI_DM_SSAS- Datenbank enthält selbst kaum Datensätze, sondern bedient sich über Views der TXP_BI_Core Datenbank. Im Prinzip gibt es zwei Arten von Views: Dimension- Views (Dim<Entity>) und die Fact-Views (Dim<Entity>) Dimension-Views beinhalten alle nicht aggregierbaren Informationen wie z.B. der Name, Die Gültigkeit und die Beschreibung eines Projektes. Die Fact- View hingehen enthält die aggregierbaren Werte und sämtliche Fremdschlüssel. Auf Basis dieser Views werden letztendlich die OLAP-Cubes erstellt. 1.4. Zugriffs-Schicht Erstellte OLAP-Cubes und Datamarts zur weiteren Verwendung in verschiedenen Frontend-Tools wie z.B. Excel 2. Voraussetzungen Visual Studio 2013 (Projektfiles sind auf 2013 erstellt) Extension T4Toolbox installieren Microsoft SQL Server Data Tools SQL Server 2008 R2 (nicht höher, da wir rückwärtskompatibel entwickeln müssen) Database Engine Analysis Services Integration Services Development Tools (insbesondere Business Intelligence Development Studio) 3. Erste Installation BI/DWH in Zielumgebung 3.1. Dateien aus Repository laden Repository: http://hg.isonet.ch/BIDWH/ 3.2. Linked Server auf Zielumgebung einrichten Um Zugriff auf die Quelldatenbanken zu haben wird auf dem SQL Server des Zielsystems ein Linked Server erstellt: Dieser wird auch erstellt, wenn Quellsystem und Zielsystem auf dem gleicher Server liegen. Somit muss in den Generierten Skripten der DB-Server nicht geändert werden. 3.3. SQL Skript der ETL - Schicht generieren und ausführen Das SQL Script der ETL- Schicht wird mit einem Tool generiert und sorgt dafür, dass die benötigten Daten aus den Quellsystem geladen und für die weitere Verwendung aufbereitet werden. Das „Tool“ wurde mit dem T4 (https://t4toolbox.codeplex.com) Code Generator geschrieben (*.tt) und enthält eine Model.xml, die sämtliche Informationen über die zu verwenden TXPQuelldatenbanken enthält. Voraussetzung: - T4 Toolbox Extension müssen installiert sein Falls noch nicht vorhanden: o Visual Studio > Tools > Extensions and Updates o o Z.B. nach T4 suchen und installieren Neustart Visual Studio ist ggf. erforderlich Anpassen der Model.xml: 1) TXP DWH Solution öffnen: \BIDWH\Source\TXP DWH\TXP DWH.sln 2) Speicherort für Data- und Logfile der neu zu erstellenden BI-Datenbanken anpassen - Tag “Database” für TXP_BI_Metadata, TXP_BI_Core, TXP_BI_Cleansing, TXP_BI_Staging - Attribute dataFilesDirectory und logFilesDirectory 3) Datenbankname der Quelldatenbanken für TXP, SM, (LVER) - Tag „Source“ - Attribute „database“ Generieren des SQLs: 1. Main.tt aus dem Root öffnen und speichern, dadurch wird das SQL generiert 2. SQL-Datei ist unterhalb der Main.tt zu finden Ausführen: 1. Inhalt der Main.sql in SQL Management Studio auf dem Zielsystem kopieren 2. direkt auf der Master-DB ausführen Ergebnis: 3.4. Datamart Datenbank, Tabellen und Views anlegen Die Datamart Datenbank wird später die Dim- und Fact- Tabellen (bzw. Sichten) beinhalten. Auf diesen Tabellen und Views wird letztendlich der OLAP-Cube aufgesetzt. Im SQL Server des Zielsystems muss eine neue DB mit dem Namen „TXP_BI_DM_SSAS“ erstellt werden. Anschließend die „TXP DM SSAS“ Solution öffnen (\BIDWH\Source\TXP DM SSAS\TXP DM SSAS.sln) und das Skript zum befüllen der Datenbank generieren/publishen: - Rechtsklick auf das „TXP_BI_DM_SSAS“- Projekt Publish Edit „Target Database connection“ Auswählen der angelegten Datenbank als Target Zurück im „Publish Database“ Dialog auf „Load Values“ klicken, um die SQLCMD Variablen zu setzen - Abschließend auf „Generate Script“ klicken, das SQL Skript wird generiert und öffnet sich. Im SQL Management Studio das Skript auf der neu erstellten DB im SQLCMD Mode ausführen 3.5. Berechtigungen auf neue DB vergeben Damit später die Datenbanken durch einen Job befüllt werden kann, benötigt der NT SERVICE\SQLSERVERAGENT - Login folgende Berechtigungen: a) Leserechte (db_datareader)auf die TXP-Datenbanken b) Schreibrechte (db_owner) auf die neuen BI-Datenbanken Laufen die SQL Server-, SQL Server Agent- und SQL Server Analysis Dienste unter verschiedenen Benutzern, dann müssen diese ggf. zusätzlich berechtigt werden. 3.6. Job zum Befüllen und Aktualisieren der BI- Tabellen erstellen und ausführen Aufgaben Der „TXP_BI_LOAD_DWH“ Datenbank Job hat zwei Aufgaben a) Befüllen / Bereinigen / Aufbereiten der BI-Datenbanken aus dem Quellsystem b) Deployment und Processing der OLAP-Cubes c) Anlegen von Rollen, die die Ticketschema-Zugriffsrechte regeln (\Source\ TXP SSAS Maintain) DB Job erstellen Die Solution „TXP SSIS 2008R2“ öffnen (BIDWH\Source\TXP SSIS 2008R2\ TXP SSIS 2008R2.sln) und builden, damit im Bin-Verzeichnis des Projekts die „LoadDWH.dtsx“ erstellt wird. - SQL Skript im SQL Management Studio öffnen (\BIDWH\Scripts\Setup\Create Job.sql) Variablen prüfen, ggf. anpassen a. DTSX_Path b. Domain c. DB_Server_Name d. OLAP_Server_Name - SQL Skript im SQLCMD-Mode ausführen DB Job ausführen Durch Rechtsklick > Start Job at Step… kann der Job gestartet werden: Laufen die SQL Server-, SQL Server Agent- und SQL Server Analysis Dienste unter verschiedenen Benutzern, dann müssen diese ggf. zusätzlich berechtigt und ggf. in die Rolle „Processing“ der TXP Datenbank auf dem Analysis Server aufgenommen werden: - 3.7. Fehler in der Job- Ausführung Schlägt der Job fehl, dann kann per Rechtsklick > „View History“ die Fehlermeldung eingesehen werden. Die häufigsten Fehlerquellen sind entweder falsche Berechtigungen oder inkonsistente Daten, die ein Processing des OLAP-Cubes verhindern. Bei letzterem erscheint folgende Fehlermeldung: Description: Server: Der aktuelle Vorgang wurde aufgrund eines Fehlers in einem anderen Vorgang in der Transaktion abgebrochen. In diesem Fall konnten die OLAP-Cubes nicht korrekt verarbeitet werden. Da die eigentliche Ursache an dieser Stelle nicht erkennbar ist, müssen die OLAP-Cubes manuell deployed/processed werden: - „\BIDWH\Source\TXP SSAS\TXP SSAS.sln” Solution öffnen Rechtsklick auf “TXP SSAS” und Deployment- Einstellungen anpassen Rechtsklick auf “TXP SSAS” und „Process“ Im Processing Progress kann die tatsächliche Fehlermeldung eingesehen werden. Oft enthalten die aufbereiteten BI-Tabellen Duplikate. Um diesen Fehler zu müssen die Skripte zum Aufbereiten der Daten so angepasst werden, dass keine doppelten Datensätze mehr vorkommen oder die Daten selbst müssen bereinigt werden. 4. Neue Entität hinzufügen / Entität bearbeiten 4.1. Skripte für Extracting, Transforming und Loading (ETL) anpassen Die Skripte für ETL- Schicht müssen angepasst werden, um die neue bzw. die geänderte Entität korrekt zu laden und zu transformieren. Die Skripte werden mit einem Generator erzeugt der als Grundlage die Model.xml verwendet. Hier sind sämtliche Entitäten mit den dazugehörigen Tabellen, Spalten und Fremdschlüsseln definiert. Um eine neue Entität zu erstellen oder anzupassen, muss Sie in der Model.xml definiert werden. Dazu wird die Solution \BIDWH\Source\TXP DWH\TXP DWH.sln geöffnet. 4.1.1. Staging Befindet sich die neue Entität in einer bisher noch nicht im BI-Modul verwendeten Datenbank, so muss zunächst ein neues Source– Tag der XML hinzugefügt werden, wie im Folgenden am Beispiel der LVER- Datenbank Innerhalb des Source-Tags werden die sogenannten Staging-Bereiche definiert, aus denen letztendlich die Skripte zum Erstellen der Tabellen, Views und Funktion in der TXP_BI_StagingDatenbank generiert werden. Die Staging-Tabellen sind ein Abbild / Snapshot der eigentlichen TXP-Tabelle. In der Model.xml können sie auf zwei verschiedene Arten definiert werden: a) Komplette Tabelle – ohne Angabe eines SQL z.B.: b) Nur definierte Spalten / ggf. bereits gefiltert, wenn große Tabellen inkrementell geladen werden: Die Lokalisierungen von Entitäten bilden hier einen Sonderfall. Aktuell, wird die Tabelle LokalizedProperties (TXP) oder LokalizedTexts (LVER) als eigene Entität betrachtet und alle deutschen und englischen Werte als eigene Spalte ausgegeben. Später werden diese dann beim Transforming der eigentlichen Entität durch JOINEN der jeweiligen Tabellen zugeordnet. 4.1.2. Entscheidung: Entität oder Transaktion? Sehr große Tabellen mit sehr vielen Datensätzen wie z.B. TicketStatusChanges werden als Transaktionen in der Model.xml definiert und nicht als Entität. Eine Transaktion ist es immer dann, wenn eine einzelne Betrachtung der Datensätze keinen Sinn ergibt, wie z.B. TicketStatusChanges. Die Betrachtung eines einzelnen Datensatzes ohne die Ticket oder Status Entität würde keinen Sinn ergeben. Eine Verarbeitung als Entität wäre zwar möglich, allerdings bietet die Transaktion ein paar Möglichkeiten um Speicherplatz zu sparen. Als Faustregel gilt: „Buchungen“ oder „Protokolle“ können als Transaktionen definiert werden. Anzupassende Xml-Tags bei a) Transaktionen a. Transactions b. TransactionTransformationen b) Entitäten c. Entities d. Relations e. EntityTransformations 4.1.3. Entity Innerhalb des Model-Tags werden die Entitäten definiert: Eine Entität enthält immer folgende Attribute: name: Der Name der Entität description: Beschreibung der Entität skDbType: Typ des Surrogate Key (Ersatz key) Der surrogate key ist der neue Primärschlüssel der Entität bkDbType: Typ des Business Keys Der Businesskey ist der eigentliche Primärschlüssel der Entität, so wie er auf dem Quellsystem vorkommt singletonBkValue: Der Businesskey, der zum Singelton-Eintrag dieser Entität führt. Der Singleton-Eintrag ist eine Art Fallback. Falls eine Referenz auf diese Entität nicht mehr korrekt ist und somit nicht gefunden wird, wird der Singelton Eintrag anhand diesen Keys ermittelt. Der Singelton-einträge sind Einträge wie z.B. „Unbekannt“, „Unknown“ usw. Innerhalb jeder Entität werden die einzelnen Attribute definiert, die sie mit sich bringt. Die Attribute müssen in den Staging-Tabellen als Spalten enthalten sein. Die Entität-Attribute müssen folgende XML-Attribute beinhalten: name Name des Attributs dbType Datentyp in der Datenbank scdType Slowly Changing Dimension Typ, beschreibt das Verhalten der Historisierung von Datensätzen. Erlaubte Werte sind hier "SCD1" oder "SCD2". SCD1 Auf eine Historisierung wird verzichtet. Über den Primärschlüssel wird in der Dimensionstabelle nachgeschlagen, ob der PK des neuen Datensatzes bereits vorhanden ist. Ist dies der Fall, wird der entsprechende Satz mit den neuen Daten überschrieben. Ansonsten wird ein neuer Datensatz angefügt. SCD2 Dimensionstabellen oder einzelne Attribute werden historisiert, wenn sie schon vorhanden sind. description Beschreibung des Attributs singletonValue Wert dieser Entität für den Singleton-Eintrag 4.1.4. Relations (Entity) Relationen zwischen Entitäten werden im Relations- Tag definiert, indem die Quell-Entität und die Ziel-Entität angegeben werden. Über ein Präfix kann z.B. bei mehreren Relationen zu der gleichen Entität der Name gesteuert werden. Dieser Name muss später auch bei den Abfragen in den Transformations so verwendet werden: <Präfix>_<Zielentität>_BK Attributbeschreibung: originEntity targetEntity prefix scdType description Ausgangs Entität Referenzierte Entität, so wie sie im Entity-Tag benannt wurde Präfix, um den Namen bei mehreren Relationen zu der gleichen Entität zu steuern Typ der Historisierung / Slowly Changing Dimension, SCD1 oder SCD2 Beschreibung der Relation 4.1.5. EntityTransformations Hier werden die Skripte für die Transformationen für die jeweilige Ladestrategie (Komplett/Inkrementell/festes Zeitfenster) definiert. Die hier angegebenen Abfragen basieren auf den Staging-Tabellen z.B. die im Staging-Bereich definiert wurden. Der Name der Staging-Tabellen setzt sich folgendermaßen zusammen: Stg_<SOURCE>_<Entity> Stg_LVER_Costcentres Primarykeys werden in den Abfragen mit Entitätsname + „_BK“ (Businesskey) benannt. Zusätzlich gibt es noch die 2 Systemspalten “ValidFrom_Overrride“ und „ValidTo_Override“. Bei der Inkrementellen Ladestrategie sind diese immer NULL, bei der Kompletten-Ladestrategie wird das ValidFrom-Datum auf das Minimum gesetzt. Fremdschlüssel müssen in den Abfragen den gleichen Namen bekommen, wie die vorher definierten Relationen z.B. ExecutorUser_Principal_BK (<Relationpräfix>_<Zielentität>_BK) 4.1.6. Transaction Die Transaktionen werden ähnlich definiert wie die Entitäten. Einziger Unterschied hier ist, dass man die Relationen innerhalb des Transaction-Tag angibt im Tag Granularity: 4.1.7. TransactionTransformations Die Transformationen für Transaktionen funktionieren weitestgehend analog zu den Transformationen für Entitäten. Einzige Unterschiede sind: - Primärschlüssel und Businesskeys (Fremdschlüssel, Relationen) werden in der Abfrage zuerst definiert. - Es gibt nur eine Systemspalte: TxTimestamp, anhand dieser wird berechnet, ab welchen Zeitpunkt die Datensätze geladen werden müssen 4.1.8. SQL Skript generieren und ausführen Nachdem die Model.xml erfolgreich angepasst wurde, wird das SQL Skript durch Speichern der Main.tt generiert und anschließend im SQL Management Studio ausgeführt. Frage: wie behandeln wir Änderung an bereits laufenden BI-Lösungen z.B. wenn neue DB-Spalten hinzukommen? Das Skript bietet nur Möglichkeiten zum Initialen anlegen der Staging Objekte Können diese einfach komplett gelöscht und wieder angelegt werden? Eigentlich schon, da dies ja nur Kopien der TXP-Datenbanken sind, oder?! Der Aufwand ist nur sehr große, wenn nur eine Spalte geändert werden muss. Modulweise wäre evtl. besser. 4.1.9. Berechtigungen auf neuen DB vergeben Damit später die Datenbanken durch einen Job befüllt werden kann, benötigt der NT SERVICE\SQLSERVERAGENT - Login folgende Berechtigungen: a) Leserechte (db_datareader)auf die TXP-Datenbanken b) Schreibrechte (db_owner) auf die neuen BI-Datenbanken Laufen die SQL Server-, SQL Server Agent- und SQL Server Analysis Dienste unter verschiedenen Benutzern, dann müssen diese ggf. zusätzlich berechtigt werden. 4.2. SSIS Paket anpassen Das SSIS Paket wird durch den DB Job periodisch ausgeführt und dient dazu, die Daten von TXP in die Staging- Tabellen zu laden, zu Transformieren und entsprechend für den OLAP Cube aufzubereiten. Dazu werden die zuvor angelegt Functions und Views verwendet, die über den Generator erstellt wurden. Damit die Datensätze unserer neuen Entität ebenfalls geladen und aufbereitet werden, muss das SSIS Paket angepasst werden: Solution \BIDWH\Source\TXP SSIS 2008R2\TXP SSIS 2008R2.sln öffnen 4.2.1. Tasks für das Staging hinzufügen In der Staging- Sequenz des SSIS-Pakets, muss die neue Entität hinzugefügt werden: - Toolbox > „Execute SQL Task“ auswählen und in die Sequenz ziehen Rechtsklick Edit a. Name vergeben „Stage „ + Entität, plural z.B. „Stage Projects“ b. Connection: BI_Staging c. SQL Statement: „EXEC Stage_<Source>_<Entity plural>” z.B. EXEC Stage_LVER_Projects Das Staging für sämtliche Entitäten kann parallel ausgeführten werden, da hier keine Abhängigkeiten berücksichtigt werden müssen. Die Daten werden hier lediglich aus den Quelldatenbanken gelesen. 4.2.2. Task für Transforming und Loading hinzufügen Nachdem die Stagingtabellen befüllt wurden, müssen die Datensätze aufbereitet (Transfom) und bereitgestellt (Load) werden. Dazu muss pro Entität jeweils ein neuer „Execute SQL Task“ für das Transforming und für das Loading in die entsprechende Sequenz hinzugefügt werden: Zu beachten ist, dass der Task für das Loading erst nach dem Transforming ausgeführt. Ebenfalls beachten muss man Relationen zu anderen Entitäten. Während das Transforming noch parallel verlaufen kann, darf das Loading einer Entität erst ausgeführt werden, wenn auch alle Verknüpften Entitäten erfolgreich geladen wurden. Z.B. Können Kostenstellen erst geladen werden, wenn zuvor die Projekte geladen worden sind - Toolbox > „Execute SQL Task“ auswählen und in die Sequenz ziehen Rechtsklick Edit a. Name vergeben „Load „ + Entität, plural z.B. „Load Projects“ b. Connection: BI_Cleansing c. SQL Statement: „EXEC Load_<Entity>” z.B. EXEC Load_Project 4.3. BI Datamart Skripte anpassen und generieren Die TXP_BI_DM_SSAS- Datenbank beinhaltet über Views, die auf die TXP_BI_Core- Datenbank der ETL Schicht zugreifen, die aufbereiteten Daten (Dimensions und Facts). Diese werden letztendlich im OLAP-Cube verwendet. Wenn eine Entität hinzugefügt oder geändert werden soll, dann müssen die Entsprechenden Views hier angepasst werden: - Solution \BIDWH\Source\TXP DM SSAS\TXP DM SSAS.sln öffnen Entsprechende Views auswählen und ändern Platzhalter für die BI_CORE_DB verwenden Bei komplett neuen Entitäten oder wenn sich die Datenstrukturen in der TXP_BI_Core- Datenbank geändert haben, dann müssen zunächst die Datenbank-Objekte (Tables, Views, StoredProcedure) in der Solution hinzugefügt bzw. aktualisiert werden. Dazu kann man die „Schema Compare“ – Funktion verwenden, mit der man die Objekte in der Solution mit den tatsächlichen DB Objekten vergleichen und anschließend aktualisieren kann: - Rechtsklick auf das TXP_BI_CORE Projekt (obere Projekt) Schema Compare Source und Target tauschen (Button in der Mitte), sodass TXP_BI_Core aus der Solution das Target wird Als Source die TXP_BI_Core aus dem SQL Server auswählen Vergleichen über „Compare“ Schaltfläche Projekt updaten über „Update“ Nachdem die Objekte aktualisiert und die Änderungen vorgenommen wurden, kann das SQL Skript publiziert/generiert werden: - Rechtsklick TXP_BI_DM_SSAS (unteres Projekt) Publish… Target database connection editieren SQL CMDD variablen Laden Generate Script und anschließend im SQL Management Studio auf der TXP_BI_DM_SSAS Datenbank ausführen Das generierte Skript enthält nur Änderungen, die noch nicht in der TXP_BI_DM_SSAS Datenbank vorgenommen wurden. 4.4. DB Job ausführen Nachdem alle Skripte generiert und ausgeführt wurden und auch das SSIS Pakte aktualisiert wurde, muss nun der DB Job ausgeführt werden, der letztendlich dafür sorgt, dass die Datensätze geladen und Transformiert werden. 4.5. OLAP Cube erstellen / anpassen Solution \BIDWH\Source\TXP SSAS\TXP SSAS.sln öffnen, um die Cubes zu bearbeiten 1. Data Source Views aktualisieren a. Doppelklick auf DSV_DWH.dsv b. Im neuen Fenster, oben links den Refresh-Button klicken c. alle neuen Objekte werden geladen 2. Neue Objekte / Tabellen der Data Source View hinzufügen d. In data source view „Add/Remove“ Tables e. Hinzuzufügende Tabellen und Sichten auswählen und hinzufügen 3. Die gewünschten Änderungen am Cube vornehmen bzw. einen neuen Cube erstellen 5. Fehlerbehandlung / FAQ 5.1. DB Job läuft nicht durch 5.1.1. Keine Berechtigung auf TXP Datenbank Ursache: Dienste des SQL Servers, SQL Server Agent und Analysis Server werden unter verschiedenen Benutzern ausgeführt. Spezielle Rechtevergabe. Lösung: Benutzer sollten db_owner der BI-Datenbanken sein und in der Rolle „Processing“ des Analysis Server aufgenommen werden. 5.1.2. SsasMaintain.exe konnte nicht ausgeführt werden Ursache: Der NT SERVICE\SQLSERVERAGENT hatte keine Berechtigung folgende Datei auszuführen: \BIDWH\Source\TXP SSIS 2008R2\SsasMaintain\SsasMaintain.exe Lösung: Berechtigungen auf Dateiebene?! 6. Durchgeführte Änderungen SQLServerAgent automatisch als db_owner hinzugefügt Processing – Rolle im SSAS automatisch angelegt Fehler behoben: Doppelte Einträge in Tabelle TXP_BI_DM_SSAS.BaseDate, bei erneutem Ausführen der Skripte / Update der Tabellenstruktur (z.B. neue Spalten, Entitäten,…) Fehler behoben: Fehler beim Processing wegen Duplikaten bei den ContractPriorityNames Lsg: Keycolumn ist ObjectGuid der Priority, nicht der Name 7. Verbesserungsmöglichkeiten / Ideen TXP_BI_DM_SSAS per Skript anlegen – siehe (3.4.) Anpassen Model.xml über Tool / UI, ansonsten sehr hohe Fehlerquelle, schwierig zu beseitigen