예제 #1
0
        public void Test___Method_Stop___Status_Created()
        {
            var value = new AnyVariable <string>();
            var to    = new AnyVariable <string>();

            var testee = new ForEachActivity()
            {
                Enumerable = new AnyVariable <IEnumerable>()
                {
                    Value = new List <object>()
                    {
                        "foo",
                        "bar",
                        "baz"
                    }
                },
                Value    = value,
                Activity = new AssignActivity()
                {
                    To    = to,
                    Value = value
                }
            };

            testee.Stop();

            Assert.AreEqual(ActivityStatus.Stopped, testee.Status);
            Assert.IsNull(to.GetValueAsObject());
        }
예제 #2
0
        public async Task Test___Method_Start___Status_Created___Empty()
        {
            var value = new AnyVariable <object>();
            var to    = new AnyVariable <int>()
            {
                Value = 0
            };

            var testee = new ForEachActivity()
            {
                Enumerable = new AnyVariable <IEnumerable>()
                {
                    Value = new List <object>()
                },
                Value    = value,
                Activity = new AssignActivity()
                {
                    To    = to,
                    Value = value
                }
            };

            await testee.Start();

            Assert.AreEqual(ActivityStatus.Completed, testee.Status);
            Assert.AreEqual(0, to.GetValueAsObject());
        }
예제 #3
0
        public async Task Test___Method_Start___Status_Created___not_Empty()
        {
            var value = new AnyVariable <string>();
            var to    = new AnyVariable <string>();

            var testee = new ForEachActivity()
            {
                Enumerable = new AnyVariable <IEnumerable>()
                {
                    Value = new List <string>()
                    {
                        "foo",
                        "bar",
                        "baz"
                    }
                },
                Value    = value,
                Activity = new AssignActivity()
                {
                    To    = to,
                    Value = value
                }
            };

            await testee.Start();

            Assert.AreEqual(ActivityStatus.Completed, testee.Status);
            Assert.AreEqual("baz", to.GetValueAsObject());
        }
예제 #4
0
        public async Task Test___Method_Stop___Status_Executing()
        {
            var value = new AnyVariable <int>();

            var testee = new ForEachActivity()
            {
                Enumerable = new AnyVariable <IEnumerable>()
                {
                    Value = new List <object>()
                    {
                        2000,
                        2000,
                        2000
                    }
                },
                Value    = value,
                Activity = new DelayActivity()
                {
                    Duration = value
                }
            };

            var task = testee.Start();

            Assert.AreEqual(ActivityStatus.Executing, testee.Status);

            Thread.Sleep(3000);

            testee.Stop();

            await task;

            Assert.AreEqual(ActivityStatus.Stopped, testee.Status);
        }
예제 #5
0
        public override Activity ToSdkObject()
        {
            var activity = new ForEachActivity(this.Name, this.Items, this.Activities?.Select(element => element?.ToSdkObject()));

            activity.IsSequential = this.IsSequential;
            activity.BatchCount   = this.BatchCount;
            SetProperties(activity);
            return(activity);
        }
