Archive

Posts Tagged ‘ETL’

Quoi de neuf en BI avec SQL-Server 2014 ?

August 26th, 2013 No comments

Comme le temps passe !
Déjà une nouvelle version pour la plate-forme BI de Microsoft…
Mais que réserve donc la nouvelle mouture 2014 de SQL-Server ?
Et bien finalement pas grand chose. Et c’est tant mieux ! Parce qu’avec la sortie de SQL-Server 2012 l’an dernier et d’Office 2013 cette année, cela nous laissera un peu le temps de respirer.

Comme vous l’avez déjà probablement entendu, Microsoft a annoncé la version 2014 de sa suite BI au TechEd. Mais il a prévenu qu’il n’y aurait aucun changement majeur sur les 3 “pilliers” de sa suite BI (SSIS, SSAS & SSRS) ni même sur PowerPivot, à part quelques corrections de bugs.

Ceci dit, cela n’empêchera pas quelques améliorations notables et autres compléments qui pourraient s’avérer utiles dans vos projets BI.

Les évolutions successives de SQL-Server

Amélioration du “In-Memory”

Cela ne sera une surprise pour personne que la firme de Redmond continue d’investir massivement sur le stockage “en mémoire” tant c’est la tendance ces derniers temps. Voici les deux derniers volets de cette stratégie venant avec SQL-Server 2014 :

  • Nouveau stockage “in-memory” [/Nom de code Hekaton]: Cette nouvelle option de stockage en mémoire permettra d’héberger des tables SQL-Server directement “en mémoire” pour améliorer les performances de restitution. Même si c’est essentiellement pour un usage OLTP, cela pourrait être utile pour des cas précis de BI, comme par exemple pour améliorer les temps de chargement ETL en utilisant des tables de staging “in memory”.
  • Amélioration des indexes “ColumnStore”: C’était la grosse nouveauté de la précédentes mouture de SQL-server en terme d’indexation. On pourra désormais mettre un jour ces indexes, et donc on n’aura plus à supprimer puis recréer les indexes “ColumnStore” en cas d’ajout de données. (Pour un exemple d’utilisation de ces indexes pour améliorer les ETL jetez un œil à ce blog).

“Big data”

Il y a de nombreux échanges sur le sujet “big data”, notamment sur les deux technologies suivantes:

  • HDInsight: Il s’agit du terme marketing de Microsoft pour désigner son offre de type Hadoop pour des serveurs Windows. C’est à dire un framework destiné à faciliter la création d’applications distribuées et “scalables” et permettant aux applications de travailler avec des milliers de nœuds et de très gros volumes de données. En gros tout est distribué, du stockage aux traitements. (Un exemple d’usage sur ce post avec des traitements MapReduce complexes).
  • Polybase: La dernière version de Microsoft Parallel Data Warehouse (PDW) a été enrichie pour permettre de “requêter” des données basées sur du Hadoop, via une  nouvelle technologie appelée Polybase. (Une technologie que David Dewitt de chez Microsoft a décrit en détails lors de la SQL Pass 2012.)

Pour terminer, on annonce la première CTP1 publique dans quelques semaines.

Source :

Envoyer des IDOC SAP avec BODS

August 7th, 2012 No comments

Retour d’expérience sur le projet GASPAR pour le groupe PVCP (Pierre & Vacances – Center Parcs).

Dans ce projet le challenge était d’utiliser BODS comme middleware pour envoyer à SAP des écritures (pièces) comptables via la technologie IDOC.

Le contexte :

  • Un système Tiers dépose un fichier plat contenant la facturation client et les comptes d’imputations correspondants,
  • BODS charge ce fichier,
  • BODS traduit les imputations comptables du système tiers en code d’imputation comptable SAP,
  • BODS poste la pièce comptable dans SAP au format IDOC en mode message.

Les solutions :

  • Les utilisateurs métier maintiennent dans SAP des tables de correspondance entre compta système tiers et compta de SAP (hors périmètre de ce post),
  • BODS traduit via des lookup_ext les données d’imputation comptables (hors périmètre de ce post),
  • BODS envoi un IDOC par pièce comptable à SAP en utilisant l’IDOC ACC_DOCUMENT003.

