我剛剛低於100M的數據記錄,我希望通過非規格化字段進行轉換,然後輸入到日期分區的GBQ表中。日期回到2001年。如何在GBQ中創建日期分區表?你可以使用python嗎?
我曾希望我可以用Python轉換它,然後直接從腳本中使用GBQ來完成這個任務,但是在閱讀完這篇文章後,看起來並不是那麼簡單創建日期分區表。我正在尋找一個正確的方向。
有沒有可以做到這一點的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'
我不知道這是否技術上仍然分區或不,但據我所見,它有相同的好處。
格雷厄姆 - 我無法控制從sdk中找到的分區。我已經在上面解釋過了。如果你可以建議所有,將不勝感激。乾杯 – goose
忽略我 - 結果我只是不知道我在問什麼。如果我只是將一個日期序列(即20170930)附加到每個日期數據的表名末尾,那麼我最終將按照能夠使用星號表示和_TABLE_SUFFIX BETWEEN'start'查詢表的方式來組織數據。 AND'finish' - 我現在認爲這不是技術上的分割,它們實際上是分開的表格,只是用一種方便的語法來查詢它們。再次感謝。 – goose
你有沒有在App Engine中使用https://googlecloudplatform.github.io/google-cloud-python/latest/bigquery/usage.html的例子?我找不到任何東西,table_to_make = bigquery.Table(table_ref,partitioning_type =「DAY」)不起作用:) – MarkeD