J'ai ce tableau fait:intégrité référentielle clé étrangère dans les tableaux de fait - T-SQL
CREATE TABLE [dbo].[FACT_TABLE]
(
[A_id] [int] NOT NULL,
[B_id] [int] NOT NULL,
[C_id] [int] NOT NULL,
[D_id] [int] NOT NULL,
[FACT_total] [float] NOT NULL,
[FACT_average] [float] NOT NULL,
CONSTRAINT [PK_FACT_TABLE]
PRIMARY KEY CLUSTERED ([A_id] ASC, [B_id] ASC,
[C_id] ASC, [D_id] ASC)
) ON [PRIMARY]
J'ai un script T-SQL pour charger des données dans ma table de fait:
INSERT INTO [dbo].[FACT_TABLE] ([A_id], [B_id], [C_id], [company_id], [D_id],[FACT_total], [FACT_average])
SELECT
b.A_id, c.B_id, d.C_id, e.D_id,
AVG(FACT_total) AS FACT_total,
AVG(FACT_average) AS FACT_average
FROM
[dbo].[staging_Area] a
INNER JOIN
[dbo].[DIM_A] b ON a.A_id = b.A_id
INNER JOIN
[dbo].[DIM_B] c ON a.[B_id] = c.B_id
INNER JOIN
[dbo].[DIM_C] d ON a.[C_id] = d.C_id
INNER JOIN
[dbo].[DIM_D] e ON a.D_id = e.D_id
GROUP BY
b.A_id, c.B_id, d.C_id, e.D_id
Comment puis-je garantir que je n'insère pas de valeurs en double dans ma table de faits pour ne pas avoir d'erreur d'intégrité référentielle?
J'ai essayé avec la déclaration suivante après cette requête:
EXCEPT
SELECT *
FROM [dbo].[FACT_TABLE]
Mais je pense que ce n'est pas la meilleure approche pour cette ...
Quelqu'un at-il une autre alternative pour cela? Désolé mais je ne peux pas mettre la vraie colonne et les noms des tables ...
Merci!
Comment définissez-vous vos doublons? si c'est l'ensemble de l'enregistrement, mettez toutes les colonnes comme une clé composite – LONG