Daten in Aggregate Storage Cubes laden

Essbase Aggregate Storage-(ASO-)Cubes erleichtern die Analyse sehr großer Dimensionen, die bis zu eine Million oder mehr Elemente enthalten. Damit Sie Daten in so große Outlines laden können, können Sie inkrementell laden, die Dataload-Puffer verwalten und Datensegmente zusammenführen/ersetzen.

Um das Laden von Datenwerten in solche großen Cubes effizient zu unterstützen, führt Essbase folgende Schritte aus:

  • Ermöglicht die Verarbeitung mehrerer Datenquellen über temporäre Dataload-Puffer

  • Ermöglicht die Steuerung des Prozentsatzes der Ressourcen, die ein Dataload-Puffer verwendet

  • Ermöglicht einem Aggregate Storage-Cube, mehrere Datensegmente zu enthalten (eine Abfrage der Datenbank greift auf jeden Bereich zu und sammelt alle Datenzellen)

  • Bietet einen inkrementellen Dataload-Prozess, der in einer Zeitspanne abgeschlossen wird, die proportional zur Größe der inkrementellen Daten ist

Um Werte in Aggregate Storage-Cubes zu laden, können Sie die Seite "Jobs" in der Essbase-Weboberfläche verwenden oder die Anweisungen Datenbank ändern und Daten importieren in MaxL verwenden. Beispiele in diesem Dokument basieren auf der Verwendung von MaxL.

Hinweis:

Wenn Werte über eine Aggregation berechnet und gespeichert wurden, aktualisiert Essbase automatisch gespeicherte Werte auf höherer Ebene, wenn Datenwerte geändert werden. Es ist kein zusätzlicher Berechnungsschritt erforderlich. Das Vorhandensein und die Größe einer Aggregation können sich auf die Zeit für den Dataload auswirken.

Sie können keine Daten exportieren, während Sie Daten in einen Cube laden.

Wenn Sie eine ASO-Anwendung kopieren und alle Daten im Cube beibehalten möchten, müssen Sie alle inkrementellen Datensegmente im Hauptdatenbankbereich zusammenführen, bevor Sie die Anwendung kopieren. Daten in nicht zusammengeführten inkrementellen Datenbereichen werden nicht kopiert.

Daten inkrementell über einen Dataload-Puffer laden

Wenn Sie inkrementelle Dataloads verwenden, um Datenwerte in einen Essbase Aggregate Storage-(ASO-)Cube zu laden, können Sie die Performance verbessern. Essbase lädt die Werte zuerst in einen temporären Dataload-Puffer, wobei nach dem Lesen aller Datenquellen ein endgültiger Schreibvorgang in den Speicher erfolgt.

Wenn Sie die MaxL-Anweisung Daten importieren verwenden, um Datenwerte aus einer einzelnen Datenquelle zu laden, ist der Dataload-Puffer für Aggregate Storage nicht erforderlich.

Wenn Sie mehrere Importdatenbankdaten-MaxL-Anweisungen verwenden, um Datenwerte in Aggregate Storage-Cubes zu laden, kann Essbase einen temporären Dataload-Puffer verwenden und den endgültigen Schreibvorgang im Speicher abschließen, nachdem alle Datenquellen gelesen wurden. Die Verwendung des Dataload-Puffers für Aggregate Storage kann die Gesamtperformance des Dataloads erheblich verbessern.

Im Dataload-Puffer für Aggregate Storage sortiert und festschreibt Essbase die Werte, nachdem alle Datenquellen gelesen wurden. Wenn für eine bestimmte Datenzelle mehrere (oder doppelte) Datensätze gefunden werden, werden die Werte akkumuliert. Essbase speichert dann die kumulierten Werte – Ersetzen, Hinzufügen oder Subtrahieren von vorhandenen Datenwerten im Cube.

Hinweis:

Wenn Sie den Dataload-Puffer für Aggregate Storage verwenden, wird beim Laden des Datenpufferinhalts in den Cube die Option zum Ersetzen, Hinzufügen oder Subtrahieren von Werten für die gesamte Gruppe von Datenquellen angegeben.

Während der Dataload-Puffer im Speicher vorhanden ist, können Sie keine Aggregationen erstellen oder Bereiche zusammenführen, da diese Vorgänge ressourcenintensiv sind. Sie können jedoch Daten in andere Dataload-Puffer laden und Abfragen und andere Vorgänge für den Cube ausführen. Es kann eine kurze Wartezeit für Abfragen geben, bis das vollständige Dataset festgeschrieben und Aggregationen erstellt werden.

Der Dataload-Puffer befindet sich im Speicher, bis der Pufferinhalt in den Cube festgeschrieben oder die Anwendung neu gestartet wird. Danach wird der Puffer gelöscht. Auch wenn der Commit-Vorgang fehlschlägt, wird der Puffer gelöscht, und die Daten werden nicht in den Cube geladen. Sie können einen Dataload-Puffer manuell löschen, indem Sie die alter database MaxL-Anweisung verwenden.

Hinweis:

Wenn Sie die Anwendung stoppen, bevor der Pufferinhalt festgeschrieben wird, wird der Puffer gelöscht. In diesem Fall müssen Sie nach dem Neustart der Anwendung einen neuen Puffer initialisieren und die Daten in diesen laden.

So verwenden Sie den Dataload-Puffer für Aggregate Storage-Cubes:

  1. Bereiten Sie den Dataload-Puffer vor, bei dem Datenwerte sortiert und akkumuliert werden, indem Sie die Anweisung alter database MaxL verwenden, um einen Dataload-Puffer für Aggregate Storage zu initialisieren. Beispiel:
    alter database ASOsamp.Basic 
       initialize load_buffer with buffer_id 1;
  2. Laden Sie Daten aus Ihren Datenquellen mit der Anweisung Datenbank importieren MaxL in den Dataload-Puffer. Mit mehreren Anweisungen können Sie Daten aus mehreren Datenquellen laden. Sie können eine beliebige Kombination von Datenquellen einschließen. Geben Sie eine Regeldatei an, wenn für die Datenquelle eine Datei erforderlich ist.

    Im folgenden Beispiel werden zwei Datenquellen, von denen eine eine Regeldatei verwendet, in denselben Dataload-Puffer geladen:

    import database ASOsamp.Basic data 
       from server data_file 'file_1.txt' 
       to load_buffer with buffer_id 1
       on error abort; 
    import database ASOsamp.Basic data
       from server data_file 'file_2' 
       using server rules_file ‘rule’ 
       to load_buffer with buffer_id 1
       on error abort;
    

    Informationen zum gleichzeitigen Laden von Daten in mehrere Ladepuffer finden Sie unter Mehrere Dataloads parallel.

  3. Mit der Anweisung Daten importieren MaxL können Sie den Inhalt des Dataload-Puffers in den Cube festschreiben. Beispiel:
    import database ASOsamp.Basic data 
       from load_buffer with buffer_id 1;

    Informationen zum Festschreiben des Inhalts mehrerer Dataload-Puffer in den Cube mit einer MaxL-Anweisung finden Sie unter Mehrere Dataloads parallel.

Das folgende inkrementelle Dataload-Beispiel bietet eine optimale Performance, wenn sich neue Datenwerte nicht mit vorhandenen Werten überschneiden:

  1. Erstellen Sie einen einzelnen Dataload-Puffer mit den Eigenschaften ignore_missing_values und ignore_zero_values. Beispiel:

    alter database ASOsamp.Basic 
       initialize load_buffer with buffer_id 1
       property ignore_missing_values, ignore_zero_values;

    Wenn der Cube während der Aktualisierung zum Senden von Datenanforderungen verfügbar sein muss, initialisieren Sie den Dataload-Puffer mit dem Grammatiksatz resource_usage für 80%. Beispiel:

    alter database ASOsamp.Basic 
       initialize load_buffer with buffer_id 1
       resource_usage 0.8 property
       ignore_missing_values, ignore_zero_values;
  2. Die Daten in den Puffer laden. Beispiel:

    import database ASOsamp.Basic data 
       from server data_file 'file_1.txt' 
       to load_buffer with buffer_id 1
       on error abort; 
    import database ASOsamp.Basic data
       from server data_file 'file_2'
       to load_buffer with buffer_id 1
       on error abort;
    
  3. Schreiben Sie den Inhalt des Dataload-Puffers in den Cube fest, indem Sie einen Bereich erstellen und Werte hinzufügen. Beispiel:

    import database ASOsamp.Basic data 
       from load_buffer with buffer_id 1
       add values create slice;

Auslastung von Dataload-Pufferressourcen und Datenträgerspeicher

Wenn Sie inkrementelle Dataloads verwenden, um Datenwerte in einen Essbase Aggregate Storage-(ASO-)Cube zu laden, können Sie die zulässige Ressourcennutzung und die Wartezeit für den temporären Dataload-Puffer einschränken. Sie können die Speicherplatzbelegung reduzieren, indem Sie den Tablespace verwalten.

Ressourcenverwendung für Dataload-Puffer steuern

