Announcement

Collapse
No announcement yet.

Zählen in Abhängigkeit bestimmter Einträge

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zählen in Abhängigkeit bestimmter Einträge

    hallo zusammen,
    mich quält seit mehreren tagen folgendes problem.
    aus vorhandenem xml-file soll ich einzelne informationen extrahieren, wie z.b.

    1. gesamtanzahl der SELECTS
    ---> count(SlowLogData/row[./col[1]=(contains(.,'SELECT'))])
    2. anzahl der SELECTS auf eine bestimmte datenbank
    ---> count(SlowLogData/row[./col[1]=(contains(.,'Dateiversionen'))])

    diese informationen kann ich auf diese weise recht einfach gewinnen,
    aber nun zum problem:
    es ist mir nicht gelungen die anzahl der SELECTS eines bestimmten users auf eine bestimmte datenbank zu zählen. hierzu muss ich ja nicht nur einen eintrag/zeile auswerten sondern mehrere zeilen betrachten.
    zu einem datensatz gehören:
    a) time
    b) user
    c) querytime
    d) select
    folgender aufruf funktioniert leider nicht:

    count(SlowLogData/row[(./col[1]=( (contains(.,'User@Host:')) and ((contains(.,$tisAdmin))) and (./row[position()+2]/col[1]=(contains(./row[position()+2]/col[1],'Dateiversionen'))) ))])

    das xml-file hat folgende struktur:
    <?xml version="1.0" encoding="utf-8"?>
    <SlowLogData>
    <row>
    <col># Time: 070612 13:26:48</col>
    </row>
    <row>
    <col># User@Host: ittadmin[ittadmin] @ itt052nb.de.itt.cds.ham [10.253.16.111]</col>
    </row>
    <row>
    <col># Query_time: 5 Lock_time: 0 Rows_sent: 41136 Rows_examined: 286667</col>
    </row>
    <row>
    <col>SELECT * FROM ZeITT Z WHERE Z.ZertArt='ISO'</col>
    <col />
    </row>
    <row>
    <col># Time: 070612 13:35:17</col>
    </row>
    <row>
    <col># User@Host: ittadmin[ittadmin] @ hanc01pc.de.itt.cds.ham [10.253.10.22]</col>
    </row>
    <row>
    <col># Query_time: 38 Lock_time: 0 Rows_sent: 20 Rows_examined: 40</col>
    </row>
    <row>
    <col>SELECT DateinameID FROM Dateiversionen WHERE Programm = ''</col>
    <col />
    </row>
    <row>
    <col># Time: 070612 13:36:43</col>
    </row>
    <row>
    <col># User@Host: ittadmin[ittadmin] @ hanc01pc.de.itt.cds.ham [10.253.10.22]</col>
    </row>
    <row>
    <col># Query_time: 72 Lock_time: 0 Rows_sent: 26 Rows_examined: 52</col>
    </row>
    <row>
    <col>SELECT DateinameID FROM Dateiversionen WHERE Programm = 'LIMSDll'</col>
    <col />
    </row>
    <row>
    <col># Time: 070612 13:37:44</col>
    </row>
    <row>
    <col># User@Host: ittadmin[ittadmin] @ hanc01pc.de.itt.cds.ham [10.253.10.22]</col>
    </row>
    <row>
    <col># Query_time: 80 Lock_time: 0 Rows_sent: 26 Rows_examined: 52</col>
    </row>
    <row>
    <col>SELECT DateinameID FROM Dateiversionen WHERE Programm = 'LIMSDll' ORDER BY ID DESC</col>
    <col />
    </row>
    <row>
    <col># Time: 070612 13:46:45</col>
    </row>
    <row>
    <col># User@Host: ittuser[ittuser] @ hanc01pc.de.itt.cds.ham [10.253.10.22]</col>
    </row>
    <row>
    <col># Query_time: 2 Lock_time: 0 Rows_sent: 0 Rows_examined: 0</col>
    </row>
    <row>
    <col>SELECT DateiLaenge, Datei FROM Dateiversionen WHERE ID = 683</col>
    <col />
    </row>
    <row>
    <col># Time: 070612 14:18:12</col>
    </row>
    <row>
    <col># User@Host: ittuser[ittuser] @ itt062pc.de.itt.cds.ham [10.253.19.34]</col>
    </row>
    <row>
    <col># Query_time: 7 Lock_time: 0 Rows_sent: 4 Rows_examined: 129172</col>
    </row>
    <row>
    <col>SELECT OPCOD FROM Service WHERE SAUNR = '4558318' AND FLAG IS NULL OR FLAG = ''</col>
    <col />
    </row>
    <row>
    <col># Time: 070612 14:20:59</col>
    </row>
    <row>
    <col># User@Host: ittservice[ittservice] @ ittapp02.de.itt.cds.ham [10.253.12.30]</col>
    </row>
    <row>
    <col># Query_time: 8 Lock_time: 0 Rows_sent: 26729 Rows_examined: 53458</col>
    </row>
    <row>
    <col>SELECT HESTN FROM Equipment WHERE EQUNR = ' ' </col>
    <col />
    </row>
    </SlowLogData>

    ich bin dankbar für jeden hinweis oder idee.

    gruss
    patrick

  • #2
    Ist denn die verwendete $tisAdmin-Variable korrekt mit einem Wert belegt? Der Ausdruck ergibt bei mir 4, wenn 'ittadmin' abgefragt wird. Vermutlich steht die Zeichenkette nicht in '...':

    Code:
    <xsl:template match="/">
      <xsl:variable name="tisAdmin" select="'ittadmin'"/>
      <xsl:value-of select="count(SlowLogData/row[(./col[1]=( (contains(.,'User@Host:')) and ((contains(.,$tisAdmin))) and (./row[position()+2]/col[1]=(contains(./row[position()+2]/col[1],'Dateiversionen'))) ))])"/>
    </xsl:template>

    Comment


    • #3
      hallo thomas,

      vielen dank, dass du geantwortet hast.

      zu deiner frage:
      ja, die variable $tisAdmin ist korrekt gefüllt mit "'ittadmin'".

      zu deinem vorschlag:
      deine lösung entspricht praktisch meinem schon verwendeten aufruf (siehe ersten hilferuf von mir) und liefert wie mein aufruf ein falsches ergebnis:

      das ergebnis sollte "3" lauten und nicht "4".
      die von mir vermutete ursache ist, dass die bedingung nach dem zweiten "and"
      (....and (./row[position()+2]/col[1]=(contains(./row[position()+2]/col[1],'Dateiversionen')....")
      nicht berücksichtigt wird.

      --> es werden also nur die "rows" gezählt, die "ittadmin" und "User@Host:" enthalten und NICHT auch noch "Dateiversionen"!!

      dieses problem treibt mich noch in den wahnsinn
      zugegeben, es fehlt von hause aus auch nicht viel dazu

      bin für jede weitere idee/hinweis dankbar.

      gruss
      patrick

      Comment


      • #4
        3 erhalte ich damit (Klammern etwas aufgeräumt und following-sibling-Achse für row verwendet):
        Code:
        <xsl:value-of select="count(SlowLogData/row[contains(col[1],'User@Host:') and contains(col[1],$tisAdmin) and following-sibling::row[2][contains(col[1],'Dateiversionen')]])"/>
        Zuletzt editiert von Thomas Meinike; 19.06.2007, 09:49.

        Comment


        • #5
          danke

          hey thomas,
          1000 und nochmal 1000-dank!
          es funktioniert - JUHU
          ich schulde dir was!!
          --> sag bescheid, wenn ich dir bei etwas behilflich sein kannn

          danke und gruss
          patrick

          Comment

          Working...
          X