Как присоединиться к 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

Другие вопросы по тегам