Bei einem inkrementellen Dataload verwendet Essbase den Aggregate Storage-Cache zum Sortieren von Daten. Sie können die Menge des Caches steuern, die ein Dataload-Buffer verwenden kann, indem Sie den Prozentsatz angeben. Der Prozentsatz ist eine Zahl zwischen .01 und 1.0 einschließlich; nur zwei Ziffern nach dem Dezimalpunkt sind signifikant, z.B. wird 0.029 als 0.02 interpretiert. Standardmäßig ist die Ressourcennutzung eines Dataload-Puffers auf 1.0 gesetzt, und die gesamte Ressourcennutzung aller Dataload-Puffer, die in einer Datenbank erstellt wurden, darf 1.0 nicht überschreiten. Beispiel: Wenn ein Puffer der Größe 0,9 vorhanden ist, können Sie keinen weiteren Puffer mit einer Größe größer als 0,1 erstellen.

Hinweis:

Sendevorgänge erstellen intern Lastpuffer der Größe 0.2. Daher führt ein Lastpuffer der Standardgröße 1.0 dazu, dass Sendevorgänge aufgrund unzureichender Ressourcen des Dataload-Puffers nicht erfolgreich verlaufen.

Um die Menge der Ressourcen festzulegen, die der Puffer verwenden darf, geben Sie den Prozentsatz an, wenn Sie den Dataload in der Essbase-Weboberfläche initiieren. Wenn Sie MaxL verwenden, verwenden Sie die alter database MaxL-Anweisung mit der Grammatik resource_usage.

Beispiel: Um resource_usage auf 50% des gesamten Cache festzulegen, verwenden Sie die folgende Anweisung:

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1
   resource_usage .5;

Wenn Sie nebenläufige Sendevorgänge ausführen möchten, verwenden Sie die Konfigurationseinstellung ASOLOADBUFFERWAIT und die Anweisung alter database MaxL mit der Grammatik wait_for_resources. ASOLOADBUFFERWAIT gilt für die Erstellung von Aggregatspeicher-Dataload-Puffern mit der Option wait_for_resources und gilt für Zuteilungen, benutzerdefinierte Berechnungen und Datenaktualisierungsvorgänge.

Speicherplatz für inkrementelle Dataloads verwalten

Inkrementelle Dataloads in Aggregate Storage-Cubes können Speicherplatz belegen, der bis zu dem Doppelten der Größe der aktuellen Datendateien beträgt. Beispiel: Angenommen, die Größe der Daten eines Cubes beträgt 1 GB, und die Größe des inkrementellen Dataloads beträgt 200 MB, für eine Gesamtgröße von 1,2 GB. Während des inkrementellen Dataload-Prozesses belegt Essbase möglicherweise bis zu 2,4 GB Festplattenspeicher.

Wenn Datenbanken größer als 2 GB sind, können Sie die Auslastung des Festplattenspeichers reduzieren, indem Sie die maximale Dateigröße des Default Tablespace auf maximal 2 GB festlegen.

Um die maximale Dateigröße des Standard-Tablespace festzulegen, können Sie die alter Tablespace-Anweisung MaxL verwenden.

Eigenschaften für Dataload-Puffer

Wenn Sie Datenwerte inkrementell in einen Aggregate Storage-(ASO-)Ladepuffer laden, können Sie Essbase anweisen, fehlende und Nullwerte in den Quelldaten zu ignorieren. Außerdem können Sie Zellkonflikte lösen (ungültige Aggregationen entfernen, indem Sie doppelte Zellen kombinieren).

Sie können folgende Eigenschaften für den Dataload-Puffer festlegen:

  • ignore_missing_values: #MI-Werte im eingehenden Datenstream werden ignoriert

  • ignore_zero_values: Nullwerte im eingehenden Datenstream werden ignoriert

  • aggreg_use_last: Kombiniert doppelte Zellen mit dem Wert der Zelle, die zuletzt in den Ladepuffer geladen wurde

    Hinweis:

    Wenn Sie Text- und Datumswerte in eine Aggregate Storage-Datenbank laden, verwenden Sie die Eigenschaft aggregate_use_last, um ungültige Aggregationen zu beseitigen. Weitere Richtlinien finden Sie unter Text- und Datumskennzahlen laden, löschen und exportieren.

Wenn Sie mehrere Eigenschaften im Befehl verwenden und Konflikte auftreten, hat die zuletzt aufgeführte Eigenschaft Vorrang.

Fehlende und Nullen im Datenstream behandeln

Wenn Sie Daten inkrementell laden, können Sie angeben, wie fehlende und Nullwerte in den Quelldaten beim Laden der Daten in den Dataload-Puffer behandelt werden.

Um die Eigenschaften des Dataload-Puffers festzulegen, verwenden Sie die alter database MaxL-Anweisung mit der property-Grammatik.

Beispiel:

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1
   property ignore_missing_values, ignore_zero_values;

Zellkonflikte lösen

Zum Auflösen von Zellenkonflikten für doppelte Zellen können Sie angeben, ob die letzte in den Lastpuffer geladene Zelle verwendet werden soll.

