private void IdentityColumnAtTheEnd(IConnectionManager connection)
        {
            //Arrange
            FourColumnsTableFixture source4Columns = new FourColumnsTableFixture(connection, "Source4Cols", identityColumnIndex: 3);

            source4Columns.InsertTestData();
            FourColumnsTableFixture dest4Columns = new FourColumnsTableFixture(connection, "Destination4Cols", identityColumnIndex: 3);

            //Act
            DataFlowForIdentityColumn(connection);

            //Assert
            dest4Columns.AssertTestData();
        }
Beispiel #2
0
        public void SourceMoreColumnsThanDestination(IConnectionManager connection)
        {
            //Arrange
            FourColumnsTableFixture source4Columns = new FourColumnsTableFixture(connection, "SourceDynamic4Cols");

            source4Columns.InsertTestData();
            TwoColumnsTableFixture dest2Columns = new TwoColumnsTableFixture(connection, "DestinationDynamic2Cols");

            //Act
            DbSource <ExpandoObject>      source = new DbSource <ExpandoObject>(connection, "SourceDynamic4Cols");
            DbDestination <ExpandoObject> dest   = new DbDestination <ExpandoObject>(connection, "DestinationDynamic2Cols");

            source.LinkTo(dest);
            source.Execute();
            dest.Wait();

            //Assert
            dest2Columns.AssertTestData();
        }
Beispiel #3
0
        public void DifferentColumnsInView(IConnectionManager connection)
        {
            //Arrange
            FourColumnsTableFixture s4c = new FourColumnsTableFixture(connection, "dbsource_extended");

            s4c.InsertTestData();
            CreateViewTask.CreateOrAlter(connection, "DbSourceViewExtended", $"SELECT {s4c.QB}Col2{s4c.QE}, {s4c.QB}Col4{s4c.QE} FROM dbsource_extended");
            FourColumnsTableFixture d4c = new FourColumnsTableFixture(connection, "DbDestinationExtended", 1);

            //Act
            DbSource <MyExtendedRow>      source = new DbSource <MyExtendedRow>("DbSourceViewExtended", connection);
            DbDestination <MyExtendedRow> dest   = new DbDestination <MyExtendedRow>("DbDestinationExtended", connection);

            source.LinkTo(dest);
            source.Execute();
            dest.Wait();

            //Assert
            d4c.AssertTestData();
        }
Beispiel #4
0
        public void SimpleLookupFromDB(IConnectionManager connection)
        {
            //Arrange
            TwoColumnsTableFixture source2Columns = new TwoColumnsTableFixture(connection, "Source");

            source2Columns.InsertTestData();
            FourColumnsTableFixture dest4Columns   = new FourColumnsTableFixture(connection, "Destination");
            FourColumnsTableFixture lookup4Columns = new FourColumnsTableFixture(connection, "Lookup");

            lookup4Columns.InsertTestData();

            DBSource <MyInputDataRow> source       = new DBSource <MyInputDataRow>(connection, "Source");
            DBSource <MyLookupRow>    lookupSource = new DBSource <MyLookupRow>(connection, "Lookup");

            //Act
            List <MyLookupRow> LookupTableData = new List <MyLookupRow>();
            Lookup <MyInputDataRow, MyOutputDataRow, MyLookupRow> lookup = new Lookup <MyInputDataRow, MyOutputDataRow, MyLookupRow>(
                row =>
            {
                MyOutputDataRow output = new MyOutputDataRow()
                {
                    Col1 = row.Col1,
                    Col2 = row.Col2,
                    Col3 = LookupTableData.Where(ld => ld.Key == row.Col1).Select(ld => ld.LookupValue1).FirstOrDefault(),
                    Col4 = LookupTableData.Where(ld => ld.Key == row.Col1).Select(ld => ld.LookupValue2).FirstOrDefault(),
                };
                return(output);
            }
                , lookupSource
                , LookupTableData
                );
            DBDestination <MyOutputDataRow> dest = new DBDestination <MyOutputDataRow>(connection, "Destination");

            source.LinkTo(lookup);
            lookup.LinkTo(dest);
            source.Execute();
            dest.Wait();

            //Assert
            dest4Columns.AssertTestData();
        }
Beispiel #5
0
        public void SimpleLookupWithoutObject(IConnectionManager connection)
        {
            //Arrange
            TwoColumnsTableFixture source2Columns = new TwoColumnsTableFixture(connection, "Source");

            source2Columns.InsertTestData();
            FourColumnsTableFixture dest4Columns   = new FourColumnsTableFixture(connection, "Destination", -1);
            FourColumnsTableFixture lookup4Columns = new FourColumnsTableFixture(connection, "Lookup");

            lookup4Columns.InsertTestData();

            DBSource      source = new DBSource(connection, "Source");
            DBDestination dest   = new DBDestination(connection, "Destination");

            //Act
            List <string[]> lookupList = new List <string[]>();

            DBSource lookupSource = new DBSource(connection, "Lookup");
            Lookup   lookup       = new Lookup(
                row =>
            {
                Array.Resize(ref row, 4);
                row[2] = lookupList.Where(lkupRow => lkupRow[0] == row[0]).Select(lkupRow => lkupRow[2]).FirstOrDefault();
                row[3] = lookupList.Where(lkupRow => lkupRow[0] == row[0]).Select(lkupRow => lkupRow[3]).FirstOrDefault();
                return(row);
            },
                lookupSource,
                lookupList
                );

            source.LinkTo(lookup);
            lookup.LinkTo(dest);
            source.Execute();
            dest.Wait();

            //Assert
            dest4Columns.AssertTestData();
        }
Beispiel #6
0
        public void InputTypeSameAsOutput(IConnectionManager connection)
        {
            //Arrange
            FourColumnsTableFixture source4Columns = new FourColumnsTableFixture(connection, "SourceLookupSameType");

            source4Columns.InsertTestData();
            FourColumnsTableFixture dest4Columns   = new FourColumnsTableFixture(connection, "DestinationLookupSameType");
            FourColumnsTableFixture lookup4Columns = new FourColumnsTableFixture(connection, "LookupSameType");

            lookup4Columns.InsertTestData();

            DbSource <MyDataRow>   source       = new DbSource <MyDataRow>("SourceLookupSameType", connection);
            DbSource <MyLookupRow> lookupSource = new DbSource <MyLookupRow>("LookupSameType", connection);

            var lookup = new ETLBox.DataFlow.LookupTransformation <MyDataRow, MyLookupRow>();

            lookup.TransformationFunc =
                row =>
            {
                row.Col1 = row.Col1;
                row.Col2 = row.Col2;
                row.Col3 = lookup.LookupData.Where(ld => ld.Key == row.Col1).Select(ld => ld.LookupValue1).FirstOrDefault();
                row.Col4 = lookup.LookupData.Where(ld => ld.Key == row.Col1).Select(ld => ld.LookupValue2).FirstOrDefault();
                return(row);
            };
            lookup.Source = lookupSource;
            DbDestination <MyDataRow> dest = new DbDestination <MyDataRow>("DestinationLookupSameType", connection);

            source.LinkTo(lookup);
            lookup.LinkTo(dest);
            source.Execute();
            dest.Wait();

            //Assert
            dest4Columns.AssertTestData();
        }