+ All Categories
Home > Documents > Ron Santos Simon Fraser University Ron Santos Simon Fraser University Stats all folks! Extracting...

Ron Santos Simon Fraser University Ron Santos Simon Fraser University Stats all folks! Extracting...

Date post: 27-Dec-2015
Category:
Upload: colleen-logan
View: 214 times
Download: 0 times
Share this document with a friend
20
Ron Santos Simon Fraser University Stats all folks! Extracting usable statistics from Blackboard Vista using the Powersight Module and a little elbow grease
Transcript

Ron SantosSimon Fraser University

Ron SantosSimon Fraser University

Stats all folks! Extracting usable statistics from Blackboard

Vista using the Powersight Module and a little elbow grease

Stats all folks! Extracting usable statistics from Blackboard

Vista using the Powersight Module and a little elbow grease

• Sample Graphs using the Powersight tables (e.g. course growth, student distribution, tool distribution)

• Sample SQL used to generate the reports

• Other uses (beyond graphs and stats)

• Perl modules

• Google Analytics

Presentation available at http://get.sfu.ca/bbworld09

What will you learn in this session?

• Named after famous explorer• Opened on September 9, 1965• Located on British Columbia, Canada• One University - Three campuses

– Burnaby– Vancouver– Surrey

• 900 faculty• 1600 staff• 100,000 alumni

Simon Fraser1776 -1862

Simon Fraser University

• Student Enrollments (Fall2008)

• Products used: Peoplesoft, LDAP/CAS3, Blackboard Vista 8.0.2• Blackboard/WebCT history

CE3 CE4 CE6 Vista4 Vista8

2000 2003 2006 2007 2008

• Blackboard Vista setup– 6 Managed nodes (1 protected JMS server)– Oracle 10g (~500GB)– Sun Sparc Solaris 10

Simon Fraser University

Unique students in at least 1 class

Total student enrollments in courses

Undergraduates 22,822 73,535

Graduates 4,258 7,726

Course Growth GraphSELECT

source_name, source_id

FROM

rpt_learning_context

WHERE

ims_value = 'SECTION'

AND

source_id LIKE '<semCode>-%'

sourced.id = <semCode>-<courseName>-<courseNumber>-<courseSection> (e.g. 1094-math-100-d100)

Number of Unique StudentsSELECT

COUNT (DISTINCT p.person_id)

FROM

rpt_learning_context lc, rpt_member m, rpt_person p

WHERE lc.learning_context_id = m.learning_context_id

AND p.person_id = m.person_id

AND m.active = 1

AND m.role = 'SSTU'

AND p.demo_user = 0

AND lc.source_id LIKE '$semCode-%'

sourced.id = <semCode>-<courseName>-<courseNumber>-<courseSection> (e.g. 1094-math-100-d100)

Course Levels GraphSELECT

COUNT(*)

FROM

rpt_learning_context

WHERE

ims_value = 'SECTION'

AND

source_id LIKE '$semCode-%-d1%'

sourced.id = <semCode>-<courseName>-<courseNumber>-<courseSection> (e.g. 1094-math-100-d100)

Student Levels GraphSELECT

COUNT(DISTINCT p.person_id)

FROM

rpt_learning_context lc, rpt_member m, rpt_person p

WHERE lc.learning_context_id = m.learning_context_id

AND p.person_id = m.person_id

AND m.active = 1

AND p.demo_user = 0

AND m.role = 'SSTU'

AND lc.source_id LIKE '$semCode-%-d1%'

sourced.id = <semCode>-<courseName>-<courseNumber>-<courseSection> (e.g. 1094-math-100-d100)

Tool Distribution (RPT_TRACKING)

SELECT

(SELECT lc2.name FROM rpt_learning_context lc2 WHERE b.learning_context_id = lc.parent_learning_context_id) as Parent,

lc.name,

lc.source_name,

lc.source_id

FROM rpt_learning_context lc, rpt_member m, rpt_person p

WHERE lc.learning_context_id = m.learning_context_id

AND p.person_id = m.person_id

AND m.role = 'SDES'

AND lc.ims_value = 'SECTION'

AND m.active = 1

AND p.source_name = '<sourced.id_source>'

AND p.source_id = ’<sourced.id_id>'

Other uses

• Application level– DBI - http://dbi.perl.org/

• DBI stands for database interface• Allows Perl of running SQL queries