Wenn Zellen mit identischen Schlüsseln in denselben Dataload-Puffer geladen werden, löst Essbase standardmäßig den Zellkonflikt auf, indem die Werte zusammen hinzugefügt werden.

Um einen Dataload-Puffer zu erstellen, der doppelte Zellen kombiniert, indem er den Wert der Zelle akzeptiert, die zuletzt in den Lastpuffer geladen wurde, verwenden Sie die alter database-Anweisung MaxL mit der Grammatik aggregate_use_last.

Beispiel:

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1
   property aggregate_use_last;

Hinweis:

Wenn Dataload-Puffer mit der Grammatik aggregate_use_last verwendet werden, sind Dataloads wesentlich langsamer, selbst wenn keine doppelten Schlüssel vorhanden sind.

Mehrere Dataloads parallel

In einem Essbase Aggregate Storage-(ASO-)Cube können mehrere Dataload-Puffer vorhanden sein. Obwohl jeweils nur ein Commit-Prozess aktiv sein kann, können Sie mehrere Dataload-Puffer in demselben Commit festschreiben. Dies ist schneller als das Festschreiben von Puffern einzeln.

Um Daten gleichzeitig in mehrere Dataload-Puffer zu laden, verwenden Sie separate MaxL Shell-Sessions. Beispiel: Laden Sie in einer MaxL Shell-Session Daten in einen Puffer mit der ID 1:

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1 resource_usage 0.5;
import database ASOsamp.Basic data
   from data_file "dataload1.txt"
   to load_buffer with buffer_id 1
   on error abort;

Gleichzeitig laden Sie in einer anderen MaxL Shell-Session Daten in einen Puffer mit der ID 2:

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 2 resource_usage 0.5;
import database ASOsamp.Basic data
   from data_file "dataload2.txt"
   to load_buffer with buffer_id 2
   on error abort;

Wenn die Daten vollständig in die Dataload-Puffer geladen sind, verwenden Sie eine MaxL-Anweisung, um den Inhalt beider Puffer mit einer durch Komma getrennten Liste von Puffer-IDs in der Datenbank festzuschreiben:

Beispiel: Diese Anweisung lädt den Inhalt der Puffer 1 und 2:

import database ASOsamp.Basic data 
   from load_buffer with buffer_id 1, 2;

Hinweis:

Beim Laden von SQL-Daten in Aggregate Storage Cubes können Sie bis zu acht Laderegeln verwenden, um Daten parallel zu laden. Diese Funktionalität unterscheidet sich von dem oben beschriebenen Prozess. Wenn Sie mehrere SQL-Dataloads parallel vorkonfigurieren, können Sie eine Datenbankimportanweisung MaxL mit der Verwendung mehrerer rules_file-Grammatik verwenden. Essbase initialisiert mehrere temporäre Aggregate Storage Dataload-Puffer (einer für jede Regeldatei) und schreibt den Inhalt aller Puffer in einem Vorgang in den Cube fest.

Dataload-Puffer für einen Aggregate Storage-Cube auflisten

In einem Essbase Aggregate Storage-(ASO-)Cube können mehrere Dataload-Puffer vorhanden sein. Für eine Liste und eine Beschreibung der Dataload-Puffer, die im Cube vorhanden sind, verwenden Sie die Anweisung query database MaxL mit der Grammatik list load_buffers.

Die Syntax der MaxL-Anweisung zum Auflisten von ASO-Datenladepuffern lautet:

query database appname.dbname list load_buffers;

Diese Anweisung gibt die folgenden Informationen zu jedem vorhandenen Dataload-Puffer zurück:

Tabelle 37-2: Informationen zum Dataload-Puffer

Feld Beschreibung

Buffer-ID

ID eines Dataload-Puffers (eine Zahl zwischen 1 und 4.294.967.296).

Intern

Ein boolescher Wert, der angibt, ob der Dataload-Puffer intern von Essbase (TRUE) oder von einem Benutzer (FALSE) erstellt wurde.

Aktiv

Ein boolescher Wert, der angibt, ob der Dataload-Puffer derzeit von einem Dataload-Vorgang verwendet wird.

resource_usage

Der Prozentsatz (eine Zahl zwischen .01 und 1.0 einschließlich) des Aggregate Storage-Cache, den der Dataload-Puffer verwenden darf.

Aggregationsmethode

Eine der Methoden zum Kombinieren mehrerer Werte für dieselbe Zelle im Puffer:

  • AGGREGATE_SUM: Werte werden hinzugefügt, wenn der Puffer mehrere Werte für dieselbe Zelle enthält.

  • AGGREGATE_USE_LAST: Doppelte Zellen mit dem Wert der Zelle verbinden, die zuletzt in den Ladepuffer geladen wurde.

