Création d’une collection qui concatène les informations de 3 tables Dataverse

  • Création d’une collection qui concatène les informations de 3 tables Dataverse

    Posté par Aurélien ATIBARD sur 29 avril 2024 à 11h53

    Bonjour,

    Je travaille sur 3 tables Dataverse qui ont des relations entre elles :

    • Table_1 : 3000 lignes, 40 colonnes dont 10 qui m’intéressent
    • Table_2 : 50 lignes, 10 colonnes qui a une relation 1:N avec la “Table_1” et dont 1 colonne m’intéresse
    • Table_3 : 10 lignes, 10 colonnes qui a une relation 1:N avec la “Table_2” et dont 1 colonne m’intéresse

    Je cherche à créer une collection qui regroupera l’ensemble de mes données utiles avec toutes les liaisons.

    J’ai commencé en créant la collection comme suit :

    <pre class=”language-javascript”>ClearCollect(
    colMyDatas,
    ShowColumns(
    Table_1,
    cdm_Nom,
    cdm_Prenom,
    cdm_City
    ),
    Collect(
    colMyDatas,
    ShowColumns(
    Table_2,
    cdm_Phone
    )
    ),
    Collect(
    colMyDatas,
    ShowColumns(
    Table_3,
    cdm_linkedin,
    )
    )
    )

    Cela a pour conséquence d’ajouter toutes mes lignes les unes derrières les autres sans aucun logique.

    Est ce que vous avez une idée pour avoir cette table consolidée ?

    Merci 😉

    Aurélien ATIBARD a répondu Il y a 6 mois, 1 semaine 2 Membres · 8 Réponses
  • 8 Réponses
  • DavidZed

    Membre
    29 avril 2024 à 13h26

    Hello,

    Si tu souhaites une table avec toutes les liaisons, pourquoi ne pas simplement conserver la structure de ta Table 1 et de sa colonne lookup vers la table 2 ?

    Si c’est pour des questions de performances et que tu as bien laissé cette option désactivée :

    faire des ShowColumns / DropColumns pour ne remonter que les données qui t’interessent ne va pas te faire gagner grand chose, dans la mesure où si une colonne n’est pas utilisée dans ton app, la donnée ne sera pas requêtée.

    Sinon pour faire ce que tu souhaites : applatir les relations en une table unique, il faudra faire un AddColumns pour chaque colonne enfant à afficher :

    ShowColumns(AddColumns(Table1 ; Added_Phone ; 'Nom de la colonne lookup'.cmd_Phone ) ; [Colonnes à afficher] )

  • Aurélien ATIBARD

    Membre
    29 avril 2024 à 15h07

    Merci beaucoup pour ton retour, je m’essaye et je te tiens au courant.

  • Aurélien ATIBARD

    Membre
    29 avril 2024 à 16h23

    Avec la technique proposée, cela génère des tables dans ma collection qui ne sont pas exploitables:

    Je n’arrive pas à garantir l’héritage des relations parents/enfants.

  • DavidZed

    Membre
    29 avril 2024 à 17h30

    C’est étrange, peux tu montrer ton collect ?

  • Aurélien ATIBARD

    Membre
    30 avril 2024 à 9h02

    Voici ma collection :

    <div>
    <div>
    <pre class=”language-javascript”>ClearCollect(
    colSR,
    ShowColumns(
    Table1,
    cdx9_Nom,
    cdx9_Prenom,
    cdx9_Email
    )
    );
    AddColumns(
    colSR,
    cdx9_Phone,
    Table2.cdx9_Phone,
    cdx9_Indicateur,
    Table2.cdx9_IndicateurPays
    );

    </div>
    </div>

  • DavidZed

    Membre
    30 avril 2024 à 10h44

    Le AddColumns doit être imbriqué dans le showcolumns et ce dernier doit afficher les colonnes ajoutées :

    ClearCollect(
    colSR,
    ShowColumns(
    AddColumns(
    Table1,
    cdx9_Phone,
    Table2.cdx9_Phone,
    cdx9_Indicateur,
    Table2.cdx9_IndicateurPays
    ),
    cdx9_Nom,
    cdx9_Prenom,
    cdx9_Email,
    cdx9_Phone,
    cdx9_Indicateur
    )
    )

  • DavidZed

    Membre
    30 avril 2024 à 10h50

    PS : ça fonctionnera si la colonne lookup dans Table1 se nomme Table2, si la colonne se nomme cdx9_Télephone par exemple, il faudra indiquer cdx9_Télephone.cdx9_Phone et cdx9_Télephone.cdx9_Indicateur dans le Addcolumns

  • Aurélien ATIBARD

    Membre
    15 mai 2024 à 13h07

    J’ai appliqué tes recommandations sur un POC et ça fonctionne parfaitement. Merci 😉

Connectez-vous pour répondre.