1

現在、GOLANGのV2 APIを使用してGoogle BigQueryにパラメータ化クエリを使用することはできません。通常、偶然にせずにクエリを処理するコードは次のようになります。GOLANG V2 APIを使用したGoogle BigQueryのパラメータ化クエリ

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

我々は名前の偶然にを使用してはいけないことを前提としています。モック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または他の後に、行方不明のプロンプトが表示されますか?認識されません。同じことは@を使って名前付きパラメタにも適用されます。私は何かを忘れていますか、GOLANG APIでサポートされていないパラメタですか?

+0

大文字小文字が区別されます。他の誰かがこのエラーログを調べます。ジョブはエラーで失敗しました{Location: "query";メッセージ: "構文エラー:FROM句が[1:680]で許可されない前にカンマを後続します。理由: "invalidQuery"} と入力の配列を印刷して、その文字列が 文字列であることを確認してください。%!(EXTRA string = 'autoRecurring') –

答えて

1

クエリパラメータがstandard SQLでのみサポートされているため、の一部としてUseStandardSQLを設定する必要があります。また、QueryParameterType属性を設定する必要があります("STRING")。位置パラメータはサポートされていますが、名前付きパラメータの使用を推奨します。なぜなら、ある時点でクエリ文字列を変更する必要がある場合、リファクタリングが容易になるからです。

+0

標準のSQLを試しました。そのQueryParameterのスライス(Fieldsの名前と値のみを持つ)をQueryParametersに設定するにはどうすればよいですか。 –

+1

また、https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigquery/query.goを見ると、LegacySQLが無効になっているファイルの最後に、標準SQLをパラメータ化または送信します。だから、それは問題ではありません –

+0

はおそらくフィードバックのために必要です –

関連する問題