2016-06-29 9 views
0

Ich verwende Google BigQuery, um Daten für mehrere Clients mit denselben Algorithmen zu analysieren. Alle Projekte haben denselben Standort. Diese Algorithmen sind Ansichten.Freigeben von Ansichten zwischen BigQuery-Projekten

Ist es möglich, diese Ansichten in nur einem Projekt zu haben und sie über verschiedene Projektdaten laufen zu lassen?

Danke

Antwort

1

Ja. Während sich die Ansicht in einem Projekt befindet, können darin referenzierte Daten/Tabellen in einem anderen Projekt enthalten sein.

Btw, mit diesem „Modell“ können „trennen“ Benutzer Zugang zu aktuellen Daten, indem sie Zugang geben nur zum Ansehen, während entsprechende Datensatz mit dieser Ansicht teilen „Autorisierter View“ Option

ich will nicht, Ansichten für jedes Projekt schaffen, aber die Aussicht auf verschiedene Projekte ohne Änderung

generisch gesprochen, wie von heute laufen, dies ist nicht möglich!
Bis wenn Ansichten unterstützt die Übergabe von Parametern/Argumente oder so etwas

Noch sehe ich eine Option für den Fall unten!

Wenn Sie genau die gleiche Logik und Datenschema und nur das, was für verschiedene Kunden unterschiedlich ist, ist Projekt - Sie so etwas wie unten verwenden soll (nur eine Idee zu erkunden)

SELECT * FROM 
    (SELECT * FROM [projectA:dataset.table] WHERE CURRENT_USER() IN ('[email protected]', '[email protected]')), 
    (SELECT * FROM [projectB:dataset.table] WHERE CURRENT_USER() IN ('[email protected]', '[email protected]')), 
    (SELECT * FROM [projectC:dataset.table] WHERE CURRENT_USER() IN ('[email protected]', '[email protected]')) 

Also, hängt davon ab, welcher Benutzer läuft View - entsprechende Daten werden geliefert.
Natürlich in diesem Fall - Authorized Darstellung als Option für den Austausch von Daten verwendet, ist ein Muss, so clientâ keinen beliebigen Zugriff auf ClientB oder ClientC Daten hat

obigen Beispiel zu unter

modifiziert werden können
SELECT * FROM 
    (SELECT *, 'ClientA' AS client FROM [projectA:dataset.table]), 
    (SELECT *, 'ClientB' AS client FROM [projectB:dataset.table]), 
    (SELECT *, 'ClientC' AS client FROM [projectC:dataset.table]) 

so die Ansicht kann wie unten

SELECT * FRIN YourView WHERE client = 'ClientB' 

Wichtig

verwendet werden,

Bitte denken Sie daran, dass die oben genannten abstrakten/theoretischen Optionen dazu führen, dass Sie für die Abfrage aller beteiligten Projekte jedes Mal, wenn Sie sie ausführen, belastet werden. obwohl Sie das Ergebnis nur für ein bestimmtes Projekt/einen bestimmten Kunden erhalten.
Ich glaube nicht, dass Sie wollen, dass dies geschieht

+0

Dank Mikhail. Ist es eine Art wie "Projektnamen verwenden"? Ich meine, ich möchte nicht für jedes Projekt Ansichten erstellen, sondern die Ansicht ohne Änderung über verschiedene Projekte laufen lassen. – norgematos

Verwandte Themen