2016-08-10 1 views
0

J'ai des comptes de service par projet BigQuery. Je dois mettre des jointures sur des tables dans différents projets en utilisant des comptes de service configurés sur chaque projet.Rejoindre des tables BigQuery dans différents projets utilisant des comptes de service

Voici ce que j'ai:

  1. Service_EmailAccount1 -> project1
  2. Service_EmailAccount2 -> Projet2

Je peux me connecter à des tables en utilisant ces comptes de service dans les projets respectifs, mais lorsque je tente de joindre des données sur différentes tables qui sont dans différents projets, j'obtiens des erreurs d'accès.

Raison est lorsque je crée le service BigQuery, j'utilise un fichier JSON qui est spécifique au projet car il contient l'ID du projet.

Comment puis-je joindre des tables dans différents projets à l'aide de comptes de service?

+0

montrez-nous votre SQL, et votre message (s) d'erreur –

Répondre

1

En supposant que vous exécutez votre requête par Service_EmailAccount1
Dans ce cas, vous devez simplement partager votre ensemble de données respectif Projet2 avec Service_EmailAccount1
Et vous devez vous assurer que les deux ensembles de données sont dans le même endroit
C'est vous avez tous besoin

Voir plus sur le concept Access Control dans BigQuery

+0

Lors de la connexion en utilisant le compte de service, json aura besoin. Ce json sera différent pour différents projets ou même json aidera à se connecter à des ensembles de données dans différents projets. – user2846616

0

Je crois que l'idée suivante pourrait être utile, par exemple, vous utilisez service_emailaccount1 pour obtenir l'accès des project1,

  1. aller à BigQuery, cliquez sur le nom du projet, puis choisissez -> Projet de commutation -> gestion de projets, vous allez à IAm & page Admin
  2. choisir project1 et vous verrez la page d'autorisation pour le projet.
  3. ajouter service_emalaccount2 être un téléspectateur/rédacteur à ce project1 (si account1 est le propriétaire)

Ensuite, je crois que les deux comptes auront accès project1.
C'est ce que je ferai pour avoir accès à plusieurs projets, et je ne suis pas sûr que nous puissions utiliser un compte de service différent pour interroger différents projets en une seule requête. Thx

+0

Je ne recommanderais pas d'utiliser cette approche car elle ouvre tous les jeux de données dans project1 à afficher/modifier pour service_emalaccount2. dans ma pratique c'est un gros NON-NON! –

+0

@MikhailBerlyant Merci, c'est vrai. Dépend de ce dont il a besoin, il peut choisir de partager des ensembles de données ou l'ensemble du projet. – HaipengSu