Как получить таблицы и столбцы из источника данных юниверса SAP BO? - PullRequest
1 голос
/ 20 января 2020

Я могу получить папки определенного юниверса с помощью API REST слоя SAP BO Universe semanti c.

Теперь мне нужно получить основные таблицы из-под источника данных юниверса. Я обнаружил, что для этого следует использовать COM SDK от SAP, однако сейчас говорят, что он устарел.

Есть ли возможность загрузить вышеуказанный материал из SAP BO в мое приложение Java?

Заранее спасибо.

1 Ответ

0 голосов
/ 20 января 2020

Вы пробовали SAP BI Semanti c Слой Java SDK API ? Он содержит метод getTables () , который, кажется, делает именно то, что вам нужно:

Возвращает значение списка ссылок на «таблицы». Содержимое списка имеет тип Таблица. Он двунаправленный, а его противоположность - «Основание данных». Это представляет собой список имен таблиц основания данных.

Возвращает: значение списка ссылок на содержимое таблиц.

Если у вас есть Webi, вы можете получить данные Информация о провайдере с помощью RESTful Webi API. В вашем случае провайдер данных - это юниверс.

  1. Прежде всего вам следует получить поставщиков данных и их идентификаторы
  2. Затем вы получите план запроса вашей вселенной с помощью этого API

    GET /documents/<documentID>/dataproviders/<dataProviderID>/queryplan
    

и получите все операторы SQL вместе с именами таблиц и столбцами, которые использовались в этой вселенной

<queryplan custom="false" editable="true">
    <union>
        <fullOuterJoin>
            <statement index="1">SELECT 'FY' || to_char(SALES.invoice_date,'yy'),
                count(distinct SALES.inv_id) FROM SALES GROUP BY 'FY' ||
                to_char(SALES.invoice_date,'yy')</statement>
            <statement index="2">SELECT 'FY' || to_char(SALES.invoice_date,'yy'),
                sum(INVOICE_LINE.nb_guests) FROM SALES, INVOICE_LINE, SERVICE_LINE,
                SERVICE WHERE (SALES.INV_ID=INVOICE_LINE.INV_ID) AND 
                (INVOICE_LINE.SERVICE_ID=SERVICE.SERVICE_ID) AND 
                (SERVICE.SL_ID=SERVICE_LINE.SL_ID) AND
                (SERVICE_LINE.service_line ='Accommodation') 
                GROUP BY 'FY' || to_char(SALES.invoice_date,'yy')</statement>
        </fullOuterJoin>
        <fullOuterJoin>
            <statement index="3">...</statement>
            <statement index="4">...</statement>
        </fullOuterJoin>
        <intersect>
            <fullOuterJoin>
                <statement index="5">...</statement>
                <statement index="6">...</statement>
            </fullOuterJoin>
            <fullOuterJoin>
                <statement index="7">...</statement>
                <statement index="8">...</statement>
            </fullOuterJoin>
            <minus>
                <fullOuterJoin>
                    <statement index="9">...</statement>
                    <statement index="10">...</statement>
                </fullOuterJoin>
                <fullOuterJoin>
                    <statement index="11">...</statement>
                    <statement index="12">...</statement>
                </fullOuterJoin>
            </minus>
        </intersect>
    </union>
</queryplan>

Здесь также руководство разработчика для RESTful API. Например, это можно сделать с помощью PowerShell .

...