Как присоединиться к JDV и не нажимать присоединиться к источнику данных
Проблема: я пытаюсь создать широкое представление (~5000 столбцов), которое отлично работает с источниками данных JDV. Однако, когда я пытаюсь создать представление с соединением на 2+ таблицы из источника данных, оптимизатор выталкивает соединение к источнику. Текущий источник не может обрабатывать более 1600 столбцов.
Пример: при попытке присоединиться к Member_DX1 и Member_DX2 на клиенте JDV выдвигает enter code here
объединенное соединение с postgres как получающее ошибку слишком большого столбца.
/* TABLE 1 */
CREATE VIEW Member_DX1 (
MEMB_BID Integer
, DX130402000000 Integer
, DX180608000000 Integer
, DX20401070000 Integer
.... /* 1000 more */
as
SELECT dx.memb_bid
, case dx.EPI_1_DX4 when 130402000000 then 1 else 0 END as DX130402000000
, case dx.EPI_1_DX4 when 180608000000 then 1 else 0 END as DX180608000000
, case dx.EPI_1_DX4 when 20401070000 then 1 else 0 END as DX20401070000
...
FROM BDR.ENH_EPI_DETAIL dx
/* TABLE 2 */
CREATE VIEW Member_DX2 (
MEMB_BID Integer
, DX200102010000 Integer
, DX90125000000 Integer
, DX160603070000 Integer
... /* 1000 more ...
SELECT dx.memb_bid /* FOREIGN TABLE */
, case dx.EPI_1_DX4 when 200102010000 then 1 else 0 END as DX200102010000
, case dx.EPI_1_DX4 when 90125000000 then 1 else 0 END as DX90125000000
, case dx.EPI_1_DX4 when 160603070000 then 1 else 0 END as DX160603070000
...`enter code here`
FROM BDR.ENH_EPI_DETAIL dx
тогда мой запрос в (например, dBeaver) выглядит так:
SELECT * from Member_DX1 dx1
join Member_DX2 dx2
on dx1.MEMB_BID = dx2.MEMB_BID
1 ответ
Текущий источник не может обрабатывать более 1600 столбцов.
Можете ли вы отразить это как проблему для Teiid? Тогда мы можем предпринять соответствующие компенсационные действия автоматически.
тогда мой запрос в (например, dBeaver) выглядит так:
Если вы видите, что эта проблема затрагивает все ваши пользовательские запросы, вы можете отключить поддержку присоединения на уровне переводчика с помощью переопределения переводчика - SupportsInnerJoin, SupportsOuterJoins и т. Д. Если существует отношение pk/fk и вы можете изменить метаданные, вы можно добавить свойство расширения allow-join как ложное, чтобы предотвратить нажатие - см. Компенсация соединения http://teiid.github.io/teiid-documents/master/content/reference/Federated_Optimizations.html