Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Добрый день!

Проблема в источнике есть поле, которое содержит id, например 10000000000000119011
Но при импорте значение превращается в 10000000000000100000

Источник - Green Plum (Postgresql)

Оснастка - Visual Studio Comunity + SSDT

Сам запрос таблицы выглядит вот так:

let
Source = #"PostgreSQL/server;db_1",
table = Source{[Schema="scheme_1",Item="v_bi_svc"]}[Data],
#"Измененный тип" = Table.TransformColumnTypes(table,{{"svc_id", Decimal.Type}}),
in
#"Измененный тип"

Если последний шаг убрать, ничего не измениться, я его наоборот добавил в попытках решить проблему.

Пробовал и:

let
Source = #"PostgreSQL/server;db_1",
table = Source{[Schema="scheme_1",Item="v_bi_svc"]}[Data],
#"Сложено со столбцом" = Table.TransformColumns(table, {{"svc_id", each Decimal.From(_), Decimal.Type}}),
in
#"Сложено со столбцом"
Не помогло...

Удивительно то, что в редакторе Power Query числа отображаются корректно, а после импорта на сервер, получается такая ерунда...

Причем если я добавляю, в других таблицах, новый столбец расчетный, например:

#"Добавлен пользовательский объект2" = Table.AddColumn(#"Добавлен пользовательский объект1", "user_sid", each Decimal.From([src_id]) * Decimal.From(100000000000000000000) + Decimal.From([user_id]), Decimal.Type),
То все нормально считается и запихивается в SSAS, при чем число получается на порядок больше!

Помогите разобраться в проблеме...
27 дек 18, 19:10    [21775152]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Начинает хоть как-то работать если:
source = PostgreSQL.Database(..... "SELECT ... svc_id/10000000000 as svc_id, ... FROM ...")
Тогда я получаю десятичное число, где в дробной части все корректно сохранилось...
Но это как то криво. Вероятно проблема в драйверах, кто-то с таким сталкивался?
27 дек 18, 21:24    [21775265]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Толикman,

поторопился - при импорте все равно превратилось в 1000000000.00001
27 дек 18, 21:33    [21775270]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Толикman
Толикman,

поторопился - при импорте все равно превратилось в 1000000000.00001

Во-первых, Greenplum не поддерживается официально как источник для SSAS Tabular.
Во-вторых, попробуйте триальный драйвер PGNP OLEDB Providers for PostgreSQL*, Greenplum and Redshift, причем обязательно самый свежий, версии 1.4.0.3542.

Если понравится - купите драйвер и используйте. А менеджеру проектов, который не захотел делать прослойку в виде DWH на MSSQL - передайте мое "фууу". Удачи.
27 дек 18, 21:47    [21775275]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Толикman,

И не используйте драйвер от PostgreSQL, это другая СУБД. Гринплам все-таки полноценный форк со своими заморочками.
27 дек 18, 21:48    [21775277]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Andy_OLAP,

но они же сами рекомендуют его использовать:
Greenplum Database Release Notes
28 дек 18, 09:58    [21775461]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Толикman,

я всех обманул, вот это тоже не работает, сидимо глаза уже меня обманывали:
#"Добавлен пользовательский объект2" = Table.AddColumn(#"Добавлен пользовательский объект1", "user_sid", each Decimal.From([src_id]) * Decimal.From(100000000000000000000) + Decimal.From([user_id]), Decimal.Type),

Если я укажу ::text в select, то текст приходит корректно.
Но если я его потом конвертну в Decimal.From, то опять експонента.

Можно Power Query заставить запускать Decimal.From на стороне SSAS при импорте?
28 дек 18, 10:16    [21775477]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Серъезно?

https://docs.microsoft.com/ru-ru/sql/analysis-services/tabular-models/data-types-supported-ssas-tabular?view=sql-server-2017

Максимальное число в SSAS Tabular 8 байтовое?
Т.е. хранить идентификаторы только в виде текста?
28 дек 18, 10:31    [21775496]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7757
Толикman,

максимальное целое число в SQL Server.
28 дек 18, 13:06    [21775662]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Владислав Колосов,

Десятичное тоже максимум 8 байт.
Итого максимальная точность 17 цифр.

Вопрос закрыт, перевел в текст, всем спасибо!
28 дек 18, 13:08    [21775664]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7757
Толикman,

С чего Вы взяли, что десятичное хранится в 8 байтах? Точность десятичного числа - 38 цифр и размер хранилища - 17 байт.
28 дек 18, 13:24    [21775678]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Толикman
Member

Откуда:
Сообщений: 59
Владислав Колосов,

по данной ссылке написано:
автор
Десятичное число
...
64-разрядное (8 байтовое) вещественное число
...
Однако количество значащих цифр ограничено 17 знаками после запятой.
28 дек 18, 13:29    [21775687]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Толикman,

Вот Вам кошерная ссылка. Потому что Владислав написал "максимальное целое число в SQL Server", а не "максимальное целое число в SSAS Tabular".
28 дек 18, 13:32    [21775694]     Ответить | Цитировать Сообщить модератору
 Re: SSAS Tabular криво импортирует 20 значные числа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7757
Похоже, что в табличной модели не отображения SQL типа Decimal, он же Numeric...
28 дек 18, 13:43    [21775708]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить