使用自定义列名称

时间:2019-04-15 23:01:10

标签: google-bigquery google-cloud-storage avro

我试图用嵌套记录加载Avro文件。记录之一是具有架构的并集。加载到BigQuery后,它会在每个联合元素上创建一个非常长的名称,如com_mycompany_data_nestedClassname_value。这个名字很长。想知道是否有一种方法可以在不带完整软件包名称前缀的情况下指定名称。

例如。以下Avro模式

{
    "type": "record",
    "name": "EventRecording",
    "namespace": "com.something.event",
    "fields": [
        {
            "name": "eventName",
            "type": "string"
        },
        {
            "name": "eventTime",
            "type": "long"
        },
        {
            "name": "userId",
            "type": "string"
        },
        {
            "name": "eventDetail",
            "type": [
                {
                    "type": "record",
                    "name": "Network",
                    "namespace": "com.something.event",
                    "fields": [
                        {
                            "name": "hostName",
                            "type": "string"
                        },
                        {
                            "name": "ipAddress",
                            "type": "string"
                        }
                    ]
                },
                {
                    "type": "record",
                    "name": "DiskIO",
                    "namespace": "com.something.event",
                    "fields": [
                        {
                            "name": "path",
                            "type":  "string"
                        },
                        {
                            "name": "bytesRead",
                            "type": "long"
                        }
                    ]
                }
            ]
        }
    ]
}

跟上 enter image description here

是否可以将长字段名称(例如 eventDetail.com_something_event_Network_value )更改为 eventDetail.Network

1 个答案:

答案 0 :(得分:1)

Avro加载不像在BigQuery中那样灵活(基本示例是它不支持加载字段的一部分(读取器架构)。而且,BigQuery {{3 }}。只有选项才能使用适当的名称重新创建表(从现有表创建新表)或从先前的表重新创建表