最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

選擇合適的 Python 庫(kù)

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

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

安裝庫(kù)

要使用這些庫(kù),您需要安裝以下包:

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

運(yùn)行查詢

使用 GoogleSQL 語(yǔ)法

以下示例展示了如何使用 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 語(yǔ)法

如果需要使用舊版 SQL 語(yǔ)法,可以通過(guò)以下方式進(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ò)誤,可以通過(guò)以下方式增加連接池大?。?/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交互的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

永定县| 斗六市| 年辖:市辖区| 久治县| 广河县| 长白| 资中县| 宣恩县| 和顺县| 马山县| 荔浦县| 石柱| 常宁市| 泽州县| 恩施市| 油尖旺区| 平南县| 历史| 思南县| 沁源县| 嘉义市| 柏乡县| 株洲县| 天全县| 临沧市| 柞水县| 子洲县| 友谊县| 新龙县| 南溪县| 乐山市| 石门县| 德昌县| 临高县| 吴忠市| 永康市| 虞城县| 理塘县| 台东市| 类乌齐县| 出国|