Al sinds mijn allereerste KScope in 2012 heb ik de behoefte om de lijst van sessies zoals deze door ODTUG online gepubliceerd worden bij kop en kont te pakken en te doen wat ik het beste kan met data: Er queries op los laten, in plaats van door pagina’s en pagina’s ervan te scrollen.

Als je dezelfde behoefte voelt om eenvoudig middels een SQL query, de sessies van KScope te vinden die aan jouw criteria voldoen, dan ben je op de juiste pagina beland.

Queries loslaten op de KScope site

Elk jaar opnieuw maakt ODTUG een fraaie website met onder andere de lijst van presentaties en een samenvatting van de inhoud ervan
En tegen de tijd dat KScope begint krijgen we normaal gesproken ook weer een nieuwe conference app.

Maar als ik naar zo’n webpagina kijk kan ik niet anders dan denken “De vragen die ik heb over deze data zouden zo veel eenvoudiger te beantwoorden zijn als het in een tabel in de database zou zitten”.

In 2012 heb ik daarom een eenvoudige package gebouwd die van de KScope website de broncode van de pagina met de presentaties uitleest, de relevante data er uit extraheert en deze presenteert als een pipelined tablefunction.
In 2013 heb ik hem verbouwd voor de site van dat jaar, en het jaar erna voor kscope14.
In 2015 heb ik de code zodanig gewijzigd dat het elke KScope waarvan de site nog in de lucht is ondersteunt.

De code kan verder naar beneden op deze pagina gedownload worden.

Disclaimer:
Houdt in gedachten,
Ik heb dit ontwikkeld omdat ik de data querybaar wilde hebben, en ik kan me voorstellen dat ik daar niet alleen in sta, Buiten dat heb ik gewoon veel lol aan beleefd aan het bouwen ervan.
Ik heb dit niet gepubliceerd om op te scheppen met mijn briljante code. Dat is het niet. Het is behoorlijk simpel, en door de afhankelijkheid van de structuur van de code van de webpaina, nogal instabiel.
Wijzigingen aan de pagina die ODTUG mogelijk toepast, kunnen mijn code in de huidige vorm onbruikbaar maken.
Als dat gebeurt zal ik het trachten te verhelpen en een nieuwe versie publiceren.
Als je er voor kiest om mijn code te gebruiken en op een dag bemerk je dat de boel niet meer werkt, laat het me dan alsjeblieft weten (misschien heb ik het zelf nog niet gemerkt), dan zal ik een gewijzigde versie voor de nieuwe layout van de webpagna beschikbaar stellen.
Ik zou nooit of te nimmer iets als dit bouwen om op te leveren naar een productie omgeving. Evenmin wil ik wie dan ook aanmoedigen om dat wel te doen.

Voorbeelden:
Onderstaande voorbeelden zijn voor de data van KScope15
Geef de functie het ‘nummer’ mee van de editie van KScope waar je in geïnteresseerd bent en de sessies worden geretourneerd.
Voor KScope15 is dat nummer uiteraard 15.

kscope15_all_sessions

Nu kun je eenvoudig vragen beantwoorden als
– Welke sprekers hebben moeite hun presentatie in een sessie van een uur te proppen.

kscope15_multipart_sessions– Welke sprekers van dit jaar hebben de laatste paar jaar niet een presentatie gegeven bij KScope.

kscope15_new_presenters

Code

