第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何根據(jù)自定義參數(shù)在表名稱中使用類似 python 的字符串格式查詢

如何根據(jù)自定義參數(shù)在表名稱中使用類似 python 的字符串格式查詢

開心每一天1111 2023-12-12 15:52:41
所以我有幾個(gè)表格,其中包含每年的每種產(chǎn)品,表格如下: 2020product5, 2019product5, 2018product6等等。我在谷歌數(shù)據(jù)工作室中添加了兩個(gè)自定義參數(shù),分別命名為year和product_id,但無(wú)法在表名稱本身中使用它們。我之前使用過(guò)參數(shù)化查詢,但在類似的情況下,where product_id = @product_id但此設(shè)置僅在所有數(shù)據(jù)都在同一個(gè)表中時(shí)才有效,這不是我當(dāng)前的情況。在 python 中,我使用類似的字符串格式化程序f"{year}product{product_id}",但在這種情況下顯然不起作用...使用 Bigquery 默認(rèn)CONCAT和FORMAT函數(shù)沒有幫助,因?yàn)閮烧叨紩?huì)拋出以下驗(yàn)證錯(cuò)誤:Table-valued function not found: CONCAT at [1:15]那么,如何在基于自定義參數(shù)的表名稱中使用類似 python 的字符串格式來(lái)查詢 google data studio 中的 bigquery 表呢?
查看完整描述

1 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

經(jīng)過(guò)大量研究后,我(有點(diǎn))解決了這個(gè)問(wèn)題。事實(shí)證明,這是一個(gè)數(shù)據(jù)庫(kù)級(jí)功能,可以動(dòng)態(tài)查詢模式級(jí)實(shí)體(例如表名)。BigQuery 不支持表名稱內(nèi)的格式設(shè)置,例如無(wú)法直接查詢相關(guān)表(例如2020product5、2019product5、 )。2018product6但是,它確實(shí)有一個(gè) TABLE_SUFFIX 函數(shù),允許您動(dòng)態(tài)訪問(wèn)表,因?yàn)楸砻母奈挥诒淼哪┪?。(此功能還允許進(jìn)行 dateweise 分區(qū),并且許多使用 BQ 作為數(shù)據(jù)接收器的工具都可以利用此功能。因此,如果您使用 BQ 作為數(shù)據(jù)接收器,則很有可能您的原始數(shù)據(jù)源已經(jīng)在這樣做)。因此,像 ( product52020, product52019, product62018) 這樣的表名稱也可以動(dòng)態(tài)訪問(wèn),當(dāng)然也可以使用以下命令從 Data Studio 訪問(wèn):


SELECT * FROM `project_salsa_101.dashboards.product*` WHERE _table_Suffix = CONCAT(@product_id,@year) 

PS:使用 python 創(chuàng)建一個(gè)臟腳本,該腳本循環(huán)遍歷產(chǎn)品和表,并復(fù)制并創(chuàng)建新的腳本,如下所示:(添加帶有格式化字符串的腳本,因此對(duì)于任何有這種情況的人來(lái)說(shuō),只需付出一定的努力,它可能會(huì)很有用)


import itertools

credentials = service_account.Credentials.from_service_account_file(

    'project_salsa_101-bq-admin.json')

project_id = 'project_salsa_101'

schema = 'dashboards'

client = bigquery.Client(credentials= credentials,project=project_id)


for product_id, year in in itertools.product(product_ids, years): 

    df = client.query(f"""

            SELECT *  FROM `{project_id}.{schema}.{year}product{product_id}`

            """).result().to_dataframe()

    df.to_gbq(project_id = project_id,

                destination_table = f'{schema}.product{product_id}{year}',

                credentials = service_account.Credentials.from_service_account_file(

                    'credentials.json'),

                if_exists = 'replace')

    client.query(f"""

            DROP TABLE `{project_id}.{schema}.{year}product{product_id}`""").result()


查看完整回答
反對(duì) 回復(fù) 2023-12-12
  • 1 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)