Exemple #1
0
        //INIT PIPELINE ACTIVITIES

        /**
         * not used currently
         */
        public Activity create_Activity_Init_1()
        {
            Console.WriteLine("Creating " + DualLoadConfig.ACTIVITY_INIT_1);

            Activity activity = new Activity();

            List <ActivityInput> activityInputs = new List <ActivityInput>();
            ActivityInput        activityInput  = new ActivityInput();

            activityInput.Name = DualLoadConfig.DATASET_ETL_Control;
            activityInputs.Add(activityInput);
            SqlSource source = new SqlSource();

            source.SqlReaderQuery = DualLoadConfig.QUERY_INIT_1;

            List <ActivityOutput> activityOutputs = new List <ActivityOutput>();
            ActivityOutput        activityOutput  = new ActivityOutput();

            activityOutput.Name = DualLoadConfig.DATASET_LOAD_1_SQLDUMMY;
            activityOutputs.Add(activityOutput);
            SqlSink sink = new SqlSink();

            CopyActivity copyActivity = new CopyActivity();

            copyActivity.Source = source;
            copyActivity.Sink   = sink;

            activity.Name           = DualLoadConfig.ACTIVITY_INIT_1;
            activity.Inputs         = activityInputs;
            activity.Outputs        = activityOutputs;
            activity.TypeProperties = copyActivity;

            return(activity);
        }
Exemple #2
0
        private static void crearPipesSubidaNormal(DataFactoryManagementClient client)
        {
            var nombreTablas    = DatosGrales.traerTablas(true);
            var nombreSinSchema = DatosGrales.traerTablas(false);

            List <Activity>         la;
            CopyActivity            ca;
            List <DatasetReference> inp;
            DatasetReference        dr;
            List <DatasetReference> outp;
            DatasetReference        drO;
            PipelineResource        pipe;
            string nombreTablaParaConsulta;
            string consulta;
            string nombreBD = DatosGrales.nombreBD;

            for (int i = 0; i < nombreTablas.Length; i++)
            {
                if (esTablaEspecial(nombreTablas[i]))
                {
                    //no creo nada porque es especial
                }
                else
                {
                    nombreTablaParaConsulta = nombreTablas[i].Replace('-', '.');
                    consulta  = DatosGrales.queryMagica(nombreTablaParaConsulta, 10000);
                    la        = new List <Activity>();
                    ca        = new CopyActivity();
                    ca.Name   = "CopyPipeline-Sql-Lake-" + nombreTablas[i];
                    ca.Source = new SqlSource(null, 3, null, consulta);
                    ca.Sink   = new SqlSink();

                    inp = new List <DatasetReference>();
                    dr  = new DatasetReference("Dataset_" + nombreBD + "_" + nombreTablas[i]);

                    inp.Add(dr);
                    ca.Inputs = inp;

                    outp = new List <DatasetReference>();
                    drO  = new DatasetReference("Dataset_" + nombreBD + "_DataLakeStore_" + nombreSinSchema[i]);
                    outp.Add(drO);
                    ca.Outputs = outp;


                    la.Add(ca);


                    pipe            = new PipelineResource();
                    pipe.Activities = la;

                    client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "Pipeline-Copy-" + nombreBD + "-" + nombreTablas[i], pipe);

                    Console.Write((i + 1) + ". Pipeline-Copy-" + nombreBD + "-" + nombreTablas[i] + " creado.\n");
                }
            }
        }