ignore_missings

Ein boolescher Wert, der angibt, ob #MI-Werte im eingehenden Datenstream ignoriert werden sollen.

ignore_zeros

Ein boolescher Wert, der angibt, ob Nullen im eingehenden Datenstream ignoriert werden sollen.

Siehe: Abfragedatenbank (Aggregatspeicher)

Datensegment erstellen

Sie können den Dataload-Puffer in einem Essbase Aggregate Storage-(ASO-)Cube inkrementell festschreiben, um ein Segment zu erstellen. Nach dem Laden eines neuen Segments in den Cube erstellt Essbase alle erforderlichen Ansichten des Segments (z.B. Aggregatsichten), bevor die neuen Daten für Abfragen sichtbar sind.

Das Erstellen eines Datensegments ist nützlich, da es die Performance von inkrementellen Dataloads verbessert. Die Zeit, die ein inkrementeller Dataload benötigt, ist proportional zur Menge neuer Daten. Die Größe des Cubes ist kein Faktor.

Um einen Datenbereich zu erstellen, verwenden Sie die Anweisung import database MaxL mit der Grammatik create slice.

Um beispielsweise einen Bereich zu erstellen, indem Sie Werte überschreiben (Standardwert), verwenden Sie die folgende Anweisung:

import database ASOsamp.Basic data
   from load_buffer with buffer_id 1
   override values create slice;

Hinweis:

Wenn Sie beim Erstellen eines Abschnitts Überschreibungswerte verwenden, werden die Werte für #MISSING durch Nullen ersetzt. Die Verwendung dieser Option ist deutlich langsamer als die Verwendung der Optionen zum Hinzufügen oder Subtrahieren von Werten.

Siehe: Daten importieren (Aggregatspeicher)

Inkrementelle Datensegmente zusammenführen

Wenn Sie Daten inkrementell in einen Aggregate Storage-(ASO-)Cube laden, können Sie die inkrementellen Datensegmente manuell mit dem Haupt-Cube-Slice zusammenführen. Alternativ können Sie AUTOMERGE verwenden, um Essbase so zu konfigurieren, dass Bereiche beim Dataload automatisch zusammengeführt werden.

Inkrementelle Datensegmente beim Laden von Daten in einen Aggregate Storage-Cube automatisch zusammenführen

Mit den Konfigurationseinstellungen AUTOMERGE und AUTOMERGEMAXSLICENUMBER können Sie angeben, ob Essbase bei einem Dataload automatisch inkrementelle Datensegmente zu einem Aggregate Storage Cube zusammenführt.

Einstellungen für AUTOMERGE-Konfiguration:

  • ALWAYS – Gibt an, dass inkrementelle Datensegmente während eines Dataloads automatisch in einen Aggregate Storage Cube zusammengeführt werden. Standardmäßig werden Zusammenführungen einmal pro vier aufeinanderfolgende inkrementelle Datensegmente ausgeführt. Wenn jedoch die Konfigurationseinstellung AUTOMERGEMAXSLICENUMBER verwendet wird, wird der automatische Zusammenführungsprozess aktiviert, wenn der AUTOMERGEMAXSLICENUMBER-Wert überschritten wird. Die Größe der inkrementellen Datensegmente ist kein Faktor bei der Auswahl, welche zusammengeführt werden.

    Der Standardwert ist IMMER.

  • NEVER (NIE) – Gibt an, dass inkrementelle Datensegmente während eines Dataloads niemals automatisch in einen Aggregate Storage-Cube zusammengeführt werden. Um inkrementelle Datensegmente manuell zusammenzuführen, verwenden Sie die alter database MaxL-Anweisung mit der merge-Grammatik.

  • SELECTIVE – Gibt an, dass der Prozess für die automatische Zusammenführung inkrementeller Datensegmente aktiviert wird, wenn die Anzahl der in der Konfigurationseinstellung AUTOMERGEMAXSLICENUMBER angegebenen inkrementellen Datensegmente überschritten wird. Wenn die Anzahl der inkrementellen Datensegmente im Dataload den Wert von AUTOMERGEMAXSLICENUMBER nicht überschreitet, wird der Prozess zur automatischen Zusammenführung nicht aktiviert.

Inkrementelle Datenselemente manuell zusammenführen

Sie können alle inkrementelle Datensegmente im Hauptdatensegment zusammenführen oder alle inkrementelle Datensegmente in einem einzelnen Datensegment zusammenführen und dabei das Hauptdatensegment unverändert lassen. Zum Zusammenführen von Bereichen benötigen Sie dieselben Berechtigungen wie zum Laden von Daten (Berechtigung für Datenbankupdates oder höher).

