[rt-devel] RT Reports
Alex Rebrik
arebrik at zappos.com
Wed Mar 31 18:33:17 EST 2004
Bruce,
In our case GroupId='74' - is to restrict report to members of a certain
group - i.e. our customer care dept. This is so that if a supervisor
(who are abstracted to a different group) do resolve a ticket it won't
show up on the report.
mysql> desc Groups;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| Name | varchar(200) | YES | | NULL | |
| Description | varchar(255) | YES | | NULL | |
| Domain | varchar(64) | YES | MUL | NULL | |
| Type | varchar(64) | YES | MUL | NULL | |
| Instance | int(11) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
6 rows in set (0.02 sec)
The id field in Groups table corresponds to GroupId field in GroupMembers:
mysql> desc GroupMembers;
+----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| GroupId | int(11) | | MUL | 0 | |
| MemberId | int(11) | | | 0 | |
+----------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
The simplest way to find out numeric goup id for a group is to look up
its name via Web UI and then a simple select should suffice:)
mysql> select * from Groups where Name='CLTeam';
+----+--------+-----------------------+-------------+------+----------+
| id | Name | Description | Domain | Type | Instance |
+----+--------+-----------------------+-------------+------+----------+
| 74 | CLTeam | Customer Loyalty Team | UserDefined | | 0 |
+----+--------+-----------------------+-------------+------+----------+
1 row in set (1.09 sec)
Voila, now you know numeric group id and can run a report on a
particular group of users for your RT installation.
--Alex
P.S. Did anyone ever do a visual DB model for RT? I know the schema
isn't that complicated to be completely out of human mind grasp, though
visualizations do help. I think I'll make one of these tonight...
Kogami, Bruce wrote:
> Alex,
>
> Can you give me some insight on using g.GroupId=’74’? I guess what I’m
> wondering is, how the GroupId relates to which group or user and how I
> can find out what the GroupId number refers to. If it’s a group, what
> is the name of the group, if it’s a user, what is the name of the user?
>
> Thanks,
>
> Bruce
>
> ------------------------------------------------------------------------
>
> *Author: *Alex Rebrik <mailto:arebrik at zappos.com>
> *Date: * 2004-03-09 15:35 -800 *To: *rt-devel
> <mailto:rt-devel at lists.bestpractical.com>
> *Subject: *[rt-devel] RT Reports
>
>Hello List,
>
>
>
>here are some (simple?) SQL queries that we run against our RT database
>
>to generate progress reports and track people's work. Hope this is
>
>useful to someone else out there, and if you have any suggestions on how
>
>to improve these let me know. These are wrapped in a simple shell script
>
>which use date(1) command to feed range of dates / times into SQL
>
>statement, beware that this works for *BSD date(1); Solaris, Linux, and
>
>others may and do behave differently. It would be better to wrap these
>
>in Perl instead of shell, but I hacked 'em together rather quickly, so ...
>
>
>
>
>
>---daily progress report---
>
>
>
>#!/usr/local/bin/bash
>
>END=`date +%Y-%m-%d`
>
>START=`date -v-1d +%Y-%m-%d`
>
>
>
># We're in PST, hence -8 against GMT timestamp
>
>
>
>/usr/local/bin/mysql rt3 -t -e\
>
> "SELECT Name AS User, RealName AS 'Full Name', COUNT(*) AS Resolved
>
> FROM Transactions t, Users u, GroupMembers g
>
> WHERE g.GroupId='74' AND t.Type='Status'
>
> AND t.NewValue='resolved'
>
> AND DATE_SUB(t.Created, INTERVAL 8 HOUR) BETWEEN '$START' AND '$END'
>
> AND t.Creator = u.id AND t.Creator = g.MemberId
>
> GROUP by Name;
>
> SELECT COUNT(*) AS 'Total Resolved'
>
> FROM Transactions t, GroupMembers g
>
> WHERE g.GroupId='74' AND t.Type='Status'
>
> AND t.NewValue='resolved'
>
> AND DATE_SUB(t.Created, INTERVAL 8 HOUR) BETWEEN '$START' AND '$END'
>
> AND t.Creator = g.MemberId;"|\
>
>/usr/bin/mail -s "CSRT Daily Report - $START" EMAIL at GOES.HERE <http://lists.bestpractical.com/mailman/listinfo/rt-devel>
>
>
>
>
>
>----same weekly----
>
>
>
>#!/usr/local/bin/bash
>
>END=`date -v1d +%Y-%m-%d`
>
>START=`date -v1d -v-1m +%Y-%m-%d`
>
>MONTH=`date -v-1m +%B\ %Y`
>
>
>
>/usr/local/bin/mysql rt3 -t -e\
>
> "SELECT Name AS User, RealName AS 'Full Name', COUNT(*) AS RESOLVED
>
> FROM Transactions t, Users u, GroupMembers g
>
> WHERE g.GroupId='74'
>
> AND t.Type='Status'
>
> AND t.NewValue='resolved'
>
> AND DATE_SUB(t.Created, INTERVAL 8 HOUR) BETWEEN '$START' AND '$END'
>
> AND t.Creator = u.id
>
> AND t.Creator = g.MemberId
>
> GROUP by Name;
>
>
>
> SELECT COUNT(*) AS 'Total Resolved'
>
> FROM Transactions t, GroupMembers g
>
> WHERE g.GroupId='74' AND t.Type='Status'
>
> AND t.NewValue='resolved'
>
> AND DATE_SUB(t.Created, INTERVAL 8 HOUR) BETWEEN '$START' AND '$END'
>
> AND t.Creator = g.MemberId;"|\
>
>/usr/bin/mail -s "CSRT Weekly Report - Week of $WEEK" EMAIL at GOES.HERE <http://lists.bestpractical.com/mailman/listinfo/rt-devel>
>
>
>
>
>
>---same monthly---
>
>
>
>#!/usr/local/bin/bash
>
>END=`date -v1d +%Y-%m-%d`
>
>START=`date -v1d -v-1m +%Y-%m-%d`
>
>MONTH=`date -v-1m +%B\ %Y`
>
>
>
>/usr/local/bin/mysql rt3 -t -e\
>
>"SELECT Name AS User, RealName AS 'Full Name', COUNT(*) AS Resolved
>
> FROM Transactions t, Users u, GroupMembers g
>
> WHERE g.GroupId='74' AND t.Type='Status'
>
> AND t.NewValue='resolved'
>
> AND DATE_SUB(t.Created, INTERVAL 8 HOUR) BETWEEN '$START' AND '$END'
>
> AND t.Creator = u.id AND t.Creator = g.MemberId
>
> GROUP by Name;
>
> SELECT COUNT(*) AS 'Total Resolved'
>
> FROM Transactions t, GroupMembers g
>
> WHERE g.GroupId='74' AND t.Type='Status'
>
> AND t.NewValue='resolved'
>
> AND DATE_SUB(t.Created, INTERVAL 8 HOUR) BETWEEN '$START' AND '$END'
>
> AND t.Creator = g.MemberId;"|\
>
>/usr/bin/mail -s "CSRT Monthly Report - $MONTH" clt-report at zappos.com <http://lists.bestpractical.com/mailman/listinfo/rt-devel>
>
>
>
>
>
>
>
>---count of "new" tickets by Queue (we do these at EOB every day)---
>
>
>
>#!/usr/local/bin/bash
>
>TODAY=`date +%Y-%m-%d`
>
>
>
>/usr/local/bin/mysql rt3 -t -e\
>
>"SELECT q.Name AS Queue, count(*) AS 'New Tickets',
>
>DATE_SUB(MIN(t.Created), INTERVAL 8 HOUR) AS 'Start Time'
>
>FROM Tickets t, Queues q
>
>WHERE t.Status = 'new'
>
>AND t.Queue = q.id
>
>AND q.Name != 'SPAM'
>
>GROUP by q.Name
>
>ORDER BY 'Start Time';" |\
>
>/usr/bin/mail -s "CSRT New Tickets Report - $TODAY" clt-report at zappos.com <http://lists.bestpractical.com/mailman/listinfo/rt-devel>
>
>
>
>#!/usr/local/bin/bash
>
>END=`date -vsun +%Y-%m-%d`
>
>START=`date -vmon -v-1w +%Y-%m-%d`
>
>WEEK=`date -vmon -v-1w +%B\ %d,\ %Y`
>
>
>
>
>
>
>
>Now, if only I could figure out how to track RT users' login times, I'd
>
>have it all :)
>
>
>
>--Alex
>
>
>
> *****************************************************************
>
> *This E-mail is confidential. It should not be read, copied, disclosed
> or used by any person other than the intended recipient. Unauthorized
> use, disclosure or copying by whatever medium is strictly prohibited
> and may be unlawful. If you have received this E-mail in error, please
> contact the sender immediately and delete the E-mail from your system.*
>
> *****************************************************************
>
More information about the Rt-devel
mailing list