Как присоединиться к JDV и не нажимать присоединиться к источнику данных - PullRequest
0 голосов
/ 10 октября 2018

Проблема: я пытаюсь создать широкое представление (~ 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 Ответ

0 голосов
/ 24 октября 2018

Текущий источник не может обрабатывать более 1600 столбцов.

Можете ли вы отразить это как проблему для Teiid?Тогда мы можем автоматически выполнить соответствующее компенсационное действие.

, тогда мой запрос (например, dBeaver) будет выглядеть следующим образом:

Если вы видите, что эта проблема затрагивает все ваши пользовательские запросы, затем вы можете отключить поддержку объединения на уровне переводчика с помощью переопределения переводчика - SupportsInnerJoin, SupportsOuterJoins и т. д. Если существует отношение pk / fk и вы можете изменить метаданные, вы можете добавить свойство расширения allow-join как ложное дляпредотвратить нажатие - см. Соединение компенсации http://teiid.github.io/teiid-documents/master/content/reference/Federated_Optimizations.html

...