ADSM-L

Re: [ADSM-L] Summarizing Tape Utilization

2009-07-29 21:06:41
Subject: Re: [ADSM-L] Summarizing Tape Utilization
From: km <km AT GROGG DOT ORG>
To: ADSM-L AT VM.MARIST DOT EDU
Date: Thu, 30 Jul 2009 03:03:27 +0200
Functions are not allowed in GROUP BY clause, only column names :(

On 30/07, Steven Harris wrote:
> Hi George
>
> I have a copy of the interesting bits of a TSM database in sqlite3 for a
> side project I'm doing while "resting".  On that database I can use
>
> select count(*), cast(abs(pct_utilized-.01)/10 as integer) as decile,
> stgpool_name
> from volumes
> where devclass_name != 'DISK'
> group by stgpool_name, cast(abs(pct_utilized-.01)/10 as integer)
>
> to give something like what you are looking for.  The main issue is that
> deciles with no members are not listed.  You may need to adjust the SQL
> for the TSM database engine, but I can't see anything that I know isn't
> valid TSM sql.
>
> Regards
>
> Steve
>
> Steven Harris
> TSM Admin, "resting" in Sydney Australia
>
> Huebschman, George J. wrote:
> >No, just the command line
> >
> >-----Original Message-----
> >From: ADSM: Dist Stor Manager [mailto:ADSM-L AT VM.MARIST DOT EDU] On Behalf 
> >Of
> >Lindsay Morris
> >Sent: Wednesday, July 29, 2009 4:40 PM
> >To: ADSM-L AT VM.MARIST DOT EDU
> >Subject: Re: [ADSM-L] Summarizing Tape Utilization
> >
> >George, aren't you a Servergraph user? Doesn't it give you what you
> >need?   I don't know what you're trying to accomplish here, but
> >Servergraph handles the usual culprits...
> >
> >--------------------
> >Lindsay Morris
> >Principal
> >TSMworks, Inc.
> >1-919-403-8260
> >www.tsmworks.com
> >
> >On Jul 29, 2009, at 2:52 PM, Bob Levad <blevad AT WINNEBAGOIND DOT COM> 
> >wrote:
> >
> >
> >>I think you'll need a separate query for each utilization range.
> >>At least, I haven't thought of a good way to iterate.
> >>
> >>
> >>
> >>select stgpool_name, count(*) as "60% < utilized < 70%" - from volumes
> >>
> >
> >
> >>- where devclass_name='LTOCLASS4' -
> >>  and pct_utilized>=60 -
> >>  and pct_utilized<70 -
> >>group by stgpool_name -
> >>order by stgpool_name
> >>
> >>Etc...
> >>
> >>
> >>You could maybe nest several of these selects inside another select,
> >>but that can be pretty cumbersome.
> >>
> >>Bob
> >>
> >>
> >>
> >>
> >>
> >>-----Original Message-----
> >>From: ADSM: Dist Stor Manager [mailto:ADSM-L AT VM.MARIST DOT EDU] On Behalf
> >>Of Huebschman, George J.
> >>Sent: Wednesday, July 29, 2009 10:59 AM
> >>To: ADSM-L AT VM.MARIST DOT EDU
> >>Subject: [ADSM-L] Summarizing Tape Utilization
> >>
> >>Greetings everyone,
> >>I have a/an SQL Select question.
> >>
> >>Most of my TSM Servers are at 5.5.1.0, one is at 5.5.2.0
> >>
> >>I am trying to count the number of tapes with a percentage utilization
> >>
> >
> >
> >>in brackets of 10 percent.  In other words, how many tapes with
> >>utilization between 100 and 90, 90 and 80, and so forth.
> >>
> >>I first tried:
> >>select count(volume_name), pct_utilized, stgpool_name from volumes -
> >>where (pct_utilized between 100 and 90) or (pct_utilized between 90
> >>and
> >>80) or (pct_utilized between 70 and 60) or (pct_utilized between 60
> >>and
> >>50) or (pct_utilized>50)-
> >>group by stgpool_name, pct_utilized
> >>
> >>Although the statement functions and returns valid data,  it is not
> >>what I expected.  I mistakenly expected it to count all the tapes
> >>within each given range.  What it really does is count tapes with
> >>distinct pct_util.
> >>I might as well not have specified the ranges.  The only tapes it
> >>counted cumulatively were of the exact same pct_util.
> >>
> >>Unnamed[1]     PCT_UTILIZED     STGPOOL_NAME
> >>-----------     ------------     ------------------
> >>         1             59.4     C_TSMSERVER_TAPE
> >>         1             68.7     C_TSMSERVER_TAPE
> >>         1             78.2     C_TSMSERVER_TAPE
> >>         1             79.5     C_TSMSERVER_TAPE
> >>         1             99.9     C_TSMSERVER_TAPE
> >>         1            100.0     C_TSMSERVER_TAPE
> >>         1             66.0     NASPOOL
> >>
> >>If I select for a count for greater than or less than a particular
> >>value, I get the kind of count I expect.  I had expected "between" to
> >>do similar work but be less klunky.
> >>
> >>select count(volume_name) from volumes where pct_utilized<100 and
> >>pct_utilized>89
> >>
> >>
> >>The other option I tried was CASE, WHEN, THEN:
> >>
> >>select count(case when pct_utilized between 100 and 91 then 1 else
> >>0) from
> >>volumes and, select count(case when (pct_utilized between 100 and
> >>91) then 1
> >>else 0) from volumes
> >>
> >>Those failed for syntax errors.
> >>
> >>Is there a clean way to do this?
> >>
> >>George Huebschman
> >>
> >>