- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有不到 100M 的数据记录,我希望通过对字段进行非规范化来转换它们,然后输入到日期分区 GBQ 表中。日期可以追溯到 2001 年。
我曾希望我可以用 Python 对其进行转换,然后直接从脚本中使用 GBQ 来完成此操作,但在阅读了这篇文章之后,尤其是 this document创建日期分区表似乎并不直接。我正在寻找正确的方向。
有没有可以执行此操作的 python 脚本的工作示例?或者不可能通过 Python 来做?或者有人可以指出我的方向的另一种方法吗?
更新
我不确定我是否遗漏了什么,但创建的表似乎是根据我创建表时的插入日期进行分区的,我想按现有数据集中设置的日期进行分区。无论如何我都看不到改变这一点。
这是我正在尝试的:
import uuid
import os
import csv
from google.cloud import bigquery
from google.cloud.bigquery import SchemaField
from google.cloud.bigquery import Client
from google.cloud.bigquery import Table
import logging #logging.warning(data_store+file)
import json
import pprint
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path to service account credentials'
client = bigquery.Client()
dataset = client.dataset('test_dataset')
dataset.create()
SCHEMA = [
SchemaField('full_name', 'STRING', mode='required'),
SchemaField('age', 'INTEGER', mode='required'),
]
table = dataset.table('table_name', SCHEMA)
table.partitioning_type = "DAY"
table.create()
rows = [
('bob', 30),
('bill', 31)
]
table.insert_data(rows)
是否可以修改它以在我创建表和插入数据时控制分区?
更新 2
原来我不是在寻找表分区,对于我的用例来说,只需将日期序列附加到我的表名的末尾就足够了,然后按照以下行进行查询:
SELECT * FROM `dataset.test_dataset.table_name_*`
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170702'
我不知道这在技术上是否仍然是分区,但据我所知它具有相同的好处。
最佳答案
更新到最新版本(google-cloud-biquery==1.4.0
)
from google.cloud import bigquery
client = bigquery.Client()
dataset_ref = client.dataset('test_dataset')
table_ref = dataset_ref.table('test_table')
SCHEMA = [
SchemaField('full_name', 'STRING', mode='required'),
SchemaField('age', 'INTEGER', mode='required'),
]
table = bigquery.Table(table_ref, schema=SCHEMA)
if partition not in ('DAY', ):
raise NotImplementedError(f"BigQuery partition type unknown: {partition}")
table.time_partitioning = bigquery.table.TimePartitioning(type_=partition)
table = client.create_table(table) # API request
关于python - 如何在 GBQ 中创建日期分区表?你会用 python 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46425733/
有谁知道是否可以对使用 GBQ 窗口函数得出的结果进行任何算术运算? 例如,我可以使用如下伪代码将 row_number 增加 100(某个数字): SELECT 100 + ROW_NUMBER()
我需要使用 Pandas/pandas-gbq 在 Python 中创建一个简单的 ETL 管道,将给定日期范围内的每一天从 BigQuery 读取到 Pandas 数据帧中,并根据查询结果创建单独的
我正在尝试截断 GBQ 中的现有表,但运行以下命令时失败。是否有任何特定的命令或语法可以做到这一点。我查看了 GBQ 文档,但没有运气。 TRUNCATE TABLE [dw_test.test];
我问这个问题是因为我没有收到 Google 论坛或 GCP 支持团队的回复。 我已将产品 Google BigQuery (GBQ) 链接到 Google Analytics (GA) 以获取 Vie
探索Loading data to GBQ with POST request 我还没有找到如何重写现有表(当前示例将数据附加到现有表或创建新表(如果不存在))。我发现可以使用 Web 控制台来完成此
我有不到 100M 的数据记录,我希望通过对字段进行非规范化来转换它们,然后输入到日期分区 GBQ 表中。日期可以追溯到 2001 年。 我曾希望我可以用 Python 对其进行转换,然后直接从脚本中
我想使用 Pandas library to read BigQuery数据。如何获得较大的结果? 对于非 Pandas BigQuery 交互,这可以像 this 这样实现. 当前使用 Pandas
我使用下面的代码来获取列列表,它工作正常。 table_ref = dataset_ref.table(table_name) table = client.get_table(table_ref)
我对 GBQ 比较陌生。我正在尝试在 IICS 中创建一个映射以从 GBQ 复制一个 View 以在 GBQ 中创建一个表。此时我没有进行任何转换,只是将源复制到目标。我收到以下错误 -[错误] [Q
我目前在 ECS 上使用 Airflow 1.10.9。我在我的 requirements.txt 文件中明确指定了 Airflow 版本,如下所示。 apache-airflow[aws,celer
我正在向 GCP AI 平台培训服务提交培训作业。我的训练数据集(同一 GCP 项目中 BigQuery 表上的大约 4000 万行)需要在训练工作开始时作为 Pandas 数据框进行预处理,因此我尝
是否可以运行如下命令: bq extract 并使用标志在没有 csv header 的情况下导出?类似于提到的API标志here ,但不使用 API - 只需通过 bq extract... 最
我试图通过 pandas 将一个表附加到另一个表,从 BigQuery 中提取数据并将其发送到另一个 BigQuery 数据集。虽然表架构完全相同,但我收到错误““请验证结构和”pandas_gbq.
在 Google Storage 中,我的文件夹结构如下: my_bucket---+--file_1.gz # 1MB | +--file_
我是一名优秀的程序员,十分优秀!