at Bars.Alpha.Mondrian.Soap.HttpClient.MondrianControlHttpClient.ExecuteRequest (System.Net.Http.HttpContent httpContent) [0x00132] in /opt/teamcity/buildAgentProj/work/minfin/projects/minfin-7.0/bars.alpha/src/Bars.Alpha.Mondrian/Soap/HttpClient/MondrianControlHttpClient.cs:49 at Bars.Alpha.Mondrian.Soap.XmlaExtensions.ValidateSchema (Bars.Alpha.Mondrian.Mondrian3.Proxy.DataSources.DataSourceCatalog dataSourceCatalog, Bars.Alpha.Mondrian.Mondrian3.Proxy.Schema.Schema xmlSerializableSchema) [0x00018] in /opt/teamcity/buildAgentProj/work/minfin/projects/minfin-7.0/bars.alpha/src/Bars.Alpha.Mondrian/Soap/XmlaExtensions.cs:105 at Bars.Alpha.Mondrian.MondrianDeployer.UpdateSchema (Bars.Alpha.Mondrian.AppSchema.MondrianValidCatalogSchema catalogSchema, Bars.Alpha.DWH.Schema.Elements.SchemaDataSource dataSource, Bars.Alpha.Core.Operation.IOperationProtocol protocol, Bars.Alpha.Mondrian.Mondrian3.Proxy.DataSources.DataSources proxyDataSources) [0x0006c] in /opt/teamcity/buildAgentProj/work/minfin/projects/minfin-7.0/bars.alpha/src/Bars.Alpha.Mondrian/MondrianDeployer.cs:181 at
Фрагмент лога Mondrian:
Caused by: org.postgresql.util.PSQLException: Bad value for type int : 2158696332
at org.postgresql.jdbc.PgResultSet.toInt(PgResultSet.java:2838)
at org.postgresql.jdbc.PgResultSet.getInt(PgResultSet.java:2073)
at org.apache.commons.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:186)
at mondrian.rolap.SqlStatement$3.get(SqlStatement.java:391)
at mondrian.rolap.SqlMemberSource.makeMember(SqlMemberSource.java:1122)
at mondrian.rolap.SqlMemberSource.getMemberChildren2(SqlMemberSource.java:1021)
Ошибка Bad value for type int вызвана тем, что значение 2158696332 действительно выходит за диапазон допустимых значений: от -2147483648 до 2147483647 для типа данных, определенного для соответствующего свойства элемента иерархии в настройках.
В текущей реализации AlphaBI (до версии 4.6.1 включительно) редактор иерархии позволяет определять значение свойства “тип данных”:
в редакторе уровня,
в редакторе атрибута уровня
из следующего списка:
Строка,
Дата,
Целое число,
Вещественное число,
Булево значение,
в котором Целое число соответствует типу java int с диапазоном допустимых значений от -2147483648 до 2147483647 .
Исходя из предположения (т.к. в теме это не сказано явно), что в настройках иерархии для одного из свойств - идентификатор уровня или атрибут уровня - определен тип данных “Целое число”,
необходимо сделать следующее:
Для решения “здесь и сейчас” попробовать варианты (обход, но не решение проблемы):
1.1. решить исходную задачу, исключив необходимость использования поля таблицы, содержащего “большие” числа,
1.2. в настройках иерархии для соответствующего свойства определить тип “Строка”
Для нормального решения проблемы:
Реализовать в продукте возможность определять тип данных Целое число 64 бит (long) для свойств элементов иерархий. Поставлена задача.
Для каждой пользовательской таблицы в Альфе создается свой sequence в БД.
Но здесь есть одно уточнение: если происходит выполнение ETL-шага “Создание бизнес-объектов” в составе сгруппированного (SQL-изированного) ETL-процесса, то учитывается не sequence, привязанный к конкретной таблице, а runtime."auxiliary_id_sequence". runtime."auxiliary_id_sequence" - эту последовательность нельзя сбрасывать.
Для последовательностей из пользовательских таблиц: ALTER SEQUENCE <sequence_name> RESTART WITH 1;