Exemple #3
0
        //ARCHIVE PIPELINE ACTIVITIES

        /**
         * CopyActivity from Blob source to Blob sink from ToBeProcessed Folder to Archived Folder
         */
        public Activity create_Activity_Archive_2(String toBeProcessedCompleteFolderDataset, String archiveFolderDataset, int i)
        {
            Console.WriteLine("Creating " + DualLoadConfig.ACTIVITY_ARCHIVE_2 + "_" + i);

            Activity activity = new Activity();

            List <ActivityInput> activityInputs = new List <ActivityInput>();
            ActivityInput        activityInput  = new ActivityInput();

            activityInput.Name = toBeProcessedCompleteFolderDataset;
            activityInputs.Add(activityInput);

            List <ActivityOutput> activityOutputs = new List <ActivityOutput>();
            ActivityOutput        activityOutput  = new ActivityOutput();

            activityOutput.Name = archiveFolderDataset + "_" + i;
            activityOutputs.Add(activityOutput);

            CopyActivity copyActivity = new CopyActivity();
            BlobSource   blobSource   = new BlobSource();

            copyActivity.Source = blobSource;
            //blobSource.Recursive = true;

            BlobSink sink = new BlobSink();

            sink.CopyBehavior = "PreserveHierarchy";

            //sink.WriteBatchSize = 10000;
            //sink.WriteBatchTimeout = TimeSpan.FromMinutes(10);
            copyActivity.Sink = sink;

            //Scheduler scheduler = new Scheduler();
            //scheduler.Frequency = SchedulePeriod.Hour;
            //scheduler.Interval = 1;


            activity.Name           = DualLoadConfig.ACTIVITY_ARCHIVE_2 + "_" + i;
            activity.Inputs         = activityInputs;
            activity.Outputs        = activityOutputs;
            activity.TypeProperties = copyActivity;
            //activity.Scheduler = scheduler;

            return(activity);
        }
        public override Activity ToSdkObject()
        {
            var activity = new CopyActivity(this.Name, this.Source?.ToSdkObject(), this.Sink?.ToSdkObject());

            this.Inputs?.ForEach(item => activity.Inputs.Add(item));
            this.Outputs?.ForEach(item => activity.Outputs.Add(item));
            activity.Translator                      = this.Translator;
            activity.EnableStaging                   = this.EnableStaging;
            activity.StagingSettings                 = this.StagingSettings?.ToSdkObject();
            activity.ParallelCopies                  = this.ParallelCopies;
            activity.DataIntegrationUnits            = this.DataIntegrationUnits;
            activity.EnableSkipIncompatibleRow       = this.EnableSkipIncompatibleRow;
            activity.RedirectIncompatibleRowSettings = this.RedirectIncompatibleRowSettings?.ToSdkObject();
            this.PreserveRules?.ForEach(item => activity.PreserveRules.Add(item));
            this.Preserve?.ForEach(item => activity.Preserve.Add(item));
            activity.LinkedServiceName = this.LinkedServiceName;
            activity.Policy            = this.Policy?.ToSdkObject();
            SetProperties(activity);
            return(activity);
        }
Exemple #5
0
        private static void corregirAddressSinCompresion(DataFactoryManagementClient client)
        {
            string                  nombreTabla           = "dbo-cc_address";
            string                  nombreTablaSinEsquema = "cc_address";
            List <Activity>         la;
            CopyActivity            ca;
            List <DatasetReference> inp;
            DatasetReference        dr;
            List <DatasetReference> outp;
            DatasetReference        drO;
            PipelineResource        pipe;
            string                  nuevaConsulta = "select top 1000 [LoadCommandID], [PublicID], [BatchGeocode], [CreateTime], [AddressLine1], [AddressLine2], [County], [AddressLine3], cast([SpatialPoint] as nvarchar(MAX)), [CityKanji], [AddressLine2Kanji], [Admin], [State], [AddressBookUID], [UpdateTime], [Country], [ID], [Ext_StreetType], [ExternalLinkID], [CreateUserID], [ValidUntil], [ArchivePartition], [BeanVersion], [CityDenorm], [Retired], [Ext_StreetNumber], [City], [AddressType], [AddressLine1Kanji], [UpdateUserID], [CEDEXBureau], [GeocodeStatus], [CEDEX], [PostalCodeDenorm], [PostalCode], [Subtype], [Description] from cc_address";

            la        = new List <Activity>();
            ca        = new CopyActivity();
            ca.Name   = "CopyPipeline-Sql-Lake-" + nombreTabla;
            ca.Source = new SqlSource(null, 3, null, nuevaConsulta);
            ca.Sink   = new SqlSink();


            inp = new List <DatasetReference>();
            dr  = new DatasetReference("Dataset_Claim_" + nombreTabla);

            inp.Add(dr);
            ca.Inputs = inp;

            outp = new List <DatasetReference>();
            drO  = new DatasetReference("Dataset_Claim_DataLakeStore_" + nombreTablaSinEsquema);
            outp.Add(drO);
            ca.Outputs = outp;


            la.Add(ca);


            pipe            = new PipelineResource();
            pipe.Activities = la;

            client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "Pipeline-Copy-Claim-" + nombreTabla, pipe);
            Console.Write("Pipeline-Copy-Claim-" + nombreTabla + " modificado.\n");
        }
Exemple #6
0
        private static void corregirUserSinCompresion(DataFactoryManagementClient client)
        {
            string                  nombreTabla           = "dbo-cc_user";
            string                  nombreTablaSinEsquema = "cc_user";
            List <Activity>         la;
            CopyActivity            ca;
            List <DatasetReference> inp;
            DatasetReference        dr;
            List <DatasetReference> outp;
            DatasetReference        drO;
            PipelineResource        pipe;
            string                  nuevaConsulta = "select top 1000 [LoadCommandID], [OffsetStatsUpdateTime], [PublicID], [CreateTime], [UserSettingsID], cast([SpatialPointDenorm] as nvarchar(MAX)), [SessionTimeoutSecs], [OrganizationID], [VacationStatus], [Department], [UpdateTime], [ExternalUser], [Language], [ExperienceLevel], [Locale], [ID], [LossType], [AuthorityProfileID], [CreateUserID], [BeanVersion], [NewlyAssignedActivities], [Retired], [DefaultPhoneCountry], [ValidationLevel], [PolicyType], [UpdateUserID], [QuickClaim], [CredentialID], [SystemUserType], [DefaultCountry], [TimeZone], [ContactID], [JobTitle] from cc_user";

            la        = new List <Activity>();
            ca        = new CopyActivity();
            ca.Name   = "CopyPipeline-Sql-Lake-" + nombreTabla;
            ca.Source = new SqlSource(null, 3, null, nuevaConsulta);
            ca.Sink   = new SqlSink();


            inp = new List <DatasetReference>();
            dr  = new DatasetReference("Dataset_Claim_" + nombreTabla);

            inp.Add(dr);
            ca.Inputs = inp;

            outp = new List <DatasetReference>();
            drO  = new DatasetReference("Dataset_Claim_DataLakeStore_" + nombreTablaSinEsquema);
            outp.Add(drO);
            ca.Outputs = outp;


            la.Add(ca);


            pipe            = new PipelineResource();
            pipe.Activities = la;

            client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "Pipeline-Copy-Claim-" + nombreTabla, pipe);
            Console.Write("Pipeline-Copy-Claim-" + nombreTabla + " modificado.\n");
        }
        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);
        }
