【问题标题】:Bigquery Entity TagBigquery 实体标签
【发布时间】:2021-03-04 02:41:50
【问题描述】:

当我将数据从 Cloud Storage 加载到 Bigquery 时,click_url 字段在创建时变成了 Record 类型,即使它是一个字符串(可能是因为 noindex 不确定)。当我尝试使用 Inserter 将数据插入 BigQuery 时。我收到此错误消息:

无法将 std::string 转换为记录字段:可选 .Msg_0_CLOUD_QUERY_TABLE.Msg_1_CLOUD_QUERY_TABLE_click_url click_url = 1

bigquery 中的表:

架构:

代码如下:

type Product struct {
        Name     string `datastore:"name" bigquery:"name"`
        ClickUrl string `datastore:"click_url,noindex" bigquery:"click_url"`
        DateAdded time.Time `datastore:"date_added" bigquery:"date_added"`
}

func insertRows(data interface{}) error {
        projectID := "my-project-id"
        datasetID := "mydataset"
        tableID := "mytable"
        ctx := context.Background()
        client, err := bigquery.NewClient(ctx, projectID)
        if err != nil {
                return fmt.Errorf("bigquery.NewClient: %v", err)
        }
        defer client.Close()

        inserter := client.Dataset(datasetID).Table(tableID).Inserter()
        if err := inserter.Put(ctx, data); err != nil {
                return err
        }
        return nil
}

func main() {
        product := Product{"product_name", "click_url", "date_added_value"} // Example data from datastore
        if err := insertRows(product); err != nil {
              fmt.Println(err)
        }
}

我应该在实体标签"bigquery:click_url" 上添加什么来完成这项工作?

【问题讨论】:

    标签: go google-bigquery


    【解决方案1】:

    因为 BigQuery 中的 ClickUrl 是 STRUCT 类型,具有键值对。

    也许试试这个?

    type Product struct {
            Name     string `datastore:"name" bigquery:"name"`
            ClickUrl struct {
              String  string
              Text  string
              Provided  string
            } `datastore:"click_url,noindex" bigquery:"click_url"`
            DateAdded time.Time `datastore:"date_added" bigquery:"date_added"`
    }
    

    【讨论】:

    • 我很想改变结构,但我不能,因为它会影响我们所有的代码。变化的影响是巨大的。但我真的很困惑为什么当我将数据从云存储加载到 bigquery 时,click_url 竟然是一个结构(即使它是一个字符串)。
    • 是的,我认为这可能是因为数据存储区中的noindex
    • 是的,我想我将创建另一个结构并传递原始结构中的所有数据,尽管这不是一个好方法,但我会尝试。
    • 我有一个问题。我已经成功运行了insert,但是当我检查表中的数据时,我似乎找不到它。插入数据后会实时反映吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2013-01-27
    • 2012-03-27
    • 1970-01-01
    相关资源
    最近更新 更多