欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python與BigQuery進(jìn)行交互的代碼詳解

 更新時(shí)間:2025年04月08日 08:51:02   作者:程序員小jobleap  
在大數(shù)據(jù)分析的領(lǐng)域中,Google BigQuery 是一個(gè)被廣泛使用的云端數(shù)據(jù)倉庫解決方案,它由 Google Cloud 提供,并且專為處理大規(guī)模數(shù)據(jù)集、進(jìn)行快速的數(shù)據(jù)分析和復(fù)雜的查詢而設(shè)計(jì),本文給大家講解了如何使用Python與BigQuery進(jìn)行交互,需要的朋友可以參考下

選擇合適的 Python 庫

在使用 BigQuery 時(shí),您可以根據(jù)自己的需求選擇以下三個(gè) Python 庫:

  • BigQuery DataFrame:通過服務(wù)器端處理,支持 Pandas 和 Scikit-learn API,適合數(shù)據(jù)處理和機(jī)器學(xué)習(xí)任務(wù)。
  • pandas-gbq:客戶端庫,用于在 Python 中讀寫 BigQuery 數(shù)據(jù),適合簡單的數(shù)據(jù)處理和分析。
  • google-cloud-bigquery:Google 維護(hù)的庫,提供完整的 BigQuery API 功能,適合復(fù)雜的數(shù)據(jù)管理和分析。

安裝庫

要使用這些庫,您需要安裝以下包:

pip install --upgrade pandas-gbq 'google-cloud-bigquery[bqstorage,pandas]'

運(yùn)行查詢

使用 GoogleSQL 語法

以下示例展示了如何使用 pandas-gbq 和 google-cloud-bigquery 運(yùn)行 GoogleSQL 查詢:

pandas-gbq

import pandas

sql = """
    SELECT name
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state = 'TX'
    LIMIT 100
"""

# 使用標(biāo)準(zhǔn) SQL 查詢
df = pandas.read_gbq(sql, dialect="standard")

# 指定項(xiàng)目 ID
project_id = "your-project-id"
df = pandas.read_gbq(sql, project_id=project_id, dialect="standard")

google-cloud-bigquery

from google.cloud import bigquery

client = bigquery.Client()
sql = """
    SELECT name
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state = 'TX'
    LIMIT 100
"""

# 使用標(biāo)準(zhǔn) SQL 查詢
df = client.query(sql).to_dataframe()

# 指定項(xiàng)目 ID
project_id = "your-project-id"
df = client.query(sql, project=project_id).to_dataframe()

使用舊版 SQL 語法

如果需要使用舊版 SQL 語法,可以通過以下方式進(jìn)行:

pandas-gbq

import pandas

sql = """
    SELECT name
    FROM [bigquery-public-data:usa_names.usa_1910_current]
    WHERE state = 'TX'
    LIMIT 100
"""

df = pandas.read_gbq(sql, dialect="legacy")

google-cloud-bigquery

from google.cloud import bigquery

client = bigquery.Client()
sql = """
    SELECT name
    FROM [bigquery-public-data:usa_names.usa_1910_current]
    WHERE state = 'TX'
    LIMIT 100
"""
query_config = bigquery.QueryJobConfig(use_legacy_sql=True)

df = client.query(sql, job_config=query_config).to_dataframe()

使用 BigQuery Storage API 加速數(shù)據(jù)下載

BigQuery Storage API 可以顯著提高大型結(jié)果的下載速度。以下示例展示了如何使用此 API:

pandas-gbq

import pandas

sql = "SELECT * FROM `bigquery-public-data.irs_990.irs_990_2012`"

# 使用 BigQuery Storage API 加速下載
df = pandas.read_gbq(sql, dialect="standard", use_bqstorage_api=True)

google-cloud-bigquery

from google.cloud import bigquery

client = bigquery.Client()
sql = "SELECT * FROM `bigquery-public-data.irs_990.irs_990_2012`"

# 如果 BigQuery Storage API 已啟用,則自動(dòng)使用
df = client.query(sql).to_dataframe()

配置查詢

參數(shù)化查詢

以下示例展示了如何使用參數(shù)化查詢:

pandas-gbq

import pandas

sql = """
    SELECT name
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state = @state
    LIMIT @limit
"""
query_config = {
    "query": {
        "parameterMode": "NAMED",
        "queryParameters": [
            {
                "name": "state",
                "parameterType": {"type": "STRING"},
                "parameterValue": {"value": "TX"},
            },
            {
                "name": "limit",
                "parameterType": {"type": "INTEGER"},
                "parameterValue": {"value": 100},
            },
        ],
    }
}

df = pandas.read_gbq(sql, configuration=query_config)

google-cloud-bigquery

from google.cloud import bigquery

client = bigquery.Client()
sql = """
    SELECT name
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state = @state
    LIMIT @limit
"""
query_config = bigquery.QueryJobConfig(
    query_parameters=[
        bigquery.ScalarQueryParameter("state", "STRING", "TX"),
        bigquery.ScalarQueryParameter("limit", "INTEGER", 100),
    ]
)

df = client.query(sql, job_config=query_config).to_dataframe()

將 pandas DataFrame 加載到 BigQuery 表中

以下示例展示了如何將 pandas DataFrame 加載到 BigQuery 表中:

pandas-gbq

import pandas

df = pandas.DataFrame(
    {
        "my_string": ["a", "b", "c"],
        "my_int64": [1, 2, 3],
        "my_float64": [4.0, 5.0, 6.0],
        "my_timestamp": [
            pandas.Timestamp("1998-09-04T16:03:14"),
            pandas.Timestamp("2010-09-13T12:03:45"),
            pandas.Timestamp("2015-10-02T16:00:00"),
        ],
    }
)
table_id = "my_dataset.new_table"

df.to_gbq(table_id)

google-cloud-bigquery

from google.cloud import bigquery
import pandas

df = pandas.DataFrame(
    {
        "my_string": ["a", "b", "c"],
        "my_int64": [1, 2, 3],
        "my_float64": [4.0, 5.0, 6.0],
        "my_timestamp": [
            pandas.Timestamp("1998-09-04T16:03:14"),
            pandas.Timestamp("2010-09-13T12:03:45"),
            pandas.Timestamp("2015-10-02T16:00:00"),
        ],
    }
)
client = bigquery.Client()
table_id = "my_dataset.new_table"

# 確保正確的數(shù)據(jù)類型
job_config = bigquery.LoadJobConfig(
    schema=[
        bigquery.SchemaField("my_string", "STRING"),
    ]
)

job = client.load_table_from_dataframe(df, table_id, job_config=job_config)

# 等待加載完成
job.result()

pandas-gbq 的局限性

  • 數(shù)據(jù)集管理:不支持創(chuàng)建、更新或刪除數(shù)據(jù)集。
  • 數(shù)據(jù)格式支持:僅支持 CSV 格式,不支持嵌套值或數(shù)組值。
  • 表管理:不支持列出表、復(fù)制表或刪除表。
  • 數(shù)據(jù)導(dǎo)出:不支持直接導(dǎo)出數(shù)據(jù)到 Cloud Storage。

解決連接池錯(cuò)誤

如果遇到連接池錯(cuò)誤,可以通過以下方式增加連接池大?。?/p>

import requests

client = bigquery.Client()
adapter = requests.adapters.HTTPAdapter(pool_connections=128, pool_maxsize=128, max_retries=3)
client._http.mount("https://", adapter)
client._http._auth_request.session.mount("https://", adapter)

以上就是使用Python與BigQuery進(jìn)行交互的代碼詳解的詳細(xì)內(nèi)容,更多關(guān)于Python與BigQuery交互的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中pass的作用與使用教程

    Python中pass的作用與使用教程

    這篇文章主要給大家介紹了關(guān)于Python中pass的作用與使用教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python編程中對(duì)文件和存儲(chǔ)器的讀寫示例

    Python編程中對(duì)文件和存儲(chǔ)器的讀寫示例

    這篇文章主要介紹了Python編程中對(duì)文件和存儲(chǔ)器的讀寫示例,包括使用cPickle儲(chǔ)存器存儲(chǔ)對(duì)象的例子,需要的朋友可以參考下
    2016-01-01
  • Python計(jì)算多幅圖像柵格值的平均值

    Python計(jì)算多幅圖像柵格值的平均值

    這篇文章主要為大家詳細(xì)介紹了Python計(jì)算多幅圖像柵格值的平均值,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • MacbookM1 python環(huán)境配置隨筆

    MacbookM1 python環(huán)境配置隨筆

    這篇文章主要介紹了MacbookM1 python環(huán)境配置隨筆,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python發(fā)送郵件實(shí)例分享

    python發(fā)送郵件實(shí)例分享

    這篇文章主要為大家詳細(xì)介紹了python發(fā)送郵件實(shí)例分享,教大家如何實(shí)現(xiàn)郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 跟老齊學(xué)Python之玩轉(zhuǎn)字符串(2)更新篇

    跟老齊學(xué)Python之玩轉(zhuǎn)字符串(2)更新篇

    本文是玩轉(zhuǎn)字符串的續(xù)篇,繼續(xù)對(duì)字符串的連接方法進(jìn)行介紹,以及字符串復(fù)制、字符串長度、字符大小寫的轉(zhuǎn)換。非常不錯(cuò)的文章,希望對(duì)大家有所幫助
    2014-09-09
  • Python如何查看并打印matplotlib中所有的colormap(cmap)類型

    Python如何查看并打印matplotlib中所有的colormap(cmap)類型

    這篇文章主要介紹了Python如何查看并打印matplotlib中所有的colormap(cmap)類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 如何使用 python查詢Amazon DynamoDB

    如何使用 python查詢Amazon DynamoDB

    本文介紹了如何使用Python Boto3在Amazon DynamoDB上查詢DynamoDB 表、創(chuàng)建、列出和執(zhí)行其他 CRUD 活動(dòng)以及執(zhí)行其他維護(hù)任務(wù),本文給大家介紹的非常詳細(xì),需要的朋友參考下
    2023-06-06
  • python-tkinter之按鈕的使用,開關(guān)方法

    python-tkinter之按鈕的使用,開關(guān)方法

    今天小編就為大家分享一篇python-tkinter之按鈕的使用,開關(guān)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python dict的常用方法示例代碼

    Python dict的常用方法示例代碼

    這篇文章主要介紹了Python dict的常用方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論