Ошибка синхронизации

При попытке синхронизировать схему появляется ошибка.
Чем она вызвана и как я могу ее избежать?

The Mondrian XML. Bad value for type int:

Лог Альфы:

  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. решить исходную задачу, исключив необходимость использования поля таблицы, содержащего “большие” числа,
    1.2. в настройках иерархии для соответствующего свойства определить тип “Строка”

  2. Для нормального решения проблемы:
    Реализовать в продукте возможность определять тип данных Целое число 64 бит (long) для свойств элементов иерархий. Поставлена задача.

1 лайк

Значение поля “Id” в таблице превысило лимит int32, для “здесь и сейчас” было решено начать расчет сиквенсов с 1.

Спасибо!

1 лайк

скивенс для конкретной таблицы?
подскажи, в Альфе у каждой таблицы свой сиквенс? и каким образом вы сделали расчет сиквенсов с 1?

Для каждой пользовательской таблицы в Альфе создается свой sequence в БД.
Но здесь есть одно уточнение: если происходит выполнение ETL-шага “Создание бизнес-объектов” в составе сгруппированного (SQL-изированного) ETL-процесса, то учитывается не sequence, привязанный к конкретной таблице, а runtime."auxiliary_id_sequence".
runtime."auxiliary_id_sequence" - эту последовательность нельзя сбрасывать.
Для последовательностей из пользовательских таблиц:
ALTER SEQUENCE <sequence_name> RESTART WITH 1;

2 лайка

Использование auxiliary_id_sequence при создании БО через ETL-процессы - это баг, который будет в какой-то момент времени исправлен.

Исправлено в версии AlphaBI 5.3.
Ссылка на описание релиза Release 5.3.0 (05.12.2023)