Exemple #8
0
        static void Main(string[] args)
        {
            //Authentification auprès d'Azure avec l'application svc_adf
            AuthenticationContext       context   = new AuthenticationContext("https://login.windows.net/" + _repertoireId);
            ClientCredential            cc        = new ClientCredential(_applicationId, _applicationKey);
            AuthenticationResult        result    = context.AcquireTokenAsync("https://management.azure.com/", cc).Result;
            ServiceClientCredentials    cred      = new TokenCredentials(result.AccessToken);
            DataFactoryManagementClient ADFclient = new DataFactoryManagementClient(cred)
            {
                SubscriptionId = _abonnementId
            };

            //Création d'une Azure Data Factory

            Factory dataFactory = new Factory
            {
                Location = _region,
                Identity = new FactoryIdentity()
            };

            ADFclient.Factories.CreateOrUpdate(_ressourceGroup, _dataFactoryName, dataFactory);
            Console.WriteLine(SafeJsonConvert.SerializeObject(dataFactory, ADFclient.SerializationSettings));
            var toto = ADFclient.Factories.Get(_ressourceGroup, _dataFactoryName).ProvisioningState;

            while (ADFclient.Factories.Get(_ressourceGroup, _dataFactoryName).ProvisioningState == "PendingCreation")
            {
                System.Threading.Thread.Sleep(1000);
                Console.WriteLine("*");
            }

            ////Création d'un Integration Runtime Auto-Hébergé

            //IntegrationRuntimeResource integrationRuntimeResource = new IntegrationRuntimeResource(
            //new SelfHostedIntegrationRuntime
            //{
            //    Description = "L'Integration Runtime du projet ..."
            //}
            //);
            //ADFclient.IntegrationRuntimes.CreateOrUpdate(_ressourceGroup, _dataFactoryName, _IntegrationRuntimeName, integrationRuntimeResource);
            //Console.WriteLine(SafeJsonConvert.SerializeObject(integrationRuntimeResource, ADFclient.SerializationSettings));
            //Console.WriteLine("Authkey : " + ADFclient.IntegrationRuntimes.ListAuthKeys(_ressourceGroup, _dataFactoryName, _IntegrationRuntimeName).AuthKey1);

            //Création service lié File System on premise

            IntegrationRuntimeReference integrationRuntimeReference = new IntegrationRuntimeReference(_IntegrationRuntimeName);
            SecureString          secureString        = new SecureString("MonPassword");
            LinkedServiceResource FS_PartageOnPremise = new LinkedServiceResource(
                new FileServerLinkedService
            {
                Description = "Service lié référençant un espace partagé dans le réseau privé de l'entreprise",
                ConnectVia  = integrationRuntimeReference,
                Host        = @"\\IRAutoHeberge\Dépôt",
                UserId      = "chsauget",
                Password    = secureString
            }
                );

            ADFclient.LinkedServices.CreateOrUpdate(_ressourceGroup, _dataFactoryName, _FS_PartageOnPremiseName, FS_PartageOnPremise);
            Console.WriteLine(SafeJsonConvert.SerializeObject(FS_PartageOnPremise, ADFclient.SerializationSettings));

            //Création service lié Azure SQLDB

            SecureString SQLsecureString = new SecureString("integrated security=False;encrypt=True;connection timeout=30;data source=adflivre.database.windows.net;initial catalog=advwrks;user id=chsauget;Password=toto");

            LinkedServiceResource SQDB_AdventureWorks = new LinkedServiceResource(
                new AzureSqlDatabaseLinkedService
            {
                Description      = "Service lié référençant un espace partagé dans le réseau privé de l'entreprise",
                ConnectionString = SQLsecureString,
            }
                );

            ADFclient.LinkedServices.CreateOrUpdate(_ressourceGroup, _dataFactoryName, _SQDB_AdventureWorksName, SQDB_AdventureWorks);
            Console.WriteLine(SafeJsonConvert.SerializeObject(SQDB_AdventureWorks, ADFclient.SerializationSettings));

            //Création jeu de données FS_Customer

            DatasetResource FS_Customer = new DatasetResource(
                new FileShareDataset
            {
                LinkedServiceName = new LinkedServiceReference
                {
                    ReferenceName = _FS_PartageOnPremiseName
                }
                , FolderPath = "AdventureWorks CSV"
                , FileName   = "Customer.csv"
                , Format     = new TextFormat
                {
                    ColumnDelimiter  = "\t",
                    RowDelimiter     = "\n",
                    FirstRowAsHeader = false
                }
                , Structure = new List <DatasetDataElement>
                {
                    new DatasetDataElement
                    {
                        Name = "CustomerID",
                        Type = "Int32"
                    },
                    new DatasetDataElement
                    {
                        Name = "PersonID",
                        Type = "Int32"
                    },
                    new DatasetDataElement
                    {
                        Name = "StoreID",
                        Type = "Int32"
                    },
                    new DatasetDataElement
                    {
                        Name = "TerritoryID",
                        Type = "Int32"
                    },
                    new DatasetDataElement
                    {
                        Name = "AccountNumber",
                        Type = "String"
                    },
                    new DatasetDataElement
                    {
                        Name = "rowguid",
                        Type = "String"
                    },
                    new DatasetDataElement
                    {
                        Name = "ModifiedDate",
                        Type = "DateTime"
                    }
                }
            }
                , name: _FS_CustomerName
                );

            ADFclient.Datasets.CreateOrUpdate(_ressourceGroup, _dataFactoryName, _FS_CustomerName, FS_Customer);
            Console.WriteLine(SafeJsonConvert.SerializeObject(FS_Customer, ADFclient.SerializationSettings));

            //Création jeu de données SQDB_Col_Customer

            DatasetResource SQDB_Col_Customer = new DatasetResource(
                new AzureSqlTableDataset
            {
                LinkedServiceName = new LinkedServiceReference
                {
                    ReferenceName = _SQDB_AdventureWorksName
                },
                TableName = "col.Customer"
            }
                , name: _SQDB_Col_CustomerName
                );

            ADFclient.Datasets.CreateOrUpdate(_ressourceGroup, _dataFactoryName, _SQDB_AdventureWorksName, SQDB_Col_Customer);
            Console.WriteLine(SafeJsonConvert.SerializeObject(SQDB_Col_Customer, ADFclient.SerializationSettings));

            //Création de l'activité de copie du fichier Customer
            CopyActivity CustomerCopy = new CopyActivity
            {
                Name = "Copy - Customer"
                ,
                Inputs = new List <DatasetReference> {
                    new DatasetReference()
                    {
                        ReferenceName = _FS_CustomerName
                    }
                }
                ,
                Outputs = new List <DatasetReference> {
                    new DatasetReference()
                    {
                        ReferenceName = _SQDB_Col_CustomerName
                    }
                }
                ,
                Source = new FileSystemSource
                {
                }
                ,
                Sink = new AzureTableSink
                {
                }
            };
            //Création de l'activité de copie du fichier Customer
            PipelineResource PipelineCustomer = new PipelineResource
            {
                Activities = new List <Activity> {
                    CustomerCopy
                }
                , Folder = new PipelineFolder {
                    Name = "AdventureWorks"
                }
            };

            ADFclient.Pipelines.CreateOrUpdate(_ressourceGroup, _dataFactoryName, "Col_Customer", PipelineCustomer);
            Console.WriteLine(SafeJsonConvert.SerializeObject(PipelineCustomer, ADFclient.SerializationSettings));

            //Demander une execution du pipeline
            CreateRunResponse runResponse = ADFclient.Pipelines.CreateRunWithHttpMessagesAsync(_ressourceGroup, _dataFactoryName, "Col_Customer").Result.Body;

            //Contrôler l'execution du pipeline
            PipelineRun run = ADFclient.PipelineRuns.Get(_ressourceGroup, _dataFactoryName, runResponse.RunId);

            while (run.Status == "InProgress")
            {
                run = ADFclient.PipelineRuns.Get(_ressourceGroup, _dataFactoryName, runResponse.RunId);
                Console.WriteLine("Status: " + run.Status);
            }

//Déclencheur Quotidien
            TriggerResource scheduleTrigger = new TriggerResource(
                new ScheduleTrigger
            {
                Pipelines = new List <TriggerPipelineReference> {
                    new TriggerPipelineReference {
                        PipelineReference = new PipelineReference("Col_Customer")
                    }
                }
                ,
                Recurrence = new ScheduleTriggerRecurrence
                {
                    StartTime = DateTime.Parse("2019-03-30T01:00:00Z")
                    ,
                    Frequency = "Day"
                    ,
                    Interval = 1
                }
            }
                , name: "Daily_01h_Schedule"
                );

            ADFclient.Triggers.CreateOrUpdate(_ressourceGroup, _dataFactoryName, "Daily_01h_Schedule", scheduleTrigger);
            Console.WriteLine(SafeJsonConvert.SerializeObject(scheduleTrigger, ADFclient.SerializationSettings));

            ADFclient.Triggers.BeginStart(_ressourceGroup, _dataFactoryName, "Daily_01h_Schedule");
        }
