Ниже приведён пример использования операции SetEtl для добавления в задачу ETL приёмника репозитория. В запросе передается моникёр открытого экземпляра задачи ETL и параметры создания нового объекта: тип создаваемого объекта и его специфические настройки. В ответе приходит информация о созданном объекте и список его полей, который заполняется на основании структуры таблицы, выступающей в качестве приёмника данных.
{
"SetEtl" :
{
"tEtl" :
{
"id" : "S1!M!S!L1"
},
"tArg" :
{
"pattern" :
{
"obInst" : "true",
"objects" : "Add",
"object" :
{
"settings" : "true",
"consumer" :
{
"props" : "true"
}
}
},
"meta" :
{
"objects" :
{
"its" :
{
"it" :
[
{
"k" : "0",
"id" : "REPO_CONSUMER",
"vis" : "true",
"type" : "PlainDataMetabaseConsumer",
"settings" :
{
"plainConsumer" :
{
"consumer" :
{
"props" :
{
"type" : "Mb",
"mb" :
{
"dataset" :
{
"i" : "BACKUP_DATA",
"n" : "Таблица",
"k" : "37886",
"c" : "769"
}
}
}
},
"fillFields" : "FromSource"
}
}
}
]
}
}
},
"metaGet" :
{
"obInst" : "true",
"objects" : "Get",
"objectsFilter" :
{
"range" :
{
"start" : "3",
"count" : "1"
}
},
"object" :
{
"settings" : "true",
"consumer" :
{
"fields" : "true"
},
"fields" : "Get"
}
}
}
}
}
{
"SetEtlResult" :
{
"id" :
{
"id" : "S1!M!S!L1"
},
"meta" :
{
"obInst" :
{
"obDesc" :
{
"@ds" : "",
"@isShortcut" : "0",
"@isLink" : "0",
"@ver" : "3",
"@hf" : "0",
"i" : "ETL_INDICATOR",
"n" : "Задача ETL для загрузки показателей",
"k" : "7012",
"c" : "4097",
"p" : "7011",
"h" : "0",
"hasPrv" : "0",
"ic" : "0",
"isPermanent" : "1",
"isTemp" : "0"
}
},
"dirty" : "1",
"objects" :
{
"its" :
{
"it" :
[
{
"k" : "3",
"id" : "REPO_CONSUMER",
"n" : "Приёмник репозитория1",
"vis" : "1",
"type" : "PlainDataMetabaseConsumer",
"obDesc" :
{
"@ds" : "",
"@isShortcut" : "0",
"@isLink" : "0",
"@ver" : "0",
"@hf" : "0",
"i" : "BACKUP_DATA",
"n" : "Таблица",
"k" : "37886",
"c" : "769",
"p" : "7011",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
},
"read" : "1",
"write" : "1",
"settings" :
{
"plainConsumer" :
{
"consumer" :
{
"fields" :
{
"its" :
{
"it" :
[
{
"k" : "1",
"id" : "FIELD",
"n" : "Поле",
"vis" : "1",
"dt" : "2",
"dd" : "-1",
"size" : "10",
"precision" : "0",
"expression" : "",
"calculated" : "0",
"dateFormat" : "ДМГ"
},
{
"k" : "2",
"id" : "FIELD1",
"n" : "Поле1",
"vis" : "1",
"dt" : "1",
"dd" : "0",
"size" : "255",
"precision" : "0",
"expression" : "",
"calculated" : "0",
"dateFormat" : "ДМГ"
},
{
"k" : "3",
"id" : "IND_DATA",
"n" : "ind_data",
"vis" : "1",
"dt" : "4",
"dd" : "-1",
"size" : "0",
"precision" : "0",
"expression" : "",
"calculated" : "0",
"dateFormat" : "ДМГ"
}
]
}
}
},
"keyFieldNames" : "",
"clearConsumer" : "1",
"bulk" :
{
"commitCount" : "1024",
"actionOnProblem" : "DiscardRecordsInTransaction",
"saveInvalidRecs" : "0",
"invalidRecsFileName" : "",
"useStopLimit" : "0",
"stopLimit" : "1024",
"eventId" : ""
}
}
}
}
]
}
},
"shapes" : ""
}
}
}
public static SetEtlResult AddConsumer(MbId mb, EtlId moniker, string consumerId)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
var consumerDesc = FindObjectById(mb, consumerId); // Описание приёмника
//Параметры выполнения операции
var tSet = new SetEtl()
{
tArg = new SetEtlArg()
{
pattern = new EtlMdPattern()
{
objects = ListOperation.Add,
@object = new EtlObjectPattern()
{
settings = true,
consumer = new EtlConsumerPattern()
{
props = true
}
}
},
meta = new EtlMd()
{
objects = new EtlObjects()
{
its = new EtlObject[]
{
new EtlObject()
{
//Базовые свойства
id = "REPO_CONSUMER",
k = 0,
type = EtlObjectType.PlainDataMetabaseConsumer,
vis = true,
//Настройка приёмника
settings = new EtlObjectSettings()
{
plainConsumer = new EtlPlainDataConsumer()
{
fillFields = EtlFillFieldsType.FromSource,
consumer = new DtConsumerMd()
{
props = new DtConsumerProps()
{
type = DtConsumerType.Mb,
mb = new DtConsumerMb()
{
dataset = new Ob()
{
k = consumerDesc.k,
i = consumerDesc.i,
c = consumerDesc.c,
n = consumerDesc.n
}
}
}
}
}
}
}
}
}
},
metaGet = new EtlMdPattern()
{
objects = ListOperation.Get,
objectsFilter = new ListFilter() { range = new ListRange() { start = 3, count = 1 } },
@object = new EtlObjectPattern()
{
fields = ListOperation.Get,
settings = true,
consumer = new EtlConsumerPattern() { fields = true }
}
}
},
tEtl = moniker
};
//Добавление объекта в задачу ETL
var result = somClient.SetEtl(tSet);
return result;
}
См. также: