#.net #c#-4.0 #ssas-tabular
#.net #c #-4.0 #ssas-табличный
Вопрос:
Я пытаюсь создать модель ssas, используя следующий фрагмент кода. Я могу создать модель, когда источником является sql server, но когда источником является apache phoenix, я получаю упомянутую ошибку в заголовке. Ниже приведен рабочий и нерабочий код, по какой причине он не работает для apache phoenix?
SQL Server:
if (srcType.Equals("Sql Server"))
{
dataSourceName = "Sql Server";
objDatabase.Model.DataSources.Add(new ProviderDataSource()
{
Name = dataSourceName,
Description = "A data source definition that uses explicit Windows credentials for authentication against SQL Server.",
ConnectionString = "Provider=MSOLEDBSQL;Data Source=" strSourceServer ";Initial Catalog=" srcDB ";Persist Security Info=True;User ID=" srcDBUser ";Password=" srcDBPassword,
ImpersonationMode = Microsoft.AnalysisServices.Tabular.ImpersonationMode.ImpersonateAnonymous,
// Account = srcSysUser,
// Password = srcSysPassword,
});
}
////// После формирования SQL
Console.WriteLine("Sql--> " sqlQuery);
t.Name = strDesteTableName;
t.Description = strDesteTableName;
t.Partitions.Add(new Microsoft.AnalysisServices.Tabular.Partition()
{
Name = srcTable,
Source = new QueryPartitionSource()
{
DataSource = objDatabase.Model.DataSources[dataSourceName],
Query = sqlQuery,
}
});
objServer.Databases.Add(objDatabase);
objDatabase.Model.RequestRefresh(Microsoft.AnalysisServices.Tabular.RefreshType.Full);
objDatabase.Update(UpdateOptions.ExpandFull);
Феникс (не работает):
else if (srcType.Equals("phoenix"))
{
dataSourceName = "DSN=Hortonworks Phoenix ODBC DSN";
string json = @"{""protocol"": ""odbc"",""address"": { ""options"": {""dsn"": ""Hortonworks Phoenix ODBC DSN"" } }}";
string credJson = @"{""AuthenticationKind"": ""UsernamePassword"",""kind"": ""Odbc"",""path"": ""dsn=Hortonworks Phoenix ODBC DSN"",""Username"": ""root"",""Password"":""D@ntl3tg0"" }";
objDatabase.Model.DataSources.Add(new StructuredDataSource()
{
Name = dataSourceName,
Description = "A data source definition that uses explicit Windows credentials for authentication against Phoenix.",
// ConnectionString = "Provider=MSOLAP;DSN=Hortonworks Phoenix ODBC DSN;UID=root;Pwd=D@ntl3tg0;",
//ImpersonationMode = Microsoft.AnalysisServices.Tabular.ImpersonationMode.ImpersonateAnonymous,
//Account = srcSysUser,
//Password = srcSysPassword,
ConnectionDetails = new ConnectionDetails(json),
Credential = new Credential(credJson)
});
}
Console.WriteLine("Sql--> " sqlQuery);
t.Name = strDesteTableName;
t.Description = strDesteTableName;
t.Partitions.Add(new Microsoft.AnalysisServices.Tabular.Partition()
{
Name = srcTable,
Source = new QueryPartitionSource()
{
DataSource = objDatabase.Model.DataSources[dataSourceName],
Query = sqlQuery,
}
});
Получение ошибки:
Не удалось сохранить изменения на сервере. Возвращенная ошибка: ‘Ошибка OLE DB или ODBC: [Выражение.Ошибка] Собственные запросы не поддерживаются этим значением .. «. в Microsoft.Службы анализа.Табличный.Модель.SaveChanges (SaveOptions SaveOptions) в Microsoft.Службы анализа.Табличный.Модель.SaveChanges (SaveFlags saveFlags) в Microsoft.Службы анализа.Табличный.База данных.onAfterUpdate (параметры UpdateOptions) в Microsoft.Службы анализа.MajorObject.Update(параметры UpdateOptions, режим UpdateMode, предупреждения XmlaWarningCollection) в Microsoft.Службы анализа.MajorObject.Update(параметры UpdateOptions) в SsisExecute.Программа.Созданная база данных (Server objServer, String strCubeDBName, String strDesteTableName, String srcType, String strSourceServer, String srcDBUser, String srcDBPassword, String srcDB, String srcTable, String partitionColums, String groupByCols)