Zip bestand dat scripts bevat met alle create statements voor de package, types en ACL die nodig zijn om SQL queries uit te kunnen voeren op de kscope site.
Gewoon uitpakken en driving_script.sql uitvoeren. 
De download bevat ook scripts voor materialized views (een voor elke ondersteunde kscope).
De mviews heten MV_ERO_KSCOPE##_SESSIONS, waarbij ## staat voor het volgnummer van de betreffende kscope.
Voer procedure ero$kscope_sessions.mv_refresh uit zonder parameters om alle kscope mviews te verversen. Geef een parameter mee (bijvoorbeeld 15) om alleen de mview voor die specifieke kscope te verversen.
Na een verversing kan je de data van de mview veel sneller benaderen dan van de pipelined table function. Ververs opnieuw als (je vermoedt dat) er wijzigingen zijn in de sessies.
Versie Datum Wijzigingen
2017-03 21-05-2017 Nieuwe versie.
Wijzigingen:

  1. De KScope site vertoont nu de naam van de zaal waar de sessie in wordt gehouden, dus de table function retourneert deze nu ook onder de naam “Room”.
  2. ODTUG is begonnen oude KScope url’s om te leiden naar de KScope17 site. Op dit moment kom je met www.kscope15.com en www.kscope16.com gewoon op www.kscope17.com.
    Dit zorgt er voor dat de sessies van sommige oude KScopes niet meer op te halen zouden zijn door de code.
    Daarom wordt vanaf nu voor alle KScopes, behalve de aanstaande, gekeken naar een bij de WayBackMachine  opgeslagen versie.
    Voor elke oude KScope wordt nu gekeken naar de eerste ‘capture’ op de WayBackMachine van net na afloop van die KScope.
  3. Aangezien de oude KScope sites niet meer benaderd hoeven te worden komen deze ook niet meer voor in de ACL.
    Alleen de huidige KScope site en die van de WayBackMachine zijn daar nu nog in opgenomen.
  4. Omdat nu voor oude kscopes toch gebruik gemaakt wordt archief versies is KScope12 geherintroduceerd in de functie, na er enige tijd geleden uit verwijderd te zijn omdat de site niet meer bestaat.
2017-02 08-03-2017 Nieuwe versie, kleine wijziging: html code voor bullets wordt nu vervangen door een asterisk (*).
Alleen de package body is gewijzigd, en het versienummer in de specification.
2017-01 28-12-2016 Nieuwe versie ondersteunt KScope17 sessies
Site bevat op dit moment nog geen datum/tijd gegevens,dus die worden uiteraard ook nog niet opgeleverd door de code.
Zodra de datum/tijd gegevens gepubliceerd zijn zal i\de code, indien nodig, hierop aangepast worden.
Plus: Functionaliteit toegevoegd die html ascii codes en sommige tags in session title en description afhandelt.
2016-02 05-06-2016 Nieuwe versie. In de lijst van sessies op de site was een ‘lege sessie’ verschenen waardoor bij geen enkele sessie nog de starttijd, einddtijd en sessie-id werd getoond.
De package is aangepast zodat hij hier nu goed mee omgaat.
2016-01 01-02-2016 Nieuwe versie, ondersteunt KScope16 sessies
Site bevat op dit moment nog geen datum/tijd gegevens,dus die worden uiteraard ook nog niet opgeleverd door de code.
De KScope site bevat inmiddels datum/tijd gegevens, code hoefde niet aangepast te worden, dus nog versie 2016-1
2015.03 21-05-2015 – Nieuwe code om de gewijzigde broncode van de KScope site aan te kunnen.
– materialized views + mv_refresh procedure geïntroduceerd. Data eenmalig ophalen, vaak querieen.
2015.02 23-04-2015 Geen code wijzigingen, Maar het $ teken is verwijderd uit de scriptnamen (niet de objectnamen!) omdat sommigen problemen hiermee hebben gerapporteer op unix/linux.
2015.01 25-01-2015 Zoals Kim aangaf: het vorige zip bestand was niet compleet 🙁


Statische tabel

Ik kan me voorstellen dat je liever een statische tabel hebt, of dat je niet de beschikking hebt over een schema met voldoende rechten om de acl te maken.
Om die reden heb ik een create table as select voor je uitgevoerd en biedt ik hier het resultaat aan in de vorm van een Oracle tabel en een Excel bestand:
Uiteraard zijn ze statisch. Kom hier dus terug voor een nieuwe versie als de sessielijst wijzigt, of …. download de pipelined table function 🙂

Deze twee downloads bevatten de KScope17 data die geldig was op 17 juni 2017

Let op, vanaf 21 mei 2017:

  • Beide bevatten een nieuwe kolom “Room”. Deze bevat de naam van de zaal waarin de sessie wordt gehouden.
  • In de Excel zijn de “Start Time” en “End Time” kolommen gewijzigd. Ze bevatten nu alleen nog de tijd component. De datum van de sessie is verhuisd naar een nieuwe kolom “Day”. Dit maakt zoeken naar sessies op een specifieke dag eenvoudiger.
Excel bestand Oracle tabel + insert statements