es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Generación de clave externa de tabla de hechos del almacén de datos.

Soy bastante nuevo en el diseño de almacén de datos.
Tengo una base de datos como se muestra a continuación.
aquí

aquí

Estoy planeando crear un almacén de datos simple como se muestra a continuación.

aquí

Pero el problema al que me enfrento ahora es que no tengo ClientId y LoanId en la tabla Fact. Debido a que en la base de datos original estaban vinculados a través de la tabla Account.
Estoy intentando lograr esto a través de SQL Server. ¿Alguien puede mostrarme la dirección de cómo abordar esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en SQL Server y almacén de datos, sugiero los siguientes pasos para agregar ClientId y LoanId a la tabla de hechos:

    1. Crea una nueva columna en la tabla de hechos para ClientId y LoanId.
    2. Utiliza la tabla Account como tabla de enlace entre la tabla de hechos y las tablas Client/Loan.
    3. Utiliza la sentencia INNER JOIN de SQL Server para enlazar la tabla Account con las tablas Client y Loan utilizando AccountId como clave.
    4. Luego utiliza la sentencia INSERT INTO de SQL Server para insertar los datos de las tablas enlazadas en la tabla de hechos utilizando las columnas recién creadas para ClientId y LoanId.

    Aquí tienes un ejemplo de código SQL que puede ayudarte a lograr esto:

    ALTER TABLE Fact ADD ClientId INT, LoanId INT;
    
    INSERT INTO Fact (ClientId, LoanId, TransactionDate, Amount)
    SELECT c.ClientId, l.LoanId, a.TransactionDate, a.Amount 
    FROM Account a 
    INNER JOIN Client c ON c.ClientId = a.ClientId 
    INNER JOIN Loan l ON l.LoanId = a.LoanId;
    

    Nota: Este código asume que las tablas Client y Loan ya existen en tu base de datos.

    Espero que esto te ayude a agregar las columnas requeridas a tu tabla de hechos.

Comments are closed.