使用gcs和bigquery的包
moovai的Python项目详细描述
Moovai工具箱
此存储库包含可重用代码以加快开发。 要使用Repository,请确保使用的是Python3.6。
安装:
要使用此软件包,请使用pip安装:
pipinstallmoovai
谷歌云:
此文件夹包含处理gcp资源的代码。 在使用这里的方法之前,您需要通过gcp的身份验证。 如果您使用的是服务帐户,并且有密钥json文件:
- 在Linux或MacOS上
exportGOOGLE_APPLICATION_CREDENTIALS="[PATH]"
- 在Windows上:
setGOOGLE_APPLICATION_CREDENTIALS=[PATH]
云存储
在使用这里的代码之前,首先确保你在地面军事系统上有一个桶。如果没有,就创建一个。
上传至地面军事系统:
将本地文件上载到Google云存储上的文件夹。然后在本地删除该文件。
参数:
- 文件:必需:[string]要上载到Google云存储的本地文件路径。
- bucket_name:必选:[string]存储桶的名称。
- 文件夹:必选:[string]要在GCS上上载文件的文件夹路径。
返回:上传文件的gcs uri
示例用法:
frommoovai.google_cloudimportcloud_storagefile="/path/to/my/file.txt"bucket_name="my_bucket"folder="Folder/Subfolder/"cloud_storage.upload_to_gcs(file,bucket_name,folder)# returns "gs://my_bucket/Folder/Subfolder/file.txt"
下载文件
将文件从google云存储下载到本地磁盘。
参数:
- gcs_uri:必需。[字符串]要下载的位于谷歌云存储上的文件的uri
返回:无。GCS文件在本地下载。
示例用法:
frommoovai.google_cloudimportcloud_storagegcs_uri="gs://my_bucket/Folder/Subfolder/my_file.txt"cloud_storage.download_file_gcs(gcs_uri)# file "my_file.txt" downloaded locally
大查询
从json获取模式:
获取schema.json文件并将其转换为与bigquery兼容的架构文件。
参数:
- 架构路径:必需。[string]指向schema.json文件的路径。
返回:要插入bigquery上载作业的架构。
示例用法:
frommoovai.google_cloudimportbigqueryschema_file="/path/to/my/schema.json"bigquery.get_schema_from_json(schema_file)
从csv获取模式
获取包含数据的csv文件并从文件中提取架构。 建议只使用bigquery的自动检测模式功能。作为最后手段。
参数:
- csv_文件路径:必需。[字符串]csv文件的路径。
返回:要插入bigquery上载作业的架构。
示例用法:
frommoovai.google_cloudimportbigquerycsv_file="/path/to/my/file.csv"bigquery.get_schema_from_csv(csv_file)
将本地文件上载到bq:
将本地文件上载到bigquery。架构路径和架构是可选参数。它们是相互排斥的,如果你想的话只提供一个。
参数:
- 文件:必需。[字符串]要上载的本地csv文件的路径
- 数据集ID:必需。[字符串]bigquery数据集的名称。
- 表ID:必需。[字符串]要查询的bigquery表的名称。
- 架构路径:可选。[字符串]schema.json文件的路径。
- 架构:可选。[string]架构与bigquery兼容。
- 覆盖:可选。[bool]默认为false。如果设置为true,bigquery将覆盖表,否则将向表追加新数据。
返回:无。
示例用法:
frommoovai.google_cloudimportbigqueryfile="/path/to/my_file.csv"dataset_id="my_dataset_id"table_id="my_table_id"bigquery.upload_local_file_to_bq(file,dataset_id,table_id)
将“gcs”文件上载到“bq:
将文件从云存储上载到bigquery。架构路径和架构是可选参数。它们是相互排斥的,如果你想的话只提供一个。
参数:
- gcs_uri:必需。[string]要上载到bigquery的云存储上的csv文件的路径。
- 数据集ID:必需。[字符串]bigquery数据集的名称。
- 表ID:必需。[字符串]要查询的bigquery表的名称。
- 架构路径:可选。[字符串]schema.json文件的路径。
- 架构:可选。[string]架构与bigquery兼容。
- 覆盖:可选。[bool]默认为false。如果设置为true,bigquery将覆盖表,否则将向表追加新数据。
返回:无。
示例用法:
frommoovai.google_cloudimportbigquerygcs_uri="gs://my_bucket/Path/To/my_file.csv"dataset_id="my_dataset_id"table_id="my_table_id"bigquery.upload_local_file_to_bq(gcs_uri,dataset_id,table_id)
生成SQL查询:
生成用于查询bigquery表的sql查询字符串。
参数:
- 项目:必需。[字符串]项目ID
- 数据集ID:必需。[字符串]bigquery数据集的名称。
- 表ID:必需。[字符串]要查询的bigquery表的名称。
- 列:可选。[数组]要选择的列名列表。
- 条件:可选。[数组]要满足的条件列表。
返回:字符串。标准SQL查询字符串。
示例用法:
frommoovai.google_cloudimportbigqueryproject="my_project_id"dataset_id="my_dataset_id"table_id="my_table_id"bigquery.generate_sql_query(project,dataset_id,table_id)#returns "SELECT * FROM `project.dataset_id.table_id`" (return everything from table)columns=["col1","col2"]conditions=["Date >= TIMESTAMP('2019-05-01')","col3 < 3"]bigquery.generate_sql_query(project,dataset_id,table_id,columns=columns,conditions=conditions)#returns "SELECT col1, col2 FROM `project.dataset_id.table_id` WHERE Date >= TIMESTAMP('2019-05-01') AND col3 < 3" (returns col1 and col2 that meet the specified conditions)
从bq获取数据:
接受一个sql查询字符串(标准sql)并返回pandas数据框
参数:
- SQL_查询:必需。[字符串]表示要进行的查询的字符串。
返回:包含查询结果的pandas数据框。
示例用法:
frommoovai.google_cloudimportbigquerysql_query="SELECT * FROM `my_project.my_dataset.my_table`"bigquery.get_data_from_bq(sql_query)