Nachdem die neue Eingabeansicht in den Cube geschrieben wurde, erstellt Essbase die Aggregatansichten für den Bereich. Die für den neuen Bereich erstellten Ansichten sind eine Teilmenge der Ansichten, die im Hauptbereich vorhanden sind.

Hinweis:

Sie können keine Daten exportieren, wenn Sie eine Zusammenführung durchführen.

Wenn Sie Daten mit dem logischen Vorgang "Region löschen" aus einer Region gelöscht haben, was zu einem Wert von Null für die Zellen führt, die Sie gelöscht haben, können Sie festlegen, dass Zellen mit Nullwerten während des Zusammenführungsvorgangs entfernt werden.

Um Zusammenführungsvorgänge auszuführen, verwenden Sie die alter database MaxL-Anweisung mit der merge-Grammatik.

Beispiel: Um alle inkrementellen Datensegmente mit dem Hauptbereich zusammenzuführen, verwenden Sie die folgende Anweisung:

alter database ASOsamp.Basic
   merge all data;

Um alle inkrementellen Datensegmente in den Hauptbereich zusammenzuführen und Nullwertzellen zu entfernen, verwenden Sie die folgende Anweisung:

alter database ASOsamp.Basic
   merge all data remove_zero_cells;

Um alle inkrementellen Datensegmente in einem einzelnen Datensegment zusammenzuführen, verwenden Sie die folgende Anweisung:

alter database ASOsamp.Basic
   merge incremental data;

Hinweis:

Bevor Sie eine Aggregate Storage-Anwendung kopieren, müssen Sie alle inkrementellen Datensegmente mit dem Hauptbereich zusammenführen. Daten in nicht zusammengeführten inkrementellen Datenbereichen werden nicht kopiert.

Verwandte Links

AUTOMERGE

AUTOMERGEMAXSLICENUMBER

Datenbank ändern (Aggregatspeicher)

Daten mit inkrementellen Datensegmentinhalten ersetzen

Für Aggregate Storage-(ASO-)Datasets, die klein genug sind, um vollständig neu zu laden und dabei eine geringe Datenlatenz zu gewährleisten, kann Essbase den aktuellen Inhalt eines Aggregate Storage-Cubes entfernen und den Cube durch den Inhalt eines angegebenen Dataload-Puffers ersetzen.

Die atomare Ersetzungsfunktion übergeht die Abfrage des alten Inhalts des Cubes in den neuen Inhalt, ohne den Service zu unterbrechen. Das neu geladene Dataset wird aggregiert, um dasselbe Set von Ansichten zu erstellen, das für das ersetzte Dataset vorhanden war.

Essbase ermöglicht auch das atomare Ersetzen des Inhalts aller inkrementellen Datensegmente in einem Cube. Betrachten Sie eine Situation, in der Daten in einen relativ großen, statischen Datensatz getrennt werden können, der nie aktualisiert wird, und einen relativ kleinen, flüchtigen Datensatz, für den die einzelnen Aktualisierungen schwer zu identifizieren sind, aber auf den flüchtigen Datensatz beschränkt sind. Beispiel: Das große statische Dataset besteht aus historischen Transaktionsdaten der letzten drei Jahre. Für die Transaktionsdaten der letzten zwei Monate können Benutzer jedoch ein Merkmal einer Transaktion in der Quelldatenbank ändern. Die Verfolgung dieser Änderungen kann unerschwinglich komplex sein. Sie können das statische Dataset als Hauptbereich in einem Cube und das flüchtige Dataset als einen oder mehrere inkrementelle Abschnitte laden.

Beim Festschreiben von Bereichen beim inkrementellen ASO-Dataload entfernt Essbase den aktuellen Inhalt aller inkrementellen Datensegmente und erstellt einen neuen Bereich (mit der Grammatik Werte hinzufügen in der Puffer-Commit-Spezifikation der Importdatenbank-MaxL-Anweisung) mit dem Inhalt eines angegebenen Dataload-Puffers. Das neu geladene Dataset wird um aggregierte Ansichten erweitert, die auf dem Set der Ansichten basieren, die im Hauptbereich vorhanden sind.

Hinweis:

Um die Grammatik override zu verwenden, erstellen Sie einen Dataload-Puffer mit der Eigenschaft ignore_missing_values, um eine optimale Performance zu erzielen. Darüber hinaus müssen Sie sicherstellen, dass keine Konflikte zwischen den statischen und den volatilen Datasets auftreten (z.B. darf nicht jeder Datensatz für dieselbe Zelle einen Wert enthalten).

Um den Inhalt einer Datenbank oder die inkrementellen Datensegmente in einem Cube zu ersetzen, verwenden Sie die import database MaxL-Anweisung mit der override-Grammatik.