La difficulté majeure résidait dans la génération des IDOC. Un fichier plat pouvant contenir jusqu’à 34000 documents comptables générant autant d’IDOC.

Un IDOC SAP ce présente sous un format de type xml. L’ACC_DOCUMENT003 simule la saisie d’une pièce comptable, il y a de nombreux champs à remplir pour satisfaire SAP, et de nombreux contrôles sont réalisés pour que la pièce comptable soit considérée comme juste.

Ce qui nous intéresse ici est la partie génération de l’IDOC.

Génération massive d’IDOC :

1. Structurer les données pour ce rapprocher du schéma cible :

Deux méthodes ont été utilisées sur le projet, création d’une table par segments d’IDOC, ou division de la table source en autant de query que de segments d’IDOC

Chaque IDOC est référencé par un Identifiant unique, un IDOC peut contenir plusieurs lignes, qui doivent être référencées de manière unique par IDOC.

La table/query d’en-tête ne doit comporter qu’une seule ligne par identifiant d’IDOC, les autres tables/query peuvent contenir plusieurs lignes.

A l’image d’un modèle en étoile les données sont réparties entre : la table d’en-tête (Fait) et les tables de lignes (Dimension).

ci-dessous des données en exemple :

2. Lier les Tables/Query à une en-tête pour générer tous les IDOC en une passe. 

(Dans l’exemple précédent : la query “QRY_MATCH_IDOC”)

La query en amont de l’IDOC (query_2) place les segments dans l’IDOC.

Chaque Tables sources doivent être insérées dans la cible comme schéma.

2.1 L’en-tête :

La clause FROM est déterminante pour structurer l’IDOC. La clause FROM de query_2 aura pour valeur la table d’en-tête.

Puis tous les segments d’en-tête auront comme valeur dans la clause FROM le “Row_Generation”. Cela permet de ne remplir l’en-tête qu’une seule fois. Dans l’exemple ci-dessus les segments EDI_DC40, E1BPACHE09 et E1BPACEXTC

(détail d’un segment)

2.2 Les lignes :

Les autres segments sont rempli par les tables correspondantes, avec en clause FROM la table, et en clause WHERE le lien vers l’identifiant de l’en-tête

En exemple le segment E1BPACGL09 :

2.3 Cas particulier d’une duplication de segment :

Dans certains cas un segment doit être répété. Lors de la première itération le segment est paramétré à l’identique des autres, et la deuxième itération la clause FROM prendra pour valeur un “ROW_GENERATION”.

 

3. Paramétrage de l’envoi d’IDOC

Afin d’optimiser l’envoi des IDOC en mode message la fenêtre suivant permet de modifier le nombre d’envoi simultané d’IDOC. Deux solutions, par paquet ou par division chronologique.

La solution d’envoyé les IDOC par paquet de 100 a été choisi compte tenu du paramétrage de SAP chez le client.

Conclusion

Cette méthode permet d’envoyer en masse en quelques minutes des milliers d’IDOC.

Certes BODS est détourné de son utilisation première (ETL) pour devenir un modeste intégrateur, néanmoins les performances sont très bonne.

Aujourd’hui la moyenne est : 1 min / 1000 IDOC de type ACC_DOCUMENT003.

Service Web et ETL deux philosophies différentes pour intégrer des données

May 15th, 2012 1 comment

Dans le monde de l’intégration et de l’échange de données deux écoles – aux concepts diamétralement différents – se distinguent pour proposer des solutions. Il s’agit des architectures orientées service (ou SOA pour Service Oriented Architecture) et des architectures BI plutôt orientées ETL. Historiquement ces deux visions ont suivi un cheminement différents dans l’évolution de l’informatique. Les SOA viennent du monde  de l’objet, du Java et du Web tandis que la BI est issus des environnements base de données, SQL et transferts batchs. Ce billet synthétise les différences, les avantages et les inconvénients de ces deux types de solutions sous forme d’un tableau synoptique.

Comparatifs des Architectures Orientées Services et des Architectures Business Intelligence: avantages et inconvénients