Go BigQuery中的数据库设计

Go BigQuery中的数据库设计,go,database-design,google-bigquery,Go,Database Design,Google Bigquery,我有一个名为“Acquisition”的主表,其中有多个列引用其他表(例如:“Source”、“Application”等。例如,“Source”将有多个可能的值,这些值将在“Acquisition”表的多行中使用)。让mea bit感到困扰的是,“Acquisition”表的行将返回如下数据: id>1;值>23.4;源id>1;应用程序id>3;平台id>1;国家id>1;等等 你认为有没有另一种方法来设计它,使它更具可读性/用户友好性 下面是模式代码的摘录: acquisitionSche

我有一个名为“Acquisition”的主表,其中有多个列引用其他表(例如:“Source”、“Application”等。例如,“Source”将有多个可能的值,这些值将在“Acquisition”表的多行中使用)。让mea bit感到困扰的是,“Acquisition”表的行将返回如下数据:

id>1;值>23.4;源id>1;应用程序id>3;平台id>1;国家id>1;等等

你认为有没有另一种方法来设计它,使它更具可读性/用户友好性

下面是模式代码的摘录:

acquisitionSchema = bigquery.Schema {
    &bigquery.FieldSchema{Name: "id", Required: true, Type: bigquery.StringFieldType},
    &bigquery.FieldSchema{Name: "value", Required: true, Type: bigquery.FloatFieldType},
    &bigquery.FieldSchema{Name: "source_id", Required: true, Type: bigquery.StringFieldType},
    &bigquery.FieldSchema{Name: "application_id", Required: true, Type: bigquery.StringFieldType},
    &bigquery.FieldSchema{Name: "platform_id", Required: true, Type: bigquery.StringFieldType},
    &bigquery.FieldSchema{Name: "country_id", Required: true, Type: bigquery.StringFieldType},
    &bigquery.FieldSchema{Name: "adtype_id", Required: true, Type: bigquery.StringFieldType},
    &bigquery.FieldSchema{Name: "date", Required: true, Type: bigquery.dateFieldType},
    &bigquery.FieldSchema{Name: "download", Required: false, Type: bigquery.IntegerFieldType}   } 

sourceSchema = bigquery.Schema {
    &bigquery.FieldSchema{Name: "id", Required: true, Type: bigquery.StringFieldType},
    &bigquery.FieldSchema{Name: "value", Required: true, Type: bigquery.StringFieldType},
}
我曾想过直接把源代码、平台等的价值放进去,但当我通过API从多个源中获取数据时,它可能会变得混乱,除非我在代码中进行了所有必要的控制


谢谢

通常我们做一个
记录
,它有两列
(id,name)

这样,在我们的查询中,我们可以使用
country.id
按整数进行查询,或者使用
country.name
显示值以供快速检查

由于现在的存储成本很低,我们可以在每一列中存储文字表示。由于BQ仅通过设计追加,并且我们通常读取最新的行,如果
名称
同时发生更改,则该行已经包含新值。使用
LAST\u VALUE
函数,我们始终可以选择保存最后一个
名称的最后一条记录

-country
 |id
 |name