Discussion: Jointure entre une plage de date [2008R2]

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2008
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : octobre 2008
    Messages : 641
    Points : 571
    Points
    571

    Par défaut Jointure entre une plage de date

    Bonjour,

    Je cherche à faire un lookup ou jointure sur une plage de date.
    Par exemple j'ai une table de fait avec un date et je cherche la dimension qui correspond dont la plage englobe la date de mon fait.

    En SQL Classique je ferais un truc du genre .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM Faits F
    INNER JOIN  Dimention D ON F.CleMetier=D.CleMetier AND F.Date BETWEEN D.DateDebut and D.DateFin
    Comment réaliser un truc similaire en SSIS ?
    Ou quel mots clé utiliser pour une recherche Google ?

    A+

  2. #2
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2011
    Messages : 327
    Points : 814
    Points
    814

    Par défaut

    Petite question tes 2 tables sont sur la même instance ?
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2008
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : octobre 2008
    Messages : 641
    Points : 571
    Points
    571

    Par défaut

    Dans mon exemple oui, mais pas dans la réalité.


    Sinon je ferais une bête jointure.

  4. #4
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2011
    Messages : 327
    Points : 814
    Points
    814

    Par défaut range Lookup / Preco Jointure SQL

    Tu cherche a faire un range lookup , Voici lien pour le Faire en SSIS https://blogs.msdn.microsoft.com/mattm/2008/11/25/lookup-pattern-range-lookups/ .

    Mais franchement si tu peux faire une copie d'une des 2 tables pour les regrouper sur même instance, je te conseil fortement pour des raisons de performance de faire ce lookup Via une bonne vielle Jointure SQL .
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2008
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : octobre 2008
    Messages : 641
    Points : 571
    Points
    571

    Par défaut

    Cette approche est la premier que j'ai essayé.
    ça fait effectivement le job mais c'est ridiculement lent, genre 30 fois plus lent qu'une jointure.

    Je me demandais si il n'y a pas d'autres approches en pure SSIS.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2008
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : octobre 2008
    Messages : 641
    Points : 571
    Points
    571

    Par défaut

    En fait avec un "script component" le temps est presque identique au look up classique.
    Il faut juste contrôler/maîtriser la consommation de RAM en cas de lookup dans de grosses tables.

    voilà un lien pour ceux que ça interesse :
    https://kohera.be/blog/sql-server/ss...ipt-component/

    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête sur une plage de date
    Par altecad dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/05/2007, 15h11
  2. Réponses: 16
    Dernier message: 14/09/2006, 06h43
  3. [SQL Server 8] Trouver une plage de date
    Par Baquardie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/04/2006, 19h30
  4. [date] Recherche dans une plage de dates
    Par astro84 dans le forum JavaScript
    Réponses: 5
    Dernier message: 28/06/2005, 17h13
  5. Sélection d'une plage de dates
    Par Bouanda dans le forum MS SQL-Server
    Réponses: 3
    Dernier message: 24/10/2004, 20h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo