Archive

Posts Tagged ‘Teradata’

Trucs et Astuces SQL Assistant TERADATA vol.1

April 2nd, 2014 No comments

L’outil d’Assistant SQL de TERADATA s’appelait, jusqu’à la version 12.0, « Queryman ». Désormais, il porte le nom de « Teradata SQL Assistant »

Cet outil permet à l’utilisateur de requêter librement sur les tables ou vues d’une base de données. Mais aussi à se connecter à des bases externes, importer et exporter des données et autres fonctionnalités.

Pour faciliter une première approche de l’outil, voici quelques trucs et astuces pour une utilisation simplifiée :

Au programme :

  • Les différentes parties de l’interface
  • Définir une connexion et base source
  • Interroger une définition de table
  • Paramétrer une requête pour faciliter l’exécution
  • Recherche simplifiée de requêtes historisées
  • Quelques raccourcis clavier à connaître

Read more…

Arrondi d’un intervalle de dates sous Teradata

October 23rd, 2013 No comments

Teradata  nous réserve décidément bien des surprises dès qu’il s’agit de manipuler des arrondis. Nous l’avons vu précédemment sur des arrondis de nombres équidistants de deux bornes, mais c’est aussi vrai lors du calcul d’une différence de dates.

Dans notre cas, une compagnie aérienne souhaite différencier les vols en fonction de leur durée en heures.

Pour cela, on part des Date/heure de départ et arrivée pour un calcul simple : Date/heure Fin – Date-/heure début.

Sous Teradata, on aurait donc  :

SELECT CAST(CAST(‘2013-07-26 18:12:00′ AS TIMESTAMP(0))-CAST(‘2013-07-26 16:10:00′ AS TIMESTAMP(0)) HOUR(4)) AS INTEGER)

— résultat => 2, arrondi de 2 heures et 2 minutes

L’arrondi paraît logique;  il l’est beaucoup moins dans le cas suivant :

SELECT CAST((CAST(‘2013-07-26 18:00:00′ AS TIMESTAMP(0))-CAST(‘2013-07-26 15:58:00′ AS TIMESTAMP(0)) HOUR(4)) AS INTEGER)

— résultat => 3, arrondi de 2 heures et 2 minutes !!

Read more…

Arrondi au plus proche sous Teradata

June 30th, 2013 No comments

Arrondir un nombre au plus proche sous Teradata est relativement simple au premier abord.

S’il s’agit d’arrondir à l’entier on pourra utiliser :

SELECT CAST(1.2345 AS DECIMAL(2,0)) –> 1

Pour arrondir à deux décimales, on utilisera :

SELECT CAST(1.2345 AS DECIMAL(5,2)) –> 1.23

Mais la résolution de l’arrondi au plus proche se révèle plus surprenante quand le nombre est équidistant de l’arrondi supérieur et de l’arrondi inférieur.

En effet, contrairement à la plupart des systèmes sur le marché (de Excel à Oracle en passant par SSIS ou MySql), sous Teradata l’arrondi d’un nombre équidistant de ses arrondis inférieurs et supérieurs ne se fait pas systématiquement vers le supérieur mais dépend de la parité du dernier chiffre avant troncature.

Ainsi obtiendra-t-on :

SELECT CAST(1.2345 AS DECIMAL(5,3)) –> 1.234

SELECT CAST(4.5 AS DECIMAL(2,0)) –> 4

Alors que :

SELECT CAST(1.2335 AS DECIMAL(5,3)) –> 1.234

SELECT CAST(3.5 AS DECIMAL(2,0)) –> 4

C’est à dire que si le dernier chiffre avant troncature (en rouge dans l’exemple) est pair , le nombre sera arrondi à l’inférieur. Si ce dernier chiffre est impair, le nombre sera arrondi au supérieur.

En clair, Teradata a pris le parti de répartir l’approximation de l’arrondi équidistant entre le supérieur et l’inférieur.

Conclusion :

Si ce comportement est particulièrement perturbant parce qu’il va à l’encontre de 80% des systèmes sur le marché, il peut être expliqué par le besoin de lisser l’erreur d’approximation lorsque l’on traite une très forte volumétrie de données.

A noter enfin qu’Informatica PowerCenter prend le contrepied en arrondissant les pairs au supérieur et les impairs à l’inférieur.