在shell脚本或大查询中创建多个视图

2024-04-20 04:54:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当我从MySQL导出数据到BigQuery时,有些数据被复制了。为了解决这个问题,我考虑使用行号创建这个表的视图。执行此操作的查询如下所示。问题是我的数据集中有很多表是重复的,可能当我添加新表并将它们导出到大查询时,它们会有重复的数据,而且我不想每次在数据集中添加新表时都创建这种类型的查询(我希望在导出新表的同时,创建一个该表的视图)。是否可以在查询的循环中执行此操作(例如“对于数据集中的每个表,执行此操作”)?这是否可以在shell脚本中完成(当将表导出到大查询时,为该表创建一个视图)?在最后一种情况下,这在python中可以实现吗?在

SELECT
  * EXCEPT (ROW_NUMBER)
FROM 
(
  SELECT
    *, ROW_NUMBER() OVER (PARTITION BY id order by updated_at desc) ROW_NUMBER
  FROM dataset1.table1
)
WHERE ROW_NUMBER = 1

Tags: 数据from脚本视图类型numbermysql情况
1条回答
网友
1楼 · 发布于 2024-04-20 04:54:54

这肯定可以在python中完成。 我建议使用gcloudpython库https://github.com/GoogleCloudPlatform/google-cloud-python

所以我觉得你的剧本应该是这样的

from google.cloud import bigquery
from google.cloud.bigquery import Dataset

client = bigquery.Client()

dataset_ref = client.dataset('dataset_name')
tables = list(client.list_tables(dataset_ref))

for tab in tables:
     table = dataset.table("v_{}".format(tab.name))
     table.view_query = "select * from `my-project.my.dataset.{}`".format(tab.name)
     #if creating legacy view comment out next line
     table.view_query_legacy_sql = False
     table.create()

相关问题 更多 >