我正在使用Google BigQuery爲具有相同算法的多個客戶端分析數據。所有項目都有相同的位置。這些算法是視圖。在BigQuery項目之間共享視圖
是否有可能只在一個項目上有這些視圖,並在不同的項目數據上運行它?
謝謝
我正在使用Google BigQuery爲具有相同算法的多個客戶端分析數據。所有項目都有相同的位置。這些算法是視圖。在BigQuery項目之間共享視圖
是否有可能只在一個項目上有這些視圖,並在不同的項目數據上運行它?
謝謝
是的。儘管視圖在一個項目中 - 其中引用的數據/表可以駐留在另一個項目中。
順便說一句,使用這種「模式」,可以「獨立」的用戶,讓他們進入有機會獲得實際數據只能查看,而與此查看使用「授權視圖」選項共享各自的數據集
我不想創建視圖每一個項目,而是運行在 不同項目的看法沒有任何改變
一般地講,今天的,這是不可能的!
直到視圖將支持傳遞參數或參數或類似的東西
不過,我看到一個選項,以下特殊情況!
如果你有完全一致的邏輯和數據架構,只有什麼是針對不同客戶不同的是項目 - 你應該使用類似下面(只是一個想法,探索)
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]'))
因此,取決於哪個用戶正在運行視圖 - 相應的數據將被投放。
當然在這種情況下 - 使用授權查看選項共享數據是必須的,所以客戶端A沒有到ClientB或ClientC數據的任何接入
上面的例子可以在下面
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])
這樣進行修改,以視圖,可以使用如以下
SELECT * FRIN YourView WHERE client = 'ClientB'
重要
請記住,上面的抽象/理論選項會導致您每次運行時都要收取查詢所有涉及的項目的費用。即使您只會得到與特定項目/客戶相關的結果。
我不認爲你想要這樣的事情發生
謝謝米哈伊爾。這是像「使用項目名稱」的方式嗎?我的意思是,我不想爲每個項目創建視圖,而是在不改變任何項目的情況下運行視圖。 – norgematos