Beispiel: Um den Inhalt eines Cubes zu ersetzen, verwenden Sie die folgende Anweisung:

import database ASOsamp.Basic data
   from load_buffer with buffer_id 1
   override all data;

Um den Inhalt aller inkrementellen Datensegmente durch einen neuen Bereich zu ersetzen, verwenden Sie die folgende Anweisung:

import database ASOsamp.Basic data
   from load_buffer with buffer_id 1
   override incremental data;

Hinweis:

Wenn der Override-Ersatz nicht erfolgreich verläuft, wird das alte Dataset weiterhin von Essbase verwendet.

In Smart View entspricht der Submit-Befehl der Verwendung der inkrementellen Dataload-Funktionalität mit der Überschreibungsgrammatik.

Während der Ausführung eines Sendevorgangs warten neue Anforderungen zum Sperren, Entsperren und Abrufen und Sperren, bis der Sendevorgang abgeschlossen ist.

Siehe: Daten importieren (Aggregatspeicher)

Statistiken für inkrementelle Datensegmente anzeigen

Essbase stellt Statistiken zur Größe und Anzahl der inkrementellen Aggregate Storage-(ASO-)Datensegmente sowie zu den Kosten für die Abfrage der inkrementellen Datensegmente bereit.

Die Zeit, die eine Abfrage für den Zugriff auf alle inkrementellen Datensegmente benötigt, wird als Prozentsatz (einschließlich .01 und 1.0) angegeben. Wenn ein Cube über einen Hauptbereich und mehrere inkrementelle Datensegmente verfügt, bedeutet eine Abfragestatistik von 0,66, dass zwei Drittel der Abfragezeit für die Abfrage der inkrementellen Datensegmente aufgewendet wurde und ein Drittel für die Abfrage des Hauptdatensegments ausgegeben wurde. Wenn die Kosten für die Abfrage der inkrementellen Datensegmente zu hoch sind, können Sie die Bereiche zusammenführen.

Um die Informationen zu Bereichen anzuzeigen, verwenden Sie die Grammatik list Aggregate_storage slice_info in der query database MaxL-Anweisung. Beispiel:

query database ASOsamp.Basic list aggregate_storage slice_info;

Abfragedatenbank (Aggregatspeicher)

Elemente in Aggregate Storage-Dataloads neu zuordnen

Renegade-Elemente ermöglichen die Fortsetzung eines Essbase Aggregate Storage-(ASO-)Dataloads, selbst wenn eine angegebene Elementkombination fehlende oder ungültige Elemente aufweist.

Wenn ein Dataload ein fehlendes oder ungültiges Element findet, wird der Dataload fortgesetzt. Dabei wird der Datenwert des fehlenden oder ungültigen Elements unter dem Element gespeichert, das als abgetretenes Element in der Dimension getaggt ist. Wenn kein abgetretenes Element in der Dimension festgelegt ist, wird der Datensatz abgelehnt. Wenn bereits Daten für das abgerufene Element vorhanden sind, hängt das Verhalten davon ab, ob Sie beim Erstellen der Dataload-Regeldatei Werte hinzugefügt oder Werte überschrieben haben.

Jeder Dimension kann nur ein Element als abtrünniges Element zugewiesen sein, und das abtrünnige Element muss ein Element der Ebene 0 sein.

Die folgende Dataload-Datei enthält ein Element namens SC:

Product  Measures   *Data*
NY,      Sales       100
SA,      Sales       200
SC,      Sales       300    

In der folgenden Gliederung wird kein Element mit dem Namen SC benannt. Das Element mit dem Namen SA wird jedoch als abtrünniges Element in der Dimension Products festgelegt:

Products (+)
   NY (+)
   SA (+)
Measures (+)
   Sales (+)
   COGS (+)

Beim Dataload wird der Datenwert für die Elementkombination SC und Sales (300) in "Renegade Member SA" und "Sales" geladen.

In der folgenden Dataload-Datei sind zwei Datensätze für SC und Sales vorhanden, die jeweils unterschiedliche Werte aufweisen:

Product    Measures    *Data*
NY,        Sales        100
SA,        Sales        200
SC,        Sales        250
SC,        Sales        300 

Beide Werte für SC und Sales (250 und 300) werden in SA und Sales geladen. Wenn Sie Werte hinzufügen möchten, lautet der Wert in der Zelle 550 (250 + 300). Wenn Sie Werte überschreiben möchten, ist der Wert in der Zelle der letzte geladene Wert; in diesem Fall 300.

Die folgenden Beispiele veranschaulichen das Verhalten von abtrünnigen Elementen mit der folgenden Dataload-Datei:

