Scoreboard-Abfragen

Dieser Artikel enthält die folgenden Themen:
casm173
Dieser Artikel enthält die folgenden Themen:
Eine der Tabellen in der Datenbank Cr_Stored_Queries definiert gespeicherte Abfragen. Diese gespeicherten Abfragen sind den SQL-Abfragen sehr ähnlich und können verwendet werden, um die Zählerfelder auf Knoten im Scoreboard-Bereich in Administrations- und Web-Schnittstellen anzupassen. Die Zählerfelder geben an, wie viele Datensätze der Abfrage entsprechen. Sie können beispielsweise angeben, wie viele Request unterschiedlichen Typs dem angemeldeten Anwender zugeordnet wurden.
Jeder Anwender kann die auf seinem Scoreboard angezeigten Zählerfelder anpassen (dies wird in der Online-Hilfe erläutert). Allerdings muss der Systemadministrator zuerst die verschiedenen Anfragetypen, die in diesen Zählerfeldern gezählt werden können, als gespeicherte Abfragen definieren.
Scoreboard-Zählungen sind falsch, wenn die Werte von Datenbankabfragen gleich NULL sind. Wenn die Scoreboard-Abfrage beispielsweise angibt, dass assignee.organization = xyz, während für einen Datensatz ein Feld "Bevollmächtigter" leer (NULL) ist, ist dieser Datensatz nicht in der Scoreboard-Zählung enthalten.
Gespeicherte Abfragen für angemeldete Anwender
Zwei der Felder, die im Fenster „Gespeicherte Abfrage – Detail“ definiert werden müssen, sind „Where-Klausel“ und „Beschriftung“. Beide Felder können Ausdrücke enthalten, die für den angemeldeten Anwender angepasst sind. Gespeicherte Abfragen beziehen sich nicht auf Tabellennamen und Spalten, sondern auf Objekte und Attribute. Eine gespeicherte Abfrage, die für den angemeldeten Anwender angepasst ist, besteht aus den folgenden zwei Teilen:
  • Das Objekt (z.B. "cr" für eine Anfrage)
    Dies ist für gewöhnlich links vom Gleichheitszeichen (=) angegeben. Die Syntax für diesen Teil der gespeicherten Abfrage ist:
    att_name[.att_name...].SREL_att_name
Eine gespeicherte Abfrage weist immer einen Typ auf, der dem Namen des Objekts entspricht, für das die Abfrage ausgeführt wird, und der den Kontext für die Abfrage liefert. In der oben angegebenen Syntax muss das erste att_name der Attributname des Kontextobjekts sein.
  • Der angemeldete Anwender (die Instanz des Cnt-Objekts für diesen Anwender)
    Dieser muss rechts vom Gleichheitszeichen (=) angegeben sein, wenn die Tickets abhängig vom Attribut des angemeldeten Benutzers auszuwählen sind. Die Syntax für diesen Teil der gespeicherten Abfrage ist:
    @
    att_name
    [.
    att_name
    ...].
    SREL_att_name
Informationen zu Objekten und Attributen finden Sie im Abschnitt CA Service Desk Manager-Informationen zu den Referenzbefehlen.
Syntax des „cr“-Objekts
Verwenden Sie die folgende Syntax, wenn auf das Anforderungsobjekt (cr) verwiesen wird:
att_name[.att_name...].SREL_att_name
In diesem Beispiel wird die Position der Person identifiziert, die für die Verarbeitung dieses Tickets zugeordnet wurde. In diesem Beispiel ist der Objektname ausgelassen, da der Typ der gespeicherten Abfrage das „cr“-Objekt impliziert:
[email protected] AND active=1
  • Verantwortlicher
    Das Attribut im Anforderungsobjekt, das dem Feld „Bevollmächtigter“ in der entsprechenden Tabelle zuordnet ist. Das assignee-Attribut ist z. B. im „cr“-Objekt als „SREL agt“ definiert, was bedeutet, dass es sich auf die agt-Factory bezieht. Die agt-Factory ist Teil der „cnt“-Objektdefinition.
  • Standort
    Das Attribut im „cnt“-Objekt, das dem Feld „c_l_id“ in der Tabelle „Contact“ zuordnet ist. Das location-Attribut ist im „cnt“-Objekt mit „SREL loc“ definiert, was bedeutet, dass es sich auf das „loc“-Objekt bezieht.