– Text::CSV::Simple - http://search.cpan.org/~tmtm/Text-CSV-Simple-1.00/lib/Text/CSV/Simple.pm

• Parser for CSV files

– GD::Graph - http://search.cpan.org/~bwarfield/GDGraph-1.44/Graph.pm

• Graphing module for Perl5

Perl modules

• Database level– DBD::Proxy driver

-http://search.cpan.org/~timb/DBI-1.609/lib/DBI/ProxyServer.pm http://docstore.mik.ua/orelly/linux/dbi/ch08_02.htm

• Module for implementing a proxy for the DBI proxy driver• Allows PERL access to a database over the network• DBI proxy architecture allows for on-the-fly compression of query and result

data, and also encryption of that data. These two facilities make DBI a powerful tool for pulling large results sets of data over the network

– dbiproxy • A proxy server for the DBD::Proxy driver

• This tool is just a front end for the DBI::ProxyServer package

• /usr/local/bin/dbiproxy --configfile /etc/dbiproxy.cfg

– Perl DBD::Oracle - http://search.cpan.org/~pythian/DBD-Oracle-1.23/Oracle.pm

• Oracle database driver for the DBI module

Perl modules

{

facility => 'daemon',

pidfile => '/var/dbiproxy/dbiproxy.pid',

user => 'nobody',

group => 'nobody',

localport => '3333',

mode => 'fork',

user => 'nobody',

group => 'nobody',

# Access control

clients => [

# Accept the local LAN ( 192.168.1.* )

{

mask => '^192\.168\.1\.\d+$',

accept => 1,

users => [ 'wctsupport' ],

},

Perl modules

# Accept our off-site machines ( 192.168.2.* ) but with a cipher

{

mask => '^192\.168\.2\.\d+$',

accept => 1,

users => [ 'wctsupport' ],,

cipher => Crypt::IDEA->new( 'be39893df23f98a2' )

},

# Deny everything else

{

# any IP-address is meant here

mask => '^(\d+)\.(\d+)\.(\d+)\.(\d+)$',

accept => 0,

}

]

}

• Sample access configuration for the DBI proxy server (/etc/dbiproxy.cfg)

• Basic Perl script

1. Connect to DB (via DBI Proxy) $dsn = "DBI:Proxy:hostname=$hostname;port=$port;dsn=DBI:Oracle:$sid";

$dbh = DBI -> connect($dsn, $user, $passwd) || die ("Database connection failed.");

2. Run SQL my $sth = $dbh -> prepare( $sql);

$sth -> execute();

while ( @row = $sth -> fetchrow_array ) {

push ( @return, @row);

}

3. Store SQL results into a CSV file

4. Parse CSV file using Text::CSV::Simplemy $parser = Text::CSV::Simple->new();

my @data = $parser->read_file($file);

Perl modules

5. Graph CSV using GD::Graphmy $graph = GD::Graph::linespoints->new(600, 500);

$graph->set(

x_label => 'Year',

x_label_position => 0.5,

y_label => 'Course Per Semester',

title => 'WebCT Course Growth',

y_max_value => 700,

y_tick_number => 7,

zero_axis_only => 0,

zero_axis => 0,

show_values => 1,

markers => [1, 5, 8],

marker_size => 3,

skip_undef => 1,

transparent => 0,

) or die $graph->error;

my $format = $graph->export_format;

open (IMG, ">$image") or die ("Error creating $image\n");;

binmode IMG;

print IMG $graph->plot(\@data)->$format();

close IMG;

Perl modules

• Require Google account• Need custom entry page for Blackboard• Simply put the tracking code (JavaScript) immediately before the

</body> tag of each page you want to track (entry page, login, logout)– Example tracking code 

<script type="text/javascript">

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");

document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

</script>

<script type="text/javascript">

try{ 

var pageTracker = _gat._getTracker("UA-xxxxxx-x");

pageTracker._trackPageview();

} catch(err) {} 

</script>

• Does not track SSO logins (e.g. logins from portals)• Personally identifiable info are not tracked (username and IP address)• Provides nice graphs and reports that can be exported & emailed

Google Analytics

Google Analytics

• Browser information & usage (monthly view)

Google Analytics

• OS information & usage (monthly view)

Google Analytics

• Many other “useful” information

• Email: [email protected]

• Who wants to print out a handout? Instead, check out my presentation on http://get.sfu.ca/bbworld09

Questions?


Recommended