Zum Inhalt springen

Cognos Framework: Sortierte Wertelisten

    So manch einer hat sich vielleicht schon gefragt, „Wie modelliere ich sortierte Wertelisten?“

    Die Standard-Prompt-Definition besitzt keinen Parameter, um eine Sortierung zu definieren. Auch über ein Macro-Prompt kommt nan nicht weit – Versuche in der Art

    #prompt(sort('ColumnName', 'String'))#

    funktionieren nicht. Die SORT Funktion sortiert nur innerhalb der Macro-Expression selbst.

    Ein SQL-Override der SELECT-Definition der Data-Query-Subjetcs funktioniert ebenfalls nicht – würde außerdem „Metadata Caching“ außer Kraft setzen – und erfordert zudem bestimmte Einstellungen der Data Source („Query Processing“), die evtl. andersweitig nachteilig sind.

    In einem ROLAP modellierten Framework kann man die Sortierung über die Definition von Determinanten beeinflußen. Durch Definition von „GROUP BY“ für eine Gruppe von Attributen wird implizit eine Sortierung erzwungen für den definierten KEY; damit sind auch die Mitglieder dieser Gruppe sortiert. Untenstehend ein Bsp. für eine Zeitdimension. Schritt 1, Definition der Determinante „month“:

    query-subject-definition-dim-antrag-determinants-01

    Schritt 2, für das Query-Item, für das sortierte Werteliste gewünscht sind (hier: „Monat Bez (lang)“, werden die Prompt-Properties wie untenstehend definiert. Für „Filter-Item-Reference“ wird ein Key definiert, der Teil der GROUP-BY-Gruppe aus der Determinanten Definition ist.

    query-subject-definition-dim-antrag-determinants-02

    In Query Studio sieht das dann so aus, wenn der Anwender die Filter-Funktion auf dem Query-Item „Monat Bez (lang)“ aufruft:

    query-subject-definition-dim-antrag-determinants-03

    Durch die Determinante wurde eine Sortierung erreicht, durch Verwendung der Monatsnummer als „Filter-Item-Reference“ werden die Monatsnamen schließlich in der Reihenfolge der Monatsnummern ausgegeben. Bzgl. Prompt-Properties gibt es übrigens einen separaten Blog-Eintrag.

    Vor Umsetzung der oben beschriebenen Maßnahmen wurden die Namen der Monate nach alphabetischer Reihenfolge aufgelistet, also „April“, „August“, … was natürlich vom Anwender so nicht gewollt war.

    P.S.: In einem DMR modellierten Framework(-bereich) kann die Sortierung über die Sortiereigenschaften der LEVEL erreicht werden.