gcpug / nouhau

Google Cloud Platformのノウハウを共有するRepository
https://gcpug.jp
MIT License
655 stars 23 forks source link

API Client Library for GoでStandardSQLを実行する #11

Open sinmetal opened 6 years ago

sinmetal commented 6 years ago

UseLegacySql booljson:"useLegacySql,omitempty"` なので、falseを設定しても省略されてリクエストに乗らない。 そのため、ForceSendFields: []string{"UseLegacySql"},を設定して、必ずUseLegacySql` を投げてもらうように設定する。

        job, err := bq.Jobs.Insert(form.ProjectID, &bigquery.Job{
        Configuration: &bigquery.JobConfiguration{
            Query: &bigquery.JobConfigurationQuery{
                Query:    form.Query,
                Priority: "Batch",
                DefaultDataset: &bigquery.DatasetReference{
                    ProjectId: form.DstProjectID,
                    DatasetId: form.DstDatasetID,
                },
                AllowLargeResults: true,
                CreateDisposition: "CreateIfNeeded",
                DestinationTable: &bigquery.TableReference{
                    ProjectId: form.DstProjectID,
                    DatasetId: form.DstDatasetID,
                    TableId:   form.DstTableID,
                },
                TimePartitioning: &bigquery.TimePartitioning{
                    Type: "DAY",
                },
                UseLegacySql:    false,
                ForceSendFields: []string{"UseLegacySql"},
            },
        },
    }).Do()
    if err != nil {
        log.Errorf(ctx, "Failed to insert query job: %v", err)
        return nil, err
    }