예제 #6
0
        private PipelineResource GetPipelineResource(string description)
        {
            PipelineResource resource = new PipelineResource
            {
                Description = description,
                Parameters  = new Dictionary <string, ParameterSpecification>
                {
                    { "OutputBlobNameList", new ParameterSpecification {
                          Type = ParameterType.Array
                      } }
                },
                Variables = new Dictionary <string, VariableSpecification>
                {
                    { "TestVariableArray", new VariableSpecification {
                          Type = VariableType.Array
                      } }
                },
                Activities = new List <Activity>()
            };
            CopyActivity copyActivity = new CopyActivity
            {
                Name = "ExampleCopyActivity",
                DataIntegrationUnits = 32,
                Inputs = new List <DatasetReference>
                {
                    new DatasetReference
                    {
                        ReferenceName = datasetName,
                        Parameters    = new Dictionary <string, object>()
                        {
                            { "MyFolderPath", secrets.BlobContainerName },
                            { "MyFileName", "entitylogs.csv" }
                        }
                    }
                },
                Outputs = new List <DatasetReference>
                {
                    new DatasetReference
                    {
                        ReferenceName = datasetName,
                        Parameters    = new Dictionary <string, object>()
                        {
                            { "MyFolderPath", secrets.BlobContainerName },
                            { "MyFileName", new Expression("@item()") }
                        }
                    }
                },
                Source = new BlobSource
                {
                },
                Sink = new BlobSink
                {
                }
            };
            ForEachActivity forEachActivity = new ForEachActivity
            {
                Name         = "ExampleForeachActivity",
                IsSequential = true,
                Items        = new Expression("@pipeline().parameters.OutputBlobNameList"),
                Activities   = new List <Activity>()
                {
                    copyActivity
                }
            };

            resource.Activities.Add(forEachActivity);
            return(resource);
        }
