Billy Buchanan
Director of Data, Research, and Accountability
Fayette County Public Schools
Slides are available at:
https://wbuchanan.github.io/sdpDataMining
Code examples are available at:
https://github.com/wbuchanan/sdpDataMining
I'll be switching back and forth between the slide deck and some programming environments. If you need me to go back over something or to flip back to the previous screen feel free to ask.
If you're developing reports, you should want to answer these questions:
Monitoring. The Vendor shall describe in detail what capabilities the BI platform has to collect usage metrics from end-users using the product. This should specifically address the level of detail that is possible to record (e.g., can the BI platform allow us to track when specific elements in the user-interface are used, can this be time and user stamped).
A/B Testing. The Vendor shall also discuss whether or not the BI platform provides any native support or functionality to implement A/B testing. If the platform does not support this functionality, the Vendor shall discuss how the support clients testing and revising user interface elements and interaction functionality in reports and dashboards.
UI/UX Collection. It is expected that [we] will have the ability to collect extensive telemetry data to develop a more robust understanding of the user experience, for continuous improvement of the reports delivered to end-users, and to more carefully evaluate how data use and access affects teaching and learning. The Vendor shall describe in detail what capabilities exist to collect these data, how those data would be stored, and the level of detail at which these data can be collected. If the proposed solution does not include the capacity to capture and store data on interactions with user interface “widgets”, controllers, forms, and event-listener firings, the Vendor shall propose methods by which [we] may accomplish this goal.
Funnel/Click-Thru. The logging and data collection capabilities of the system must allow [us] to conduct funnel and/or click-thru analyses. The collection requirements at this level are time- and user-stamped records that include the name/id of the report being viewed and a session ID that is sequential by user and day. These data should be collected from the point at which the user logs into the system and continue until the user logs out or a timeout disconnects the user from the system.
Once you have data loaded into Elasticsearch, you can query the text from Kibana to do some exploratory data analysis.
http://localhost:9200/legislation/bill:description="education"
http://localhost:9200/legiscan/bill_doc:description="education"
These user interaction data are all generated from an R/Shiny-based application I put together to help visualize the Mississippi's Statewide Accountability System (MSAS).
The code for the tool is available here: MSASExplorer
Using the curl
command line tool:
curl -XGET '127.0.0.1:9200/shinyapp/userData/_search?q=*'
Directly from the web browser
http://127.0.0.1:9200/shinyapp/userData/_search?q=*
Using the Sense
extension/Kibana application
GET shinyapp/userData/_search
{
"query": {
"match_all": {}
}
}
Can also put together more complex queries and restrict the fields that are returned
GET /research_requests/request/_search
{
"query": {
"bool": {
"must": {
"match" : {
"InternalExternal" : "Internal"
}
},
"must_not": {
"match" : {
"Status" : "Completed"
}
}
}
},
"fields": [
"StatusDate", "AssignedTo", "Status", "DataUsedFor", "DataNeeded"
]
}
Find education legislation sponsored by democrats that was passed into law
GET /legiscan/bill_doc/_search
{
"from": 0, "size": 500,
"query" : { "bool" : {
"must": [ { "match": { "description": "education" } },
{ "nested": { "path": "progress",
"query": { "match": { "progress.event": "Passed" } } }
},
{ "nested": { "path": "sponsors",
"query": { "match": { "sponsors.party": "D" } } }
}] }
}
}
Or find charter laws sponsored by republicans
GET /legiscan/bill_doc/_search
{
"from": 0, "size": 500,
"query" : { "bool" : {
"must": [ { "match": { "description": "charter" } },
{ "match": { "description": "school" } },
{ "nested": { "path": "sponsors",
"query": { "match": { "sponsors.party": "R" } } }
}] }
}
}
Can also query records based on the data underlying the position of the mouse in the visualization
GET shinyapp/userData/_search
{
"query" : {
"range": {
"msasplot_mouse_over.data.x": {
"gte": 40,
"lte": 92
}
}
}
}