示例#1
0
        public DwhTableBuilder(MsSqlDwhBuilder builder, ResilientTable resilientTable, RelationalTable table)
        {
            DwhBuilder     = builder;
            ResilientTable = resilientTable;
            Table          = table;

            HasEtlRunInfo = builder.Configuration.UseEtlRunInfo && !Table.GetEtlRunInfoDisabled();
            if (HasEtlRunInfo)
            {
                EtlRunInsertColumnNameEscaped = Table[builder.Configuration.EtlRunInsertColumnName].NameEscaped(builder.ConnectionString);
                EtlRunUpdateColumnNameEscaped = Table[builder.Configuration.EtlRunUpdateColumnName].NameEscaped(builder.ConnectionString);
                EtlRunFromColumnNameEscaped   = Table[builder.Configuration.EtlRunFromColumnName].NameEscaped(builder.ConnectionString);
                EtlRunToColumnNameEscaped     = Table[builder.Configuration.EtlRunToColumnName].NameEscaped(builder.ConnectionString);
            }

            ValidFromColumn            = Table[builder.Configuration.ValidFromColumnName];
            ValidFromColumnNameEscaped = ValidFromColumn?.NameEscaped(builder.ConnectionString);

            ValidToColumnName        = ValidFromColumn != null ? builder.Configuration.ValidToColumnName : null;
            ValidToColumnNameEscaped = ValidToColumnName != null?builder.ConnectionString.Escape(ValidToColumnName) : null;
        }
示例#2
0
        private IMutator CreateTempWriter(ResilientTable table, RelationalTable dwhTable)
        {
            var tempColumns = dwhTable.Columns
                              .Where(x => !x.GetUsedByEtlRunInfo());

            if (dwhTable.AnyPrimaryKeyColumnIsIdentity)
            {
                tempColumns = tempColumns
                              .Where(x => !x.IsPrimaryKey);
            }

            return(new MsSqlWriteToTableWithMicroTransactionsMutator(table.Topic, "Writer")
            {
                ConnectionString = table.Scope.Configuration.ConnectionString,
                TableDefinition = new DbTableDefinition()
                {
                    TableName = table.TempTableName,
                    Columns = tempColumns
                              .Select(c => new DbColumnDefinition(c.Name, c.NameEscaped(DwhBuilder.ConnectionString)))
                              .ToArray(),
                },
            });
        }