【发布时间】:2015-05-15 00:30:33
【问题描述】:
背景:
我有一个 GA 高级帐户。我目前有以下流程设置:
- 来自 GA 帐户的原始数据流入 BigQuery。
- 查询 Bigquery 表。
- 将查询结果导出到 GCS 存储桶。我以 CSV 和 gzip 格式导出它。
- 将 CSV 压缩后的数据从 GCS 存储桶导出到我的 Hadoop 集群 HDFS。
- 使用逗号作为字段分隔符,从集群上的数据生成 hive 表。
我使用 BigQuery REST API 以编程方式运行步骤 1-3。
问题:
我的数据在某些字段的引号中包含嵌入的逗号和换行符。当我生成我的 hive 表时,嵌入的逗号和换行符会导致我的字段值发生变化,或者导致 hive 表中的记录出现空值。
我想通过删除这些嵌入的逗号和换行符或将它们替换为引号内的自定义分隔符来清理数据。
但是,问题是我想在第 3 步执行此数据清理 - 同时导出到 GCS。我查看了可以用来实现此目的的可能查询参数,但没有找到。可用于填充 configuration.extract 对象的可能参数列在:https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.extract
这是将数据从 Bigquery 表导出到 GCS 存储桶的代码的 sn-p。
query_request = bigquery_service.jobs()
DATASET_NAME = "#######";
PROJECT_ID = '#####';
DATASET_ID = 'DestinationTables';
DESTINATION_PATH = 'gs://bucketname/foldername/'
query_data = {
'projectId': '#####',
'configuration': {
'extract': {
'sourceTable': {
'projectId': PROJECT_ID,
'datasetId': DATASET_ID,
'tableId': #####,
},
'destinationUris': [DESTINATION_PATH + my-files +'-*.gz'],
'destinationFormat': 'CSV',
'printHeader': 'false',
'compression': 'GZIP'
}
}
}
query_response = query_request.insert(projectId=constants.PROJECT_NUMBER,
body=query_data).execute()
提前致谢。
【问题讨论】:
标签: google-bigquery google-cloud-storage export-to-csv