예제 #7
0
        private static void crearPipesDinamismoETL(DataFactoryManagementClient client)
        {
            // Generador de Scripts para claim center
            string[]         tablas = new[] { "cc_activity", "cc_check", "cc_checkpayee", "cc_claim", "cc_contact", "cc_coverage", "cc_exchangerate", "cc_exposure", "cc_exposurerpt", "cc_group", "cc_history", "cc_litstatustypeline", "cc_matter", "cc_policy", "cc_riskunit", "cc_transaction", "cc_transactionlineitem", "cc_transactionset", "cc_vehicle", "cctl_approvalstatus", "cctl_costtype", "cctl_coveragesubtype", "cctl_exposurestate", "cctl_exposuretype", "cctl_ext_casequestioned", "cctl_ext_courtvenue", "cctl_ext_damagetype", "cctl_ext_exposurestage", "cctl_historytype", "cctl_losscause", "cctl_matterstatus", "cctl_mattertype", "cctl_transactionstatus" };
            PipelineResource pipe   = new PipelineResource(name: "PipeForEachClaim");
            List <Activity>  la     = new List <Activity>();
            //Foreach activity
            ForEachActivity fea = new ForEachActivity();

            fea.IsSequential = false;
            fea.Name         = "ForEachActiv";
            Expression ex = new Expression("@pipeline().parameters.TablasACopiar");

            fea.Items = ex;

            //Copy activity
            List <Activity> la1 = new List <Activity>();
            CopyActivity    ca  = new CopyActivity();

            ca.EnableStaging          = false;
            ca.CloudDataMovementUnits = 5;
            ca.Name = "CopyTabla";

            List <DatasetReference> ldr = new List <DatasetReference>();

            ldr.Add(new DatasetReference("Dataset_Dinamismo_Claim"));
            ca.Inputs = ldr;

            List <DatasetReference> ldo = new List <DatasetReference>();

            ldo.Add(new DatasetReference("Dataset_WHDinamismo_Claim"));
            ca.Outputs = ldo;

            //string consulta = "declare @Tabla varchar(1000);select @Tabla = '@{item()}';declare @vsSQL varchar(8000);declare @vsTableName varchar(50);select @vsTableName = @Tabla;select @vsSQL = '; IF EXISTS (SELECT * FROM '+ @Tabla + ') '+' DROP TABLE '+ @Tabla  + ';'+ ' CREATE TABLE ' + @vsTableName + char(10) + '(' + char(10);select @vsSQL = @vsSQL + ' ' + sc.Name + ' ' +st.Name +case when st.Name in ('varchar','varchar','char','nchar') then '(' + cast(sc.Length as varchar) + ') ' else ' ' end +case when sc.IsNullable = 1 then 'NULL' else 'NOT NULL' end + ',' + char(10) from sysobjects so join syscolumns sc on sc.id = so.id join systypes st on st.xusertype = sc.xusertype where so.name = @vsTableName order by sc.ColID; select substring(@vsSQL,1,len(@vsSQL) - 2) + char(10) + ') ' as QueryCreacion";
            //string consulta = "declare @Tabla as varchar(1000);select @Tabla = '@{item()}';declare @vsSQL varchar(8000);declare @vsTableName varchar(50);select @vsTableName = @Tabla;select @vsSQL = '; IF EXISTS (SELECT * FROM '+ @Tabla + ') '+' DROP TABLE '+ @Tabla  + ';'+ ' CREATE TABLE ' + @vsTableName + char(10) + '(' + char(10);select @vsSQL = @vsSQL + ' ' + column_name + ' ' +data_type +case when data_type in ('varchar','varchar','char','nchar') then '(' + cast(character_maximum_length as varchar) + ') ' else ' ' end +case when is_nullable = 'YES' then 'NULL' else 'NOT NULL' end + ',' + char(10) from information_schema.columns where table_name = @vsTableName order by ordinal_position; if len(@vsSQL) < 4000 select substring(@vsSQL,1,len(@vsSQL) - 2) + char(10) + ') ' as QueryCreacion1, null as QueryCreacion2;else select substring(@vsSQL,1,3999) as QueryCreacion1, SUBSTRING(@vsSQL, 4000, len(@vsSQL) - 2) as QueryCreacion2;";
            string consulta = "declare @Tabla as varchar(1000);select @Tabla = '@{item()}';declare @Schema as varchar(1000);select @Schema = 'landing';declare @vsSQL nvarchar(MAX);declare @vsTableName varchar(50);select @vsTableName = @Tabla;select @vsSQL = '; IF EXISTS (SELECT * FROM information_schema.tables where table_name = '''+ @Tabla + ''' and table_schema = '''+ @Schema +''') '+' DROP TABLE '+ @Tabla  + ';'+ ' CREATE TABLE ' + @vsTableName + char(10) + '(' + char(10);select @vsSQL = @vsSQL + ' ' + column_name + ' ' +data_type +case when data_type in ('varchar','varchar','char','nchar') then '(' + cast(character_maximum_length as varchar) + ') ' else ' ' end +case when is_nullable = 'YES' then 'NULL' else 'NOT NULL' end + ',' + char(10) from information_schema.columns where table_name = @vsTableName order by ordinal_position; set @vsSQL = LEFT(@vsSQL, len(@vsSQL) - 2);if len(@vsSQL) < 3999 select replace(replace(replace(substring(@vsSQL,1,len(@vsSQL)) + char(10) + ') ','-1', '8000'), 'geography', 'varchar(8000)'), 'nvarchar', 'varchar') as QueryCreacion1, null as QueryCreacion2;else select replace(replace(replace(LEFT(@vsSQL,3800),'-1', '8000'), 'geography', 'varchar(8000)'), 'nvarchar', 'varchar') as QueryCreacion1, replace(replace(replace(RIGHT(@vsSQL, Len(@vsSQL) - 3800) + ')','-1', '8000'), 'geography', 'varchar(8000)'), 'nvarchar', 'varchar') as QueryCreacion2;";

            ca.Source = new SqlSource(null, 3, null, consulta, null, null);
            ca.Sink   = new SqlSink();


            la1.Add(ca);

            fea.Activities = la1;

            la.Add(fea);
            pipe.Activities = la;
            IDictionary <string, ParameterSpecification> tablasACopiar = new Dictionary <string, ParameterSpecification>();

            tablasACopiar.Add("tablasACopiar", new ParameterSpecification("Array", tablas));
            pipe.Parameters = tablasACopiar;

            client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "PipeForEachClaim", pipe);

            Console.WriteLine("Pipe creado, desea correrlo ahora? (s/n)");
            if (Console.ReadLine() == "s")
            {
                client.Pipelines.CreateRun(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "PipeForEachClaim");
                Console.WriteLine("Run creado! Seguimos creando los de Datastaging.");
            }

            crearPipesDinamismoDataStaging(client);
        }