WHERE-Klausel
Das folgende Beispiel veranschaulicht einen Wert, den Sie in einer WHERE-Klausel codieren können:
[email protected] AND active=1
Wenn die gespeicherte Abfrage ein Request ist, wählt diese Abfrage alle aktiven Anforderungen aus, in denen die Position des Zuständigen der Position des angemeldeten Benutzers entspricht.
Beschriftung
Attribute im „cnt“-Objekt können in Beschriftungen auf dieselbe Weise eingeschlossen werden, wie in WHERE-Klauseln. Im Folgenden ist ein Beispiel für die Verwendung eines Attributs im „cnt“-Objekt in einer Beschriftung angegeben:
@cnt.location.name Calls
Diese Beschriftung schließt den Namen einer Lokation (z.B. Phoenix) ein, wobei @cnt.location.name durch Phoenix ersetzt wird, wenn die Beschriftung in einem Fenster angezeigt wird. Die Beschriftung wird als „Phoenix-Aufrufe“ angezeigt.
Das IN-Schlüsselwort
Mit Hilfe des IN-Schlüsselworts kann eine gespeicherte Abfrage auf zwei (oder mehr) Tabellen verweisen, ohne dass eine Kombination erzeugt wird. Dies kann die Effizienz bei der Ausführung der Abfrage erheblich steigern. Es wird folgendermaßen codiert:
SREL_att_name IN ( value1 [, value2 [,...]] )
Anfrageabfragen können z. B. folgendermaßen codiert werden:
category.sym IN (\'Soft%\', \'Email\')
Dies resultiert in der folgenden SQL WHERE-Klausel:
category IN (SELECT persid FROM prob_ctg WHERE sym LIKE 'Soft%' OR sym = 'Email')
Ein Verwendungszweck von IN besteht in der Vermeidung kartesischer Produkte. Die folgende Abfrage z. B. führt zu einem kartesischen Produkt und ist äußerst ineffizient:
assignee.last_name LIKE 'MIS%' OR group.last_name LIKE 'MIS%'
Durch die Verwendung des IN-Schlüsselworts führt die Abfrage zu keinem kartesischen Produkt. Es werden in der Tat gar keine Verbindungen geschaffen, wie durch das folgende Beispiel veranschaulicht wird:
assignee.last_name IN 'MIS%' OR group.last_name IN 'MIS%'
Die Klammern, die normalerweise die Liste der Werte auf der rechten Seite von IN umschließen, können weggelassen werden, wenn nur ein Wert in der Liste vorhanden ist. Genauso sollten Sie Verbindungen in Datenaufteilungen vermeiden, indem Sie Datenaufteilungen konvertieren, wie im Folgenden dargestellt:
assignee.last_name LIKE 'Smith' to: assignee = U'374683AA82ACE34AB999A042F3A0BA2E'
wobei:
  • U
    angibt, dass der Wert eine UUID ist.
  • '374683AA82ACE34AB999A042F3A0BA2E'
    Die 32 Zeichen in einfachen Anführungszeichen entsprechen der Zeichenfolgendarstellung der eigentlichen UUID.
Somit werden Joins vermieden, es kommt aber auch zu einem Verlust in CA. Durch Verwendung von IN kann die gleiche Aufteilung (siehe folgendes Beispiel) mit CA der ersten Version sowie nahezu der gleichen Effizienz wie die zweite Version wie folgt geschrieben werden:
assignee.last_name IN 'Smith'
CA SDM unterstützt die IN-Klausel, wenn sie auf QREL- oder BREL-Listen angewendet wird. Wenn Sie z. B. alle Anfragen mit Assets finden möchten, die einem anderen spezifischen Asset (mit ID 374683AA82ACE34AB999A042F3A0BA2E) übergeordnet sind, lautet die entsprechende WHERE-Klausel folgendermaßen:
affected_resource.[parent]child_hier.child IN (U’374683AA82ACE34AB999A042F3A0BA2E’)
Der erste Teil der Klausel
"Betroffene_Ressource"
ist eine SREL (ein Fremdschlüssel) des "cr"-Objekts (Anfrage), das auf die Tabelle "Network_Resource" verweist. Der Teil
„child_hier“
entspricht einer Liste mit „hier“-Objekten, die auf hierarchische Beziehungen verweisen. Der letzte Teil
„child“
bildet den ersten Teil der WHERE-Klausel für die untergeordnete IN-Abfrage. Der Teil
„374683AA82ACE34AB999A042F3A0BA2E“
entspricht dem Fremdschlüsselwert, der mit
child
übereinstimmen soll.
[parent]
gibt die Rückgabe der Unterabfrage an. Da der ID-Wert eine Zeichenfolgendarstellung einer UUID ist, muss er als solcher angegeben und wie folgt geschrieben werden: U'374683AA82ACE34AB999A042F3A0BA2E'.
Nachfolgend ist ein Beispiel für den eigentlich generierten SQL-Code angegeben, der alle Anfragen liefert, bei denen das Asset einem bestimmten Asset übergeordnet ist:
SELECT Call_Req.id FROM Call_Req WHERE Call_Req.affected_rc IN (SELECT hier_parent FROM Asset_Assignment WHERE hier_child = U'374683AA82ACE34AB999A042F3A0BA2E')
Um mehrere übergeordnete Assets abzufragen, können Sie in dem Teil in Klammern () des SQL-Codes eine durch Kommas getrennte Liste angeben, wie im folgenden Beispiel gezeigt:
affected_resource.[parent]child_hier.child IN (U'374683AA82ACE34AB999A042F3A0BA2E', U'374683AA82ACE34AB999A042F3A0BA2E')
Der Attributname in eckigen Klammern ([]) wird verwendet, um den SELECT-Teil der Unterabfrage zu bilden. Die Klammernnotation wird nicht für die Gruppe "Gespeicherte Abfragen" verwendet, die zum Lieferumfang von CA Service Desk Manager Version 6.0 gehört, wie im folgenden Beispiel dargestellt:
(assignee = @cnt.id OR group.group_list.member IN (@cnt.id)) AND active = 1
Wenn die Klammernnotation nicht verwendet wird, geht das SQL-Subsystem davon aus, dass es sich um den Attributnamen des ersten Symbols in der Punktnotation handelt. In diesem Fall funktioniert es eher zufällig, dass das Objekt „group_list“ über das Attribut „group“ verfügt. Wenn dieses Attribut einen anderen Namen aufweisen würde, könnte die WHERE-Klausel nicht analysiert werden. Die entsprechende Klausel mit Klammern lautet folgendermaßen:
(assignee = @cnt.id OR group.[group]group_list.member IN (@cnt.id)) AND active = 1
Sie können die Punktnotation nicht erweitern. Folgendes funktioniert beispielsweise nicht:
affected_resource.[parent]child_hier.child.name IN ('chicago1')
Prioritätsbasierte Abfragen
Die Tabelle "Priorität" in der Datenbank verfügt über die Spalten "sym" und "enum". Bei den Werten, die dem Anwender angezeigt werden, handelt es sich um die „sym“-Werte. Die Anwendung sieht die „sym“-Werte jedoch auf Basis der „enum“-Werte. Derzeit entsprechen die „enum“-Werte der Umkehrung der standardmäßigen „sym“-Werte 1 bis 5.
Beispiel
Symbol
Aufzählung
1
5
2
4
3
3
4
2
5
1
Wenn Sie beim Schreiben einer gespeicherten Abfrage auf den Wert 5 verweisen, suchen Sie daher tatsächlich nach Priorität 1, solange Sie nicht mit .sym angeben, welches Attribut angezeigt werden soll.
Sie dürfen die vom Produkt zugewiesenen Standardwerte für "enum" nicht ändern. Wenn Sie neue "sym"-Werte hinzufügen, fahren Sie einfach nach dem höchsten "enum"-Wert fort.
Zeitbasierte Abfragen
Zeitspannen können verwendet werden, um zeitbasierte gespeicherte Abfragen zu erstellen. Eine Zeitspanne definiert eine Zeitperiode, die relativ zum aktuellen Datum sein kann. Eine Zeitspanne kann sich z. B. auf heute, gestern, letzte Woche oder letzten Monat beziehen. Eine Zeitspanne hat einen Namen, wie z. B. HEUTE oder GESTERN. Sie beziehen sich auf eine Zeitspanne in einer gespeicherten Abfrage, indem Sie eine der folgenden integrierten Funktionen verwenden:
  • StartAtTime (
    Name der Zeitspanne
    )
    Dies bezieht sich auf den Beginn der Periode, die von der Zeitspanne beschrieben wird.
  • EndAtTime (Name der Zeitspanne)
    Dies bezieht sich auf das Ende der Periode, die von der Zeitspanne beschrieben wird.
Die Syntaxregeln für gespeicherte Abfragen erfordern, dass der Name der Zeitspanne von einfachen Anführungszeichen eingeschlossen wird, wobei dem Anführungszeichen ein Backslash-Zeichen vorangestellt ist. Um sich z. B. auf den Beginn der vergangenen Woche zu beziehen, geben Sie Folgendes an:
StartAtTime(\'PAST_WEEK\')
Durch den Zeitablauf ist es erforderlich, gespeicherte Abfragen, die einen Verweis auf eine Zeitspanne enthalten, in regelmäßigen Abständen zu aktualisieren. So ändert sich beispielsweise das Intervall, das durch „gestern“ beschrieben wird, um Mitternacht. Im Fenster „Zeitspanne – Detail“ geben Sie die Startzeit, Endzeit und Auslöser-Zeit für Aktualisierungen an.
Startzeit
Die Startzeit gibt den Anfang einer Zeitspanne absolut oder relativ an. Im Folgenden werden die Felder im Bereich „Startzeit“ des Fensters „Zeitspanne – Detail“ erläutert:
  • Jahr
    Ein explizites Jahr, z. B. 2000, oder ein relatives Jahr, z. B. + 1 (Nächstes Jahr) oder - 1 (letztes Jahr)
  • Monat
    Ein expliziter Monat von 1 (Januar) bis 12 (Dezember) oder ein relativer Monat, z. B. +1 (Nächster Monat) oder -1 (Letzter Monat)
  • Tag
    Ein expliziter Tag von 1 bis 31 oder ein relativer Tag (z. B. +1 (morgen) oder -1 (gestern))
  • Stunde
    Eine explizite Stunde von 0 bis 24 oder eine relative Stunde (z. B. +1 (nächste Stunde) oder -1 (letzte Stunde))
  • Minute
    Eine explizite Minute von 0 bis 59 oder eine relative Minute (z. B. +1 oder -1)
Endzeit
Die Endzeit gibt das Ende einer Zeitspanne absolut oder relativ an. Die Endzeitfelder im Fenster „Zeitspanne – Detail“ entsprechen den Startzeitfeldern im Fenster „Zeitspanne – Detail“.
Auslöser-Zeit
Das Feld „Auslöser-Zeit“ gibt an, wann eine WHERE-Klausel einer gespeicherten Abfrage, die einen Verweis auf eine Zeitspanne enthält, erneut erstellt und die gespeicherte Abfrage aktualisiert wird. Die Auslöser-Zeit muss relativ zur aktuellen Uhrzeit sein, wie im Folgenden beschrieben:
  • Jahr
    Muss ein relatives Jahr von -1 (letztes Jahr) bis +36 (36 Jahre ab jetzt) sein.
  • Monat
    Muss ein relativer Monat von -1 (letzter Monat) bis +11 (11 Monate ab jetzt) sein.
  • Tag
    Muss ein relativer Tag von -1 (gestern) bis +31 (31 Tage ab jetzt) sein.
  • Stunde
    Muss eine relative Stunde von -1 (letzte Stunde) bis +23 (23 Stunden ab jetzt) sein.
  • Minute
    Muss eine relative Minute von +9 (9 Minuten ab jetzt) bis +59 (59 Minuten ab jetzt) sein.