我們已經在數據集的兩個表上創建了一個視圖。我們能夠從控制檯Web UI查詢視圖。但是,當我們嘗試使用服務帳戶密鑰查詢來自Python客戶端代碼的視圖時,我們得到一個錯誤 - 錯誤代碼:200,錯誤的請求,無效的表名。我們可以使用相同的代碼查詢底層表。當我們試圖用視圖名替換表名時,代碼停止工作。Bigquery視圖從python代碼獲取錯誤
from google.cloud import bigquery
def test():
client = bigquery.Client(project='project-name')
query_results = client.run_sync_query("""
SELECT column-names
FROM `dataset.viewname`
WHERE conditions
;""")
query_results.use_legacy_sql = False
query_results.run()
page_token = None
while True:
rows, total_rows, page_token = query_results.fetch_data(
max_results=1,
page_token=page_token)
for row in rows:
print row
if not page_token:
break
if __name__ == '__main__':
test()
而且,當我們設置query_results.use_legacy_sql = False
,我們得到以下錯誤:
BadRequest: 400 Cannot reference a Legacy SQL view in a SQL query
當我們建立query_results.use_legacy_sql = True
,我們得到一個不同的錯誤:
BadRequest: 400 Invalid table name: 'dataset.viewname'
謝謝..移動到標準SQL並在視圖查詢中使用#標準sql標記有助於使用標準查詢語言。 python代碼開始工作 –