1

我目前無法使用GOLANG中的V2 API將參數化查詢用於Google BigQuery。通常沒有paramters處理查詢的代碼如下:使用GOLANG V2 API的Google BigQuery中的參數化查詢

database_query := client.Query(report.Query) database_query.QueryConfig.Dst = table_result job, err := database_query.Run(ctx)

假設我們不使用命名paramters。讓模擬2個參數,並把這段請求從API(https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigquery/query.go)預計:「?」

var params [2]string 
params[0] = "currency" 
params[1] = "price" 

ParametersL := make([]bigquery.QueryParameter, 0) 
for _,element := range params { 
    temp := bigquery.QueryParameter{} 
    temp.Value=element 
    ParametersL = append(ParametersL,temp) 
} 

database_query := client.Query(report.Query) 
database_query.QueryConfig.Dst = table_result 
database_query.QueryConfig.Parameters= ParametersL 

提供您管理擠進入查詢的適當位置,你會得到一個錯誤提示丟失,在FROM或其他?不被認可。使用@命名參數的情況也是如此。我是否缺少cruzial或GOLANG API不支持的參數?

+0

如果有人看着這個錯誤日誌是:作業失敗,錯誤{位置:「查詢」;消息:「語法錯誤:FROM子句之前的尾部逗號不允許在[1:680]」;原因:「invalidQuery」} 和即時打印輸入數組,以確保其字符串: 字符串%!(EXTRA字符串='自動回放') –

回答

1

您需要將UseStandardSQL設置爲QueryConfig的一部分,因爲只有standard SQL支持查詢參數。您還需要確保設置QueryParameterType屬性,該屬性應爲"STRING"。雖然支持位置參數,但我仍然會建議使用命名參數,因爲如果您需要在某個時候修改查詢字符串,它們會使重構更容易。

+0

我試過標準的SQL,沒有任何效果。當QueryParameter的一部分(只有字段名和值)時,我該如何在QueryParameters上設置一個類型。 –

+1

另外,如果您查看https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigquery/query.go,您會看到在文件末尾LegacySQL已被禁用,無論是否設置了我們設置參數或發送標準SQL true。所以IT應該沒關係 –

+0

可能需要反饋 –