Exemple #9
0
        private static void corregirClaimSinCompresion(DataFactoryManagementClient client)
        {
            List <Activity>         la;
            CopyActivity            ca;
            List <DatasetReference> inp;
            DatasetReference        dr;
            List <DatasetReference> outp;
            DatasetReference        drO;
            PipelineResource        pipe;

            la        = new List <Activity>();
            ca        = new CopyActivity();
            ca.Name   = "CopyPipeline-Lake-DW-" + "cc_history";
            ca.Source = new AzureDataLakeStoreSource(recursive: false);
            var ware = new SqlDWSink();

            ware.AllowPolyBase  = true;
            ware.WriteBatchSize = 1000;

            var poly = new PolybaseSettings();

            poly.RejectValue       = 0;
            poly.RejectType        = "percentage";
            poly.RejectSampleValue = 0;
            poly.UseTypeDefault    = true;

            ware.PolyBaseSettings = poly;
            ca.Sink                      = ware;
            ca.EnableStaging             = true;
            ca.CloudDataMovementUnits    = 0;
            ca.EnableSkipIncompatibleRow = true;

            var stg = new StagingSettings();

            stg.Path = "adfstagingcopydata";
            LinkedServiceReference lsIntermedio = new LinkedServiceReference("temp_StagingStorage-c0p");

            stg.LinkedServiceName = lsIntermedio;
            ca.StagingSettings    = stg;

            var trans = new TabularTranslator();

            //trans.ColumnMappings = DatosGrales.traerCamposPolybase("cc_history");

            ca.Translator = trans;


            inp = new List <DatasetReference>();
            dr  = new DatasetReference("Dataset_Descompresion_Claim_DataLakeStore_cc_history");

            inp.Add(dr);
            ca.Inputs = inp;

            outp = new List <DatasetReference>();
            drO  = new DatasetReference("Dataset_Warehouse_landing-pruebaDFv2_cc_history");
            outp.Add(drO);
            ca.Outputs = outp;

            la.Add(ca);

            pipe            = new PipelineResource();
            pipe.Activities = la;

            client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "Pipeline-Copy-Lake-ADW-cc_history", pipe);
            Console.Write("Pipeline-Copy-Lake-ADW-cc_history creado.\n");
        }
Exemple #10
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);
        }
Exemple #11
0
        private static void corregirAddressConCompresion(DataFactoryManagementClient client)
        {
            string                    nombreTabla = "dbo-cc_address";
            string                    nombreTablaParaCompresion = "cc_address";
            List <Activity>           la;
            CopyActivity              ca;
            List <DatasetReference>   inp;
            DatasetReference          dr;
            List <DatasetReference>   outp;
            DatasetReference          drO;
            CopyActivity              ca2;
            List <ActivityDependency> dep;
            List <DatasetReference>   inp1;
            DatasetReference          dr1;
            List <DatasetReference>   outp1;
            DatasetReference          drO1;
            PipelineResource          pipe1;
            string                    consultaNueva = "select top 10000 [LoadCommandID], [PublicID], [BatchGeocode], [CreateTime], [AddressLine1], [AddressLine2], [County], [AddressLine3], cast([SpatialPoint] as nvarchar(MAX)), [CityKanji], [AddressLine2Kanji], [Admin], [State], [AddressBookUID], [UpdateTime], [Country], [ID], [Ext_StreetType], [ExternalLinkID], [CreateUserID], [ValidUntil], [ArchivePartition], [BeanVersion], [CityDenorm], [Retired], [Ext_StreetNumber], [City], [AddressType], [AddressLine1Kanji], [UpdateUserID], [CEDEXBureau], [GeocodeStatus], [CEDEX], [PostalCodeDenorm], [PostalCode], [Subtype], [Description] from cc_address";


            la        = new List <Activity>();
            ca        = new CopyActivity();
            ca.Name   = "CA-Compresion-" + nombreTabla;
            ca.Source = new SqlSource(null, 3, null, consultaNueva);
            ca.Sink   = new AzureDataLakeStoreSink();

            inp = new List <DatasetReference>();
            dr  = new DatasetReference("Dataset_Claim_" + nombreTabla);
            inp.Add(dr);
            ca.Inputs = inp;

            outp = new List <DatasetReference>();
            drO  = new DatasetReference("Dataset_Descompresion_Claim_DataLakeStore_" + nombreTablaParaCompresion);
            outp.Add(drO);
            ca.Outputs = outp;

            la.Add(ca);

            ca2 = new CopyActivity();

            ca2.Name   = "CA-Descompresion-" + nombreTabla;
            ca2.Source = new SqlSource();
            ca2.Sink   = new AzureDataLakeStoreSink();
            string[] condiciones = { "Succeeded" };
            dep = new List <ActivityDependency>();
            dep.Add(new ActivityDependency("CA-Compresion-" + nombreTabla, condiciones));
            ca2.DependsOn = dep;


            inp1 = new List <DatasetReference>();
            dr1  = new DatasetReference("Dataset_Descompresion_Claim_DataLakeStore_" + nombreTablaParaCompresion);
            inp1.Add(dr1);
            ca2.Inputs = inp1;

            outp1 = new List <DatasetReference>();
            drO1  = new DatasetReference("Dataset_Claim_DataLakeStore_" + nombreTablaParaCompresion);
            outp1.Add(drO1);
            ca2.Outputs = outp1;

            la.Add(ca2);

            pipe1 = new PipelineResource();

            pipe1.Activities = la;

            client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "Pipeline-Sql-DataLake-ConCompresion-Claim-" + nombreTabla, pipe1);
            Console.Write("Pipeline-Sql-DataLake-ConCompresion-Claim-" + nombreTabla + " modificado.\n");
        }
Exemple #12
0
        private static void crearPipesSubidaConCompresion(DataFactoryManagementClient client)
        {
            string nombreBD = DatosGrales.nombreBD;

            string[]                  nombreTablas = DatosGrales.traerTablas(true);
            string[]                  nombreTablasParaCompresion = DatosGrales.traerTablas(false);
            List <Activity>           la;
            CopyActivity              ca;
            List <DatasetReference>   inp;
            DatasetReference          dr;
            List <DatasetReference>   outp;
            DatasetReference          drO;
            CopyActivity              ca2;
            List <ActivityDependency> dep;
            string nombreTablaParaConsulta;
            List <DatasetReference> inp1;
            DatasetReference        dr1;
            List <DatasetReference> outp1;
            DatasetReference        drO1;
            PipelineResource        pipe1;
            string consulta;

            if (nombreBD == "ClaimCenter")
            {
                nombreBD = "Claim";
            }
            for (int i = 790; i < nombreTablas.Length; i++)
            {
                if (esTablaEspecial(nombreTablas[i]))
                {
                    //no creo nada porque tiene un trato especial
                }
                else
                {
                    nombreTablaParaConsulta = nombreTablas[i].Replace('-', '.');
                    consulta  = DatosGrales.queryMagica(nombreTablaParaConsulta, 0);
                    la        = new List <Activity>();
                    ca        = new CopyActivity();
                    ca.Name   = "CA-Compresion-" + nombreTablas[i];
                    ca.Source = new SqlSource(null, 3, null, consulta);
                    ca.Sink   = new AzureDataLakeStoreSink();

                    inp = new List <DatasetReference>();
                    //dr = new DatasetReference("Dataset_" + nombreBD + "_" + nombreTablas[i]);
                    dr = new DatasetReference("Dataset_ClaimCenter_" + nombreTablas[i]);
                    inp.Add(dr);
                    ca.Inputs = inp;

                    outp = new List <DatasetReference>();
                    drO  = new DatasetReference("Dataset_Descompresion_" + nombreBD + "_DataLakeStore_" + nombreTablasParaCompresion[i]);
                    outp.Add(drO);
                    ca.Outputs = outp;

                    la.Add(ca);

                    ca2 = new CopyActivity();

                    ca2.Name   = "CA-Descompresion-" + nombreTablas[i];
                    ca2.Source = new SqlSource();
                    ca2.Sink   = new AzureDataLakeStoreSink();
                    string[] condiciones = { "Succeeded" };
                    dep = new List <ActivityDependency>();
                    dep.Add(new ActivityDependency("CA-Compresion-" + nombreTablas[i], condiciones));
                    ca2.DependsOn = dep;


                    inp1 = new List <DatasetReference>();
                    dr1  = new DatasetReference("Dataset_Descompresion_" + nombreBD + "_DataLakeStore_" + nombreTablasParaCompresion[i]);
                    inp1.Add(dr1);
                    ca2.Inputs = inp1;

                    outp1 = new List <DatasetReference>();
                    drO1  = new DatasetReference("Dataset_" + nombreBD + "_DataLakeStore_" + nombreTablasParaCompresion[i]);
                    outp1.Add(drO1);
                    ca2.Outputs = outp1;

                    la.Add(ca2);

                    pipe1 = new PipelineResource();

                    pipe1.Activities = la;

                    client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "Pipeline-Sql-DataLake-ConCompresion-" + nombreBD + "-" + nombreTablas[i], pipe1);
                    Console.Write((i + 1) + ". Pipeline-Sql-DataLake-ConCompresion-" + nombreBD + "-" + nombreTablas[i] + " creado.\n");
                }
            }
        }
Exemple #13
0
        private static void crearPipesLakeaWarehouse(DataFactoryManagementClient client)
        {
            List <Activity>         la;
            CopyActivity            ca;
            List <DatasetReference> inp;
            DatasetReference        dr;
            List <DatasetReference> outp;
            DatasetReference        drO;
            PipelineResource        pipe;

            string[] tablasWarehouse = DatosGrales.tablasLakeaWarehouse;
            string   nombreTablaSinSchema;
            string   nombreSinPunto;

            for (int i = 0; i < tablasWarehouse.Length; i++)
            {
                nombreTablaSinSchema = tablasWarehouse[i].Split('.')[1];
                nombreSinPunto       = tablasWarehouse[i].Replace('.', '-');
                la      = new List <Activity>();
                ca      = new CopyActivity();
                ca.Name = "CopyPipeline-Lake-DW-" + nombreTablaSinSchema;
                var sor = new AzureDataLakeStoreSource(recursive: false);


                ca.Source = sor;

                var ware = new SqlDWSink();
                ware.AllowPolyBase  = true;
                ware.WriteBatchSize = 1000;



                var poly = new PolybaseSettings();
                poly.RejectValue = 1000;
                poly.RejectType  = "value";
                //poly.RejectSampleValue = 0;
                poly.UseTypeDefault = false;



                ware.PolyBaseSettings = poly;
                ware.PreCopyScript    = "truncate table landing." + nombreTablaSinSchema;
                ca.Sink                      = ware;
                ca.EnableStaging             = true;
                ca.CloudDataMovementUnits    = 0;
                ca.EnableSkipIncompatibleRow = true;

                var stg = new StagingSettings();
                stg.Path = "adfstagingcopydata";

                LinkedServiceReference lsIntermedio = new LinkedServiceReference("StagingStorageLakeToWarehouse");
                stg.LinkedServiceName = lsIntermedio;

                ca.StagingSettings = stg;

                var trans = new TabularTranslator();
                //trans.ColumnMappings = DatosGrales.traerCamposPolybase("cc_history");

                ca.Translator = trans;


                inp = new List <DatasetReference>();
                dr  = new DatasetReference("Dataset_Datastaging_DataLakeStore_" + nombreTablaSinSchema);

                inp.Add(dr);
                ca.Inputs = inp;

                outp = new List <DatasetReference>();
                drO  = new DatasetReference("Dataset_Warehouse_" + nombreSinPunto);
                outp.Add(drO);
                ca.Outputs = outp;

                la.Add(ca);

                pipe            = new PipelineResource();
                pipe.Activities = la;

                if (tablasWarehouse[i] == "landing.ccst_RAJ")
                {
                    client.Pipelines.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "Pipeline-Copy-Lake-ADW-" + nombreTablaSinSchema, pipe);
                    Console.Write((i + 1) + ". Pipeline-Copy-Lake-ADW-" + nombreTablaSinSchema + " creado.\n");
                }
            }
        }