如何在 Azure 数据工厂的 .NET SDK 中自动创建数据集?
How do you automate the creation of a dataset within the .NET SDK for Azure Data Factory?
我正在使用 Microsoft Azure Data Factory .NET SDK 来自动创建大量 table 的数据集。
我的 .NET 控制台应用程序中的一种方法使我能够根据指定的 table 名称创建输入和输出数据集:
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 服务器或目标 SQL 数据仓库上的存储过程完成的。存储过程指定 table 名称,然后查看 INFORMATION_SCHEMA
以便为每个 ADF 数据集生成有效的列和类型。然后我们手动将结果复制到 portal.azure.com.
我们有 600 多个数据集,因此需要利用 .NET SDK 自动复制到 ADF。
如何在考虑到每个数据集的结构(即列和类型)不同的情况下自动创建数据集?
我能够完成此任务的唯一方法是编写存储过程以在源 和 目标上生成列名和类型。这样的存储过程应该调用 INFORMATION_SCHEMA
和 INFORMATION_SCHEMA.COLUMNS
以便为输入的 table 生成每个列和类型。
一旦该过程充分输出两列(名称、类型),以编程方式调用该过程并保存如下:
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();
}
}
然后,在创建 input/output 数据集后,只需按如下方式使用变量 InputParams
:
new DatasetCreateOrUpdateParameters()
{
Dataset = new Dataset()
{
Properties = new DatasetProperties()
{
Structure = InputParams
//Etc.
我正在使用 Microsoft Azure Data Factory .NET SDK 来自动创建大量 table 的数据集。
我的 .NET 控制台应用程序中的一种方法使我能够根据指定的 table 名称创建输入和输出数据集:
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 服务器或目标 SQL 数据仓库上的存储过程完成的。存储过程指定 table 名称,然后查看 INFORMATION_SCHEMA
以便为每个 ADF 数据集生成有效的列和类型。然后我们手动将结果复制到 portal.azure.com.
我们有 600 多个数据集,因此需要利用 .NET SDK 自动复制到 ADF。
如何在考虑到每个数据集的结构(即列和类型)不同的情况下自动创建数据集?
我能够完成此任务的唯一方法是编写存储过程以在源 和 目标上生成列名和类型。这样的存储过程应该调用 INFORMATION_SCHEMA
和 INFORMATION_SCHEMA.COLUMNS
以便为输入的 table 生成每个列和类型。
一旦该过程充分输出两列(名称、类型),以编程方式调用该过程并保存如下:
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();
}
}
然后,在创建 input/output 数据集后,只需按如下方式使用变量 InputParams
:
new DatasetCreateOrUpdateParameters()
{
Dataset = new Dataset()
{
Properties = new DatasetProperties()
{
Structure = InputParams
//Etc.