Consultas federadas do SAP Datasphere

Como analista de dados, é possível consultar dados relacionais no SAP Datasphere pelo BigQuery usando consultas federadas.

A federação SAP Datasphere do BigQuery permite que o BigQuery consulte dados que residem no SAP Datasphere em tempo real, sem copiar ou mover dados.

Para executar uma consulta SQL no SAP Datasphere, especifique essa consulta SQL no BigQuery em uma função EXTERNAL_QUERY. Em seguida, os resultados são transferidos do SAP Datasphere para o BigQuery.

Limitações

  • Só é possível consultar visualizações relacionais que estejam expostas para consumo. Outros objetos no SAP Datasphere não podem ser acessados pela consulta federada por EXTERNAL_QUERY.
  • A conexão com o SAP Datasphere pode ser feita de qualquer endereço IP externo que pertença ao Google Cloud, e esse endereço IP pode mudar com o tempo. Portanto, você precisa adicionar todos os endereços IP externos do Google Cloud à lista de permissões no SAP Datasphere.
  • A latência da consulta federada pode ser visivelmente maior do que a mesma consulta se ela for executada diretamente no SAP Datasphere.
  • Não há suporte para Pushdowns SQL adicionais no SAP Datasphere.
  • A consulta SQL do SAP Datasphere precisa especificar aliases para as colunas que contêm resultados da função.

Antes de começar

Verifique se o administrador do BigQuery criou uma conexão do SAP Datasphere e compartilhou com você.

Funções exigidas

Para ter as permissões necessárias para consultar o SAP Datasphere, peça ao administrador para conceder a você o papel do IAM de usuário de conexão do BigQuery (roles/bigquery.connectionUser) no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Consultar dados

Para enviar uma consulta federada para o SAP Datasphere de uma consulta do GoogleSQL, use a função EXTERNAL_QUERY.

O exemplo a seguir é uma consulta federada que mescla uma tabela no SAP Datasphere chamada ORDERS e uma tabela no BigQuery chamada mydataset.customers.

SELECT c.customer_id, c.name, rq.first_order_date
FROM mydataset.customers AS c
LEFT OUTER JOIN EXTERNAL_QUERY(
  'connection_id',
  '''SELECT CUSTOMER_ID, MIN(ORDER_DATE) AS first_order_date
     FROM ORDERS
     GROUP BY CUSTOMER_ID''') AS rq
  ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;

Conferir um esquema de tabela do SAP Datasphere

Os exemplos a seguir usam a função EXTERNAL_QUERY para recuperar metadados do banco de dados do esquema SYS no SAP Datasphere.

-- List all views in a schema.
SELECT * FROM EXTERNAL_QUERY(
  'connection_id',
  '''SELECT VIEW_NAME FROM SYS.VIEWS
     WHERE SCHEMA_NAME = 'MY_SCHEMA'''');
-- List all columns in a view.
SELECT * FROM EXTERNAL_QUERY(
  'connection_id',
  '''SELECT COLUMN_NAME, DATA_TYPE_NAME
     FROM SYS.VIEW_COLUMNS
     WHERE SCHEMA_NAME = 'MY_SCHEMA' AND
           VIEW_NAME = 'my_view'
     ORDER BY POSITION''');

Preços

O custo de executar uma consulta federada é baseado em três fatores:

  • O custo de computação da execução da consulta no SAP Datasphere.
  • O custo da largura de banda da transferência dos resultados da consulta do SAP Datasphere para o BigQuery.
  • O custo de computação da execução da consulta no BigQuery.

Todos os custos relacionados ao SAP Datasphere dependem do tipo de serviço SAP que você usa. Para limitar o custo da largura de banda, recomendamos que você grave a consulta no EXTERNAL_QUERY para que exclua todas as colunas e linhas que não sejam necessárias para calcular o resultado final.

Não há custo adicional para executar consultas federadas no BigQuery. Para mais informações sobre os preços do BigQuery, consulte Preços.

A seguir