2011-08-30

Pentaho BI 4.0 GA

Under tisdagskvällen svensk tid blev Pentaho BI 4.0 GA tillgänglig för nerladdning. Den har legat ute som RC sedan 22 juni och har sedan dess testats och buggfixats. Den första märkbara skillnaden är det nya användargränssnittet som har gått från vitt till mörkgrått. Det verkar gå någon trend i att gå från det vita och ljusa på webben mot mörkare färger. Vet inte vad jag tycker om det generellt, men i det här fallet gillar jag det. Det känns fräscht och modernt. Den andra stora nyheten är Interactive Reports som ersätter det gamla ad-hoc rapporteringsverktyget. Det är ett riktigt lyft från det gamla och har samma look-and-feel som Analyzer, vilket bara är positivt enligt mig. Båda dessa verktyg är slimmade och innehåller precis nog mycket funktionalitet för att vara riktigt användbara utan att bli krångliga. Pentaho själva marknadsför det som "Power to the User", och helt klart så har de ett väldigt kraftfullt och intuitivt gränssnitt som uppfyller de flesta användares behov via webbgränssnittet. Kul att få sluta testa och sätta det i produktion istället. Power to the users...

2011-08-26

Plugga maskininlärning på Stanford i höst

Signade precis upp på Andrew Ng's webbaserade maskininlärningskurs på Stanford i höst. Jag har tidigare plöjt igenom de flesta av hans lektioner som ligger uppe på YouTube (http://www.youtube.com/playlist?list=PLA89DCFA6ADACE599) så det kanske inte är så mycket nytt som tas upp, men det blir intressant att se hur man håller en kurs för över 37 000 (antal anmälda just nu) deltagare med inlämningsuppgifter och allt. Den är i alla fall gratis och det går att signa upp på http://ml-class.org/.

2011-08-24

Pentaho SQL Trick

Om man i Pentaho vill jämföra t.ex. årets försäljning med tidigare år så går det utmärkt i Analyzer, men inte i Report Designer eller Interactive Reports eftersom de inte tillåter att man lägger in fält horizontellt. Ett sätt att gå runt detta är att trolla lite med SQL:en istället så att försäljning per år kommer i olika kolumner i resultatsettet från databasen. Följande är ett exempel med Pentahos Steel Wheels där vi hämtar alla kunders försäljning på ett sådant sätt att det går att jämföra med tidigare år samt att rapporten blir parameterstyrd på år.

SELECT
  t.customernumber,
  SUM(t.totalprice),
  SUM(t.totalprice_ly1),
  SUM(t.totalprice_ly2)
FROM (
  SELECT
    customernumber AS customernumber,
    totalprice AS totalprice,
    0 AS totalprice_ly1,
    0 AS totalprice_ly2
  FROM ORDERFACT
  WHERE year_id = ${year_id}
  UNION ALL
  SELECT
    customernumber AS customernumber,
    0 AS totalprice,
    totalprice AS totalprice_ly1,
    0 AS totalprice_ly2
  FROM ORDERFACT
  WHERE year_id = ${year_id} - 1
  UNION ALL
  SELECT
     customernumber AS customernumber,
    0 AS totalprice,
    0 AS totalprice_ly1,
    totalprice AS totalprice_ly2
  FROM ORDERFACT
  WHERE year_id = ${year_id} - 2
) AS t
GROUP BY
  t.customernumber
ORDER BY
  t.customernumber


Tricket är alltså att göra en select för varje år som man vill titta på. Varje select innehåller i sin tur en kolumn för varje år, men där vi nollar de övriga åren. Sedan summeras det upp per kund och alla noll värden vi satt kommer inte att påverka slutsumman. Om man istället skulle vilja jämföra månader och formatet skulle vara yyyyMM skulle where villkoret kunna se ut någonting i stil med

WHERE month_no = CASE WHEN MOD(${month_no},100) <= X THEN (${month_no} - 100) + (12-X) ELSE ${month_no} - X END

Där X är antalet månader tillbaka i tiden, dvs X=1 förra månaden, X=2 för två månader sedan, osv.

2011-08-22

Pentaho med SSL proxy

Om man vill köra Pentaho med SSL så kan man köra https direkt mot Tomcat servern. Ett bättre alternativ är dock att sätta upp en Apache som en SSL proxy server som hanterar all inkommande trafik via https och kommunicerar via ajp med den bakomliggande Tomcat servern. Nedan är ett strippat exempel där jag har använt en Apache2 som SSL proxy server. All inkommande pentaho-trafik på http omdirigeras till https där den sedan fungerar som en reverse proxy till Tomcat servern där Pentaho BI servern körs. Observera dock att bara den externa trafiken till och från proxyn är krypterad. Den interna trafiken mellan proxyn och Tomcat servern är okrypterad då detta i många fall inte behövs även om de skulle ligga på olika maskiner.

Mer information om alla Apache2 inställningar finns på http://httpd.apache.org/docs/.

/etc/apache2/vhosts.d/mydomain.conf
-------------------------------------------
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
  ServerName www.mydomain.se
  ...
  # Redirect all http requests to https
  Redirect 301 /pentaho https://www.mydomain.se/pentaho/
  ...
</VirtualHost>
<VirtualHost *:443>
  ServerName www.mydomain.se
  SSLEngine on
  SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  ...
  // Pass all Pentaho requests to Tomcat via ajp
  ProxyPass /pentaho ajp://127.0.0.1:8009/pentaho
  ProxyPassReverse /pentaho ajp://127.0.0.1:8009/pentaho
  ProxyPass /pentaho-style ajp://127.0.0.1:8009/pentaho-style
  ProxyPassReverse /pentaho-style ajp://127.0.0.1:8009/pentaho-style
  ...
</VirtualHost>

2011-08-21

GraphLab: alternativ till MapReduce

Det finns alternativ till MapReduce för parallella machine learning algoritmer. GraphLab på Carnegie Mellon står bakom GraphLab ramverket som visats sig prestera riktigt bra på visa typer av problem. För er som är intresserade av rekommendationssystem och collaborative filtering så finns det implementerat ett bibliotek för probabilistiska matris- och tensorfaktoriseringar i GraphLab, som för övrigt kom 5:a i Yahoo KDD cup 2011. Implementeringen innehåller bland annat algoritmer som Alternating Least Squares och Koren's SVD++. Läs mer på www.graphlab.org.