Months    Transaction Type    Customer    Product    Price
Jan,      Sale,               Discard1,   Product1   300
Jan,      Sale,               Discard1,   Discard2   300
Jan,      Sale,               Customer1,  Discard2   300

Discard1 und Discard2 sind nicht in der Gliederung vorhanden.

  • Beispiel 1:

    Wenn die Dimension "Kunde" das Element Kunde1 enthält, das als abtrünnig gekennzeichnet ist, und die anderen Dimensionen keine abtrünnigen Elemente aufweisen, wird nur der erste Datensatz in die folgende Schnittmenge geladen:

    Jan    Sale    Customer1(Ren)    Product1    300

    Die anderen beiden Datensätze werden abgelehnt, weil die Product-Dimension kein abtrünniges Element aufweist. Die abgelehnten Datensätze werden in der renegade Member-Logdatei protokolliert.

  • Beispiel 2:

    Wenn die Product-Dimension das Element Product1 enthält, das als "renegade" gekennzeichnet ist, und die anderen Dimensionen keine renegade-Elemente aufweisen, wird nur der letzte Datensatz in die folgende Schnittmenge geladen:

    Jan    Sale    Customer1    Product1(Ren)    300

    Die anderen beiden Datensätze werden abgelehnt, weil die Dimension "Kunde" kein abtrünniges Element aufweist. Die abgelehnten Datensätze werden in der renegade Member-Logdatei protokolliert.

  • Beispiel 3:

    Wenn die Dimensionen "Kunde" und "Produkt" jeweils über abweichende Elemente verfügen (Customer1 und Product1), werden alle Datensätze in die folgende Schnittmenge geladen:

    Jan    Sale    Customer1(Ren)    Product1(Ren)    900 (or 300 if overwrite is enabled)

Beispiel 4:

In Beispiel 4 hat die Kundendimension RenMember1 als "renegade" getaggt, und die Produktdimension RenMember2 als "renegade" getaggt. Mit der folgenden Dataload-Datei werden alle Datensätze geladen, da sowohl die Dimension {\b Customer} als auch die Dimension {\b Product} über neu erstellte Elemente verfügen.

Customer1 und Product1 sind keine abtrünnigen Mitglieder. "Discard1" und "Discard2" sind nicht in der Gliederung vorhanden.

Datenladedatei:

Months  Transaction Type  Customer    Product   *Data*
Jan,     Sale,            Discard1,   Product1   300
Jan,     Sale,            Discard1,   Discard2   300
Jan,     Sale,            Customer1,  Discard2   300

Die in der Dataload-Datei für Discard-Elemente angegebenen Werte werden stattdessen automatisch in die angegebenen abtrünnigen Elemente geladen:

Geladene Daten:

Months  Measures   Customer          Product           Price
Jan     Sale       RenMember1(ren)   ProductR          300
Jan     Sale       RenMember1(ren)   RenMember2(ren)   300
Jan     Sale       CustomerR         RenMember2(ren)   300

Logging für abtrünnige Elemente ist standardmäßig nicht aktiviert. Um das Logging zu aktivieren, verwenden Sie die Konfigurationseinstellung RENEGADELOG, die das Logging von Elementen aktiviert, die in eine abtrünnige Elementschnittmenge geladen wurden.

Hinweis:

Abgerufene Elemente können in Berechnungs- und Berichtsskripten referenziert werden. Abgerufene Elemente werden bei tabellarischen Dataloads oder Tabellenaktualisierungsvorgängen nicht unterstützt.

Quelldatenunterschiede für Aggregate Storage-Dataloads

Während Datensätze in den Quelldaten verarbeitet werden, um Werte in Aggregate Storage-(ASO-)Cubes zu laden, verarbeitet Essbase Datensätze nur für die Dimensionsschnittmengen der Ebene 0, in denen das Element keine Formel enthält.

Das folgende Beispiel zeigt eine Datenquelle, die Datensätze nur für Schnittmengen der Ebene 0 enthält. Das letzte Feld enthält Datenwerte, und die anderen Felder sind Elemente der Ebene 0 ihrer jeweiligen Dimensionen.

Jan, Curr Year, Digital Cameras, CO, Original Price, 10784
Jan, Prev Year, Camcorders, CO, Original Price, 13573

Essbase ignoriert Datensätze, die Elemente der oberen Ebene angeben, und zeigt am Ende des Dataloads die Anzahl der übersprungenen Datensätze an.

Beispiel: Der folgende Datensatz wird übersprungen, weil das Element Mid West ein Element der Ebene 1 ist:

Jan, Curr Year, Digital Cameras, Mid West, Original Price, 121301

Das Durchsuchen von Daten ist nicht erforderlich, da Essbase Datensätze intern liest und sortiert, bevor Werte in den Cube übertragen werden.