熊猫到gbq声称架构不匹配,而架构完全相同。在github上,所有问题据称已于2017年解决

时间:2019-06-11 14:13:34

标签: pandas google-bigquery python-bigquery

我正在尝试通过熊猫将表追加到其他表,从BigQuery提取数据并将其发送到其他BigQuery数据集。虽然表架构完全相同,但出现错误“”,请确认结构和“ pandas_gbq.gbq.InvalidSchema:请验证DataFrame中的结构和数据类型是否与目标表的模式匹配。“

此错误发生在较早的地方,我去过表重写,但是在这种情况下,数据集太大而无法做到这一点(这不是可持续的解决方案)。

    df = pd.read_gbq(query, project_id="global-dashboard-146013", credentials=bigquery_key,
                     dialect='standard')
    pd.io.gbq.to_gbq(df, dataset, projectid,
                     if_exists='append',
                     table_schema=[{'name': 'Date','type': 'STRING'},
                                   {'name': 'profileId','type': 'STRING'},
                                   {'name': 'Opco','type': 'STRING'},
                                   {'name': 'country','type': 'STRING'},
                                   {'name': 'deviceType','type': 'STRING'},
                                   {'name': 'userType','type': 'STRING'},
                                   {'name': 'users','type': 'INTEGER'},
                                   {'name': 'sessions','type': 'INTEGER'},
                                   {'name': 'bounceRate','type': 'FLOAT'},
                                   {'name': 'sessionsPerUser','type': 'FLOAT'},
                                   {'name': 'avgSessionDuration','type': 'FLOAT'},
                                   {'name': 'pageviewsPerSession','type': 'FLOAT'}
                                   ],
                     credentials=bigquery_key)

BigQuery中的架构如下:

Date                STRING      
profileId           STRING  
Opco                STRING  
country             STRING  
deviceType          STRING  
userType            STRING  
users               INTEGER 
sessions            INTEGER 
bounceRate          FLOAT   
sessionsPerUser     FLOAT   
avgSessionDuration  FLOAT   
pageviewsPerSession FLOAT   

然后我得到以下错误:

  

回溯(最近一次通话最后一次):文件“ ..file.py”,第63行,在          main()

     

文件“ ..file.py”,第57行,在主目录中       updates_general_data(bigquery_key)

     

文件“ ..file.py”,第46行,位于update_general_data中       凭证= bigquery_key)

     

文件   “ .. \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pandas \ io \ gbq.py”,   第162行,位于to_gbq中       凭据=凭证,详细=详细,private_key = private_key)

     

文件   “ .. \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ pandas_gbq \ gbq.py”,   第1141行,在to_gbq中        “请验证该结构和” pandas_gbq.gbq.InvalidSchema:请验证该结构和   DataFrame中的数据类型与目标表的模式匹配。

在我看来,似乎有一对一的比赛。我已经看到其他线程对此进行了讨论,这些线程主要是在讨论日期格式,即使在这种情况下日期格式已经是字符串,并且仍将table_schema设置为字符串。

2 个答案:

答案 0 :(得分:0)

最有可能出现问题是因为DataFrame和Schema中的列名不匹配

答案 1 :(得分:0)

我的数据框中有一列名为“No”。删除句点可以解决问题,并推断出架构。