Votre navigateur n'est pas compatible avec jmpress.js, vous avez donc une version dégradée de cette présentation.

Pour une meilleure experience, merci d'utiliser Chrome, Safari ou Firefox.

Le BigData au service de la BI

Tech : "Est-ce que mon serveur de plan #4 est aussi bon que les autres ?"

Compta : "Combien l'application iPhone PJ demande-t-elle d'itinéraires piétons en une année ?"
Métier : "Est-ce que l'application iPhone 2.3 est encore utilisée ?"
"Sur quels terminaux ?"

Communication : "Où sont partis les bretons pendant les dernières vacances d'été ?"
Traitements lents (sup à 24h)
Interfaces peu ergonomiques
Stockage difficilement scalable
Pourrais tu me dire, pour chaque POI
 - Le nombre d'affichage en carte ?
 - Le nombre d'ouvertures de fiches ?
 - Le nombre de clics ?
 - ...
Pour 5 000 000 de POI,
 - au jour le jour,
 - sur deux ans...
Pourrais tu catégoriser les utilisateurs
 - selon leurs domicile/travail ?
 - selon leurs consommation POI ?
 - selon leurs habitudes de déplacement ?
 - ...
Pour 12 000 000 d'utilisateurs,
 - au jour le jour,
 - sur deux ans...

Mais... c'est quoi ?


Un moteur BI / Analytique
distribué sur Hadoop
Pourquoi 1000x plus rapide
que Spark SQL ?
Car il combine
 - Indexes multi-dimensionnels (in-mem)
 - Pré-agrégations (in-mem)
 - Stockage sur disque orienté-colonne
Suivis des performances serveurs et produits
Outil interne - Montre moi nos POIs !
Audience POI - Suivis de la performance de nos POIs
Quali - Analyse de nos tests automatiques
Tech - Suivis de nos déploiements
SEO - Suivi de la performance de notre référencement
Communication - Ou vont nos utilisateurs ?
Marketing - Qui sont nos utilisateurs ?
Nous avons rencontrés quelques
problèmes techniques
Avril 2015



- Select * sans limit !

- Schémas de bdd non supportés

- ...
Depuis Tableau 9.0
Juin 2015
Le selecteur de dates relatives...

SELECT `sqlproxy`.`referer_groupe` AS `referer_groupe`, SUM(`sqlproxy`.`hit_count`) AS `sum_hit_count_ok`, (
CASE WHEN ( `sqlproxy`.`referer_groupe` = 'Mappy' )
THEN 'Mappy' WHEN ( `sqlproxy`.`referer_groupe` = 'Partenaires' )
THEN 'Partenaires' WHEN ( `sqlproxy`.`referer_groupe` = 'Solocal' )
THEN 'Solocal' ELSE 'UNKNOW' END ) AS `referer_groupe__groupe_`

FROM `default`.`bi_routemm_perf` `sqlproxy`

WHERE ( ( `sqlproxy`.`date` >= CASE WHEN (
IF ( UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD ( CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT) ) ) IS NOT NULL
AND -2 IS NOT NULL )

THEN FROM_UNIXTIME ( UNIX_TIMESTAMP(CONCAT((YEAR(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))))+FLOOR((MONTH(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))))+-2)/12)), CONCAT('-', CONCAT(LPAD(PMOD(MONTH(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))))+-2, 12), 2, '0'), SUBSTR(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))), 8)))), SUBSTR('yyyy-MM-dd HH:mm:ss',0,LENGTH(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)))))), 'yyyy-MM-dd HH:mm:ss' ) END )

AND ( `sqlproxy`.`date` < CASE WHEN (
IF ( UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD ( CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT) ) ) IS NOT NULL
AND 1 IS NOT NULL )

THEN FROM_UNIXTIME ( UNIX_TIMESTAMP(CONCAT((YEAR(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))))+FLOOR((MONTH(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))))+1)/12)), CONCAT('-', CONCAT(LPAD(PMOD(MONTH(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))))+1, 12), 2, '0'), SUBSTR(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT))), 8)))), SUBSTR('yyyy-MM-dd HH:mm:ss',0,LENGTH(IF(UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') > 0, FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_ADD(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)), 'yyyy-MM-dd') + (UNIX_TIMESTAMP(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') - UNIX_TIMESTAMP(TO_DATE(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00')), 'yyyy-MM-dd')), 'yyyy-MM-dd HH:mm:ss'), DATE_ADD(CONCAT(TO_DATE('2016-03-21 17:03:52'), ' 00:00:00'), CAST(CAST(-(DAY('2016-03-21 17:03:52') - 1) AS BIGINT) AS INT)))))), 'yyyy-MM-dd HH:mm:ss' ) END ) )

GROUP BY (CASE WHEN (`sqlproxy`.`referer_groupe` = 'Mappy') THEN 'Mappy' WHEN (`sqlproxy`.`referer_groupe` = 'Partenaires') THEN 'Partenaires' WHEN (`sqlproxy`.`referer_groupe` = 'Solocal') THEN 'Solocal' ELSE 'UNKNOW' END), `sqlproxy`.`referer_groupe`

C'est corrigé en 9.3

SELECT
(CASE WHEN (`bi_routemm_perf`.`referer_groupe` = 'Mappy') THEN 'Mappy' WHEN (`bi_routemm_perf`.`referer_groupe` = 'Partenaires') THEN 'Partenaires' WHEN (`bi_routemm_perf`.`referer_groupe` = 'Solocal') THEN 'Solocal' ELSE 'UNKNOW' END) AS `referer_groupe__groupe_`, `bi_routemm_perf`.`referer_groupe` AS `referer_groupe`, SUM(`bi_routemm_perf`.`hit_count`) AS `sum_hit_count_ok`
FROM `default`.`bi_routemm_perf` `bi_routemm_perf`
WHERE ( (`bi_routemm_perf`.`date` >= CAST('2014-01-01 00:00:00' AS TIMESTAMP)) AND (`bi_routemm_perf`.`date` < CAST('2017-01-01 00:00:00' AS TIMESTAMP)) )
GROUP BY (CASE WHEN (`bi_routemm_perf`.`referer_groupe` = 'Mappy') THEN 'Mappy' WHEN (`bi_routemm_perf`.`referer_groupe` = 'Partenaires') THEN 'Partenaires' WHEN (`bi_routemm_perf`.`referer_groupe` = 'Solocal') THEN 'Solocal' ELSE 'UNKNOW' END), `bi_routemm_perf`.`referer_groupe`

Mais aussi des
problèmes organisationnels
En quelques mois
Les utilisateurs jouent avec
5 milliards de lignes,

via des interfaces graphiques
intuitives, sexy et ultra-rapides.
Niveau d'exigence
non adapté
à la complexité du sujet.
On ne donne pas
n'importe quelle data
à
n'importe qui !
Nous sommes allés beaucoup plus loin que ce que nous avions en tête au début du projet.
En route vers de nouveaux marchés

Utiliser la barre espace ou les flèches pour naviguer.

* Présentation optimisée pour chrome (transitions plus fluides)