【问题标题】:How do you automate the creation of a dataset within the .NET SDK for Azure Data Factory?如何在 .NET SDK for Azure Data Factory 中自动创建数据集?
【发布时间】:2016-09-13 05:04:51
【问题描述】:

我正在使用Microsoft Azure Data Factory .NET SDK 来自动为大量表创建数据集。

我的 .NET 控制台应用程序中的一个方法使我能够根据指定的表名创建输入和输出数据集:

createInputDataSet(string table_Name, DataFactoryManagementClient client) {
    client.Datasets.CreateOrUpdate(resourceGroupName, dataFactoryName,
        new DatasetCreateOrUpdateParameters()
        {
            Dataset = new Dataset()
            {
                Properties = new DatasetProperties()
                {
                    Structure = new List<DataElement>()
                    {
                        //TODO: Autogenerate columns and types
                        new DataElement() {Name = "name", Type = "String" },
                        new DataElement() {Name = "date", Type = "Datetime" }
                    }
            }...

目前,数据集的创建是通过源 SQL Server 或目标 SQL 数据仓库上的存储过程来完成的。存储过程指定一个表名,然后查看INFORMATION_SCHEMA,以便为每个 ADF 数据集生成有效的列和类型。然后我们手动将结果复制到 portal.azure.com。

我们有超过 600 个数据集,因此需要利用 .NET SDK 自动复制到 ADF。

如何自动创建数据集,同时考虑到每个数据集的结构(即列和类型)会有所不同?

【问题讨论】:

    标签: c# .net azure-data-factory


    【解决方案1】:

    我能够做到这一点的唯一方法是编写一个存储过程来在源目标上生成列名和类型。此类存储过程应调用INFORMATION_SCHEMAINFORMATION_SCHEMA.COLUMNS 以便为输入的表生成每一列和类型。

    一旦过程充分输出两列(名称、类型),就以编程方式调用过程并保存如下:

    List<DataElement> InputParams = new List<DataElement>();
    
    SqlConnection connect = new SqlConnection(<connection_string>);
    SqlCommand cmd = new SqlCommand("pUtil_GenDFAutomate", connect);
    
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameter("@TableName", <table_name>));
    using (var reader = cmd.ExecuteReader())
    {
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                var name = reader.GetString(0);
                var type = reader.GetString(1);
    
                InputParams.Add(new DataElement
                {
                    Name = name,
                    Type = type
                });
            }
            reader.Close();
        }
    }
    

    然后,在创建输入/输出数据集后,只需使用变量 InputParams,如下所示:

    new DatasetCreateOrUpdateParameters()
    {
        Dataset = new Dataset()
        {
            Properties = new DatasetProperties()
            {
                Structure = InputParams 
    //Etc.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      相关资源
      最近更新 更多