Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

Base de Connaissance

Apprenez auprès des experts.
TIPS de la semaine

Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !

Voir l'index

Créer la clé primaire de table de base de données dans Alteryx

Community_Admin
Alteryx
Alteryx
Créé
Créer la clé primaire de table de base de données dans Alteryx

Une des choses puissantes sur le concepteur Alteryx est que vous pouvez faire la plupart des choses liées à votre flux de travail à partir de l'intérieur du workflow lui-même. Une de ces opérations est la création d'une clé primaire pour votre table de base de données et à savoir l'utilisation des options de pré-créer SQL et post-Create SQL dans les données d'entrée et les outils de données de sortie pour ce faire.

Que sont les clés primaires?

Une clé primaire identifie de manière unique un enregistrement dans une table de base de données. La valeur d'un identificateur unique, entre autres avantages, est qu'il améliore les performances de la base de données et permet des mises à jour sur les enregistrements.

Les clés primaires peuvent être constituées d'une ou plusieurs colonnes dans la table d'une table de base de données. Toutefois, une table ne peut avoir qu'une seule clé primaire. Les clés primaires ne peuvent pas être null et doivent être uniques et, par conséquent, l'assignation d'une clé primaire se compose au moins de deux étapes: la définition de la colonne n'est pas null et la définition de la clé primaire. Les valeurs de la colonne cible que vous définissez en tant que clé primaire doivent uniquement avoir des valeurs uniques, sinon la base de données lèvera une erreur. Si aucune colonne de la table ne convient pour être une clé primaire, vous pouvez utiliser l'outil Alteryx record ID pour créer une telle colonne.

Cet article traitera du cas d'utilisation d'une colonne comme clé primaire. Une fois que vous savez comment créer une clé primaire à une colonne, vous pouvez trouver de nombreux articles en ligne expliquant comment créer des clés primaires multi-colonnes dans SQL.

Création de clés primaires dans Alteryx

Tous les exemples suivants supposent que vous savez comment vous connecter à votre base de données.

1. Clé primaire pour une nouvelle table:

Lors de la création d'une nouvelle table dans Alteryx puis de l'enregistrer sur la base de données, la méthode la plus simple consiste à enregistrer la table en premier, puis à «modifier» la table à l'aide de post-Create SQL pour définir la clé primaire.

Créer une nouvelle table avec Key. png primaire

Les instructions SQL pre/post-Create dépendent de la base de données que vous utilisez. Dans cet article, vous trouverez des exemples pour SQL Server et Oracle, mais vous pouvez obtenir plus d'exemples en ligne.

Créer une nouvelle table avec la clé primaire-SQL Server. png

Créer une nouvelle table avec la clé primaire-Oracle. png

Pour SQL Server-expression 1a:

ALTER TABLE ExampleTest1
ALTER COLUMN PrimaryK int  NOT NULL;
 
ALTER TABLE ExampleTest1
ADD PRIMARY KEY (PrimaryK);

Pour Oracle (10 +) – expression 1b:

ALTER TABLE "ExampleTest1"
MODIFY "PrimaryK" NUMBER NOT NULL;
 
ALTER TABLE "ExampleTest1"
ADD CONSTRAINT Example_pk  PRIMARY KEY ("PrimaryK");

Comme vous le remarquerez, les expressions 1a et 1b sont légèrement différentes.

  • Les mots avec toutes les majuscules sont des mots clés SQL. Ce sont les commandes que la base de données comprend.
  • "ExampleTest1" est le nom de la table; Remplacez-le par le nom de votre table.
  • "PrimaryK" est le nom du champ que vous voulez faire en tant que clé primaire. Dans cet exemple, il a été généré à l'aide de l'outil record ID.

Créer PK en utilisant recordID. png

  • Dans Oracle, Example_pk est le nom de la contrainte. Vous pouvez le définir à ce que vous voulez aussi longtemps qu'il n'a pas d'espaces ou de caractères spéciaux et il est unique dans la base de données. Par exemple, vous pouvez utiliser ExampleTest1_pk.
  • Le mot int dans l'instruction SQL Server et le mot numéro dans l'instruction Oracle sont les types de la colonne dans le langage de SQL Server et d'Oracle, respectivement. Si vous utilisez l'outil ID d'enregistrement similaire à l'exemple de workflow, vous pouvez conserver l'un de ces types. Sinon, vous devrez le changer pour le type correct. Vous pouvez obtenir plus de détails sur les types de base de données ici: SQL Server, Oracle.
  • Remarque: pour Oracle si vous avez défini le style de la table d'options de l'outil de données de sortie/nom de domaine SQL à guillemets (par défaut), vous devez utiliser les guillemets autour des noms de tables et de champs; Sinon, enlevez-les.

Vous pouvez confirmer que la table a maintenant une clé primaire en utilisant un outil de données d'entrée et en vérifiant le générateur de requêtes visuelles. La clé primaire affiche un signe à côté du nom du champ.

Result. png

2. Clé primaire d'une table existante:

Si vous avez déjà une table dans la base de données à laquelle vous souhaitez affecter une clé primaire, il y a deux cas:

  1. La table contient déjà une colonne qui peut être affectée comme clé primaire:

Créer une clé primaire à partir de Column. png existante

  • La colonne ne doit contenir que des valeurs uniques et aucune valeur null.
  • Vous pouvez vérifier le type de colonne pour le champ que vous souhaitez définir comme clé primaire à l'aide du générateur de requêtes Visual.

Type de colonne. png

  • Utilisez l'outil de données d'entrée et remplissez l'expression 1a ou 1b dans le code pre-Create SQL dans ce cas, la table existe dans la base de données et vous n'avez qu'à assigner la clé primaire pour que vous puissiez utiliser le code pré-Create SQL. Étant donné que les données récupérées sont ignorées, il est conseillé de limiter le nombre de lignes récupérées aux 10 premiers enregistrements à l'aide de ces instructions SQL:
    • Pour SQL Server: sélectionnez Top 10 * de ExampleTest2;
    • Pour Oracle: Select * from "ExampleTest2" où rowNum < = 10

Pre-Create SQL-SQL Server. png

Pre-Create SQL-Oracle. png

2. La table n'a pas de colonne/colonnes appropriées pour être une clé primaire:

Mettre à jour la table existante pour ajouter la clé primaire Column. png

  • Dans ce cas, vous devez apporter les données à Alteryx, ajouter un champ qui peut être une clé primaire, écrire les données, puis définir la clé primaire.
  • Vous pouvez utiliser l'ID d'enregistrement pour créer le nouveau champ de la clé primaire.
  • Vous devrez déposer (supprimer) la table et ré-écrire pour faire ce changement. Pour vous assurer que vous lisez toutes les données de la table, vous devez utiliser le bloc jusqu'à ce que l'outil fait juste avant l'outil de données de sortie.
  • Comme pour le premier exemple, nous mettrons expression 1a ou 1b dans le post-Create SQL. La différence ici est que l'option de sortie de l'outil de données de sortie est définie sur remplacer la table (Drop).

Remplacer la table et ajouter PK-SQL Server. png

Remplacer la table et ajouter PK-Oracle. png

Ce sont les cas les plus courants de création de clés primaires et vous pouvez utiliser la même logique pour créer des clés primaires plus complexes ou en effet déplacer une partie de la maintenance de la table SQL droite dans votre workflow à l'aide des options de pré-créer/post-Create SQL.

Note côté: Si vous avez remarqué dans mes captures d'écran, j'ai des noms courts pour les connexions de base de données (si non, les vérifier). Ce sont des alias-une façon ordonnée de se référer à vos connexions de base de données. Si vous n'êtes pas les utiliser, vous devriez vérifier cet article.

Erreurs courantes liées aux clés primaires

Voici les erreurs les plus courantes qui pourraient pointer vers des problèmes avec des clés primaires:

  • Clé primaire requise pour l'option de mise à jour...

Assurez-vous qu'une clé primaire est déclarée sur la table.

  • Violation de la contrainte de clé primaire'PK_TEST'. Impossible d'insérer la clé dupliquée dans l'objet dbo. TEST». La valeur de clé dupliquée est...

Vous essayez d'insérer une clé qui existe déjà. Assurez-vous que vous n'insérez pas les doublons. La colonne de clé primaire est-elle alphanumérique mais ne respecte pas la casse? Par exemple, SQL Server n'est pas sensible à la casse et EhzA et EhzA sont considérés comme dupliqués.

Remarque: si la touche apparaît plusieurs fois sur le fichier d'entrée et qu'une option de mise à jour est choisie, le même enregistrement sera mis à jour plusieurs fois.

  • Dans les outils réguliers... Impossible d'insérer une valeur explicite pour la colonne identity dans la table'test'....

La clé est définie sur auto-incrémentation et Alteryx tente d'insérer une valeur dans cette colonne. Désélectionnez la colonne clé primaire avant de l'ajouter à la table et laissez la base de données créer la valeur.

  • Ecrire des données dans-DB.... Une valeur explicite pour la colonne identity dans la table'test'peut uniquement être spécifiée lorsqu'une liste de colonnes est utilisée et que IDENTITY_INSERT est sur....

Les outils in-DB ne peuvent pas générer l'instruction SQL nécessaire pour mettre à jour une table qui a une clé qui est définie sur auto-incrémentation. Changez la façon dont la clé est générée dans votre table ou utilisez les outils normaux.

Pour plus d'informations, s'il vous plaît contacter Alteryx soutien et l'un de nous vous contacterons.

Vous pouvez trouver les workflows utilisés dans cet article joint à ce post. Lorsque vous ouvrez ces workflows, vous obtiendrez des erreurs-c'est attendu parce que vos détails de connexion sont différents. Vous devrez mettre à jour les détails de connexion et les noms de table/colonne avant de les utiliser. Ces workflows ont été créés avec Alteryx designer 10,1 (10.1.7.12188).

Fadi, Henriette, Margarita

Connexion de base de données
Pièces jointes
contributeurs
Étiquettes