如何安排从 BigQuery 表导出到 Cloud Storage?

2023-11-29

我已在 BigQuery 中成功安排查询,并将结果保存为数据集中的表。我看到很多关于安排数据传输的信息in到 BigQuery 或 Cloud Storage,但我没有找到任何有关安排导出的信息from尚未将 BigQuery 表传输到 Cloud Storage。

是否可以安排将 BigQuery 表导出到 Cloud Storage,以便我可以进一步安排通过 Google BigQuery 数据传输服务将其 SFTP 发送给我?


没有用于安排 BigQuery 表导出的托管服务,但一种可行的方法是使用云功能和这个结合云调度器.

Cloud Function 将包含从 BigQuery 表导出到 Cloud Storage 所需的代码。有多种编程语言可供选择,例如Python, Node.JS, and Go.

云调度程序会发送一个HTTP定期调用cron格式转换为云函数,云函数反过来会被触发并以编程方式运行导出。

As an example更具体地说,您可以按照以下步骤操作:

  1. 创建云函数使用 Python 与HTTP trigger。要从代码中与 BigQuery 交互,您需要使用 BigQuery客户库。导入它from google.cloud import bigquery。然后,您可以在中使用以下代码main.py创建从 BigQuery 到 Cloud Storage 的导出作业:

        # Imports the BigQuery client library
        from google.cloud import bigquery
    
        def hello_world(request):
            # Replace these values according to your project
            project_name = "YOUR_PROJECT_ID" 
            bucket_name = "YOUR_BUCKET" 
            dataset_name = "YOUR_DATASET" 
            table_name = "YOUR_TABLE" 
            destination_uri = "gs://{}/{}".format(bucket_name, "bq_export.csv.gz")
    
            bq_client = bigquery.Client(project=project_name)
    
            dataset = bq_client.dataset(dataset_name, project=project_name)
            table_to_export = dataset.table(table_name)
    
            job_config = bigquery.job.ExtractJobConfig()
            job_config.compression = bigquery.Compression.GZIP
    
            extract_job = bq_client.extract_table(
                table_to_export,
                destination_uri,
                # Location must match that of the source table.
                location="US",
                job_config=job_config,
            )  
            return "Job with ID {} started exporting data from {}.{} to {}".format(extract_job.job_id, dataset_name, table_name, destination_uri)
    

    指定客户端库依赖项要求.txt文件 通过添加这一行:

    google-cloud-bigquery
    
  2. 创建云调度程序作业。设置频率你希望 要执行的作业。例如,将其设置为0 1 * * 0每周日凌晨 1 点运行该作业一次。这定时任务工具在实验时非常有用 与 cron 调度。

    Choose HTTP as the Target,设置URL正如云 函数的URL(可以通过选择云函数找到) 导航到“触发器”选项卡),并选择 HTTP 方法GET.

    创建后,按RUN NOW按钮,可以测试如何导出 行为。然而,在这样做之前,请确保默认 App Engine 服务帐户至少拥有 Cloud IAMroles/storage.objectCreator角色,否则操作可能会因权限错误而失败。默认 App Engine 服务帐户的形式为[email protected].

    如果您希望在不同的表上执行导出, 每次执行都有数据集和存储桶,但本质上使用相同的云功能,您可以使用 HTTPPOST方法 相反,并配置一个Body包含所述参数作为数据,其中 将被传递到云功能 - 不过,这意味着这样做 其代码有一些小的变化。

最后,当作业创建时,您可以使用云函数返回的job IDbq用于查看导出作业状态的 CLIbq show -j <job_id>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安排从 BigQuery 表导出到 Cloud Storage? 的相关文章

随机推荐

  • 如何防止ListView扩大窗口尺寸?

    我将 ListView 放在 View 的中间行 该视图包含在 SizeToContent 设置为 WidthAndHeight 的窗口中 ListView 最初是空的 但底层 ViewModel 在此过程中填充了此列表视图 中间的 Gri
  • 使用 Julia 和 gurobi 进行二次约束 MIQP

    这是试图回答以下问题 https matheducators stackexchange com questions 11757 small data sets with integral sample standard deviation
  • 函数参数传递和返回

    var foo bar function return this baz baz 1 function return typeof arguments 0 foo bar 为什么这段代码会返回undefined 我会假设arguments
  • 如何将 MOVE 用于以记录为元素且其上有动态数组字段的动态数组?

    我正在使用 Delphi Rio 我的程序有很多动态数组操作 为了提高一些长数组复制的速度 我尝试使用 Move 对于基本类型 实数 整数 的一维动态数组 我可以管理 Move 的使用 但对于以记录作为其元素的动态数组 并且该记录具有另一个
  • Python根据条件分割字符串

    如果逗号前面有某个正则表达式 我想使用逗号分隔符分割字符串 考虑我的字符串格式如下的情况 一堆可能有逗号的东西 FOO REGEX 其他可能有逗号的东西 FOO REGEX 我想用逗号分割字符串 但前提是它们前面有 FOO REGEX 一堆
  • 使用 ContentFlow (coverflow) 显示数据库图像 IllegalStateException 错误

    我目前正在使用第三方图像 coverflow http www jacksasylum eu ContentFlow 来显示保存在数据库中的图像 为此 我使用 Java JPA 和 Richfaces 我已经设置了一个图像 servlet
  • 添加 Excel 格式的最有效方法 - VBA

    我有一个宏 可以将数百行数据添加到 Excel 电子表格中 我从插入每行数据的循环中调用一个过程 每次插入该数据时 我都会应用该行的格式 然而 在测试过程中 我发现当我不逐行应用格式而是一次全部应用格式时 插入所有数据的速度可以快大约 3
  • 在Python OpenCV中访问IP摄像头

    如何访问我的网络摄像机流 显示标准网络摄像头流的代码是 import cv2 import numpy as np cap cv2 VideoCapture 0 while True ret frame cap read cv2 imsho
  • 当具体类包含其他接口时如何反序列化接口集合

    我目前面临的情况是 我得到了一个无法修改的 json 文件 并且我希望生成的反序列化类对于设计目的是通用的 首先是我的界面 public interface IJobModel string ClientBaseURL get set st
  • Git 合并混乱。 diff 显示差异,merge 表示没有差异

    我开始学习使用git 我遇到了一个我不明白的情况 存储库被从svn中取出 我在树枝上jacob 379尽一切努力 host git status On branch jacob 379 nothing to commit working d
  • 如何将“expo-splash-screen”与“expo-google-fonts”一起使用?

    初始屏幕使用异步操作等待 而字体包使用 自定义挂钩 useFonts 我猜 如何让启动屏幕等待谷歌字体加载 您可以使用以下方式加载字体loadAsync from expo fonts 并管理启动画面expo splash screen i
  • Drupal 7 术语路径在哪里?

    使用 Drupal 6 中的 pathauto 和 token 模块 您可以使用如下模式创建 url 别名 termpath raw title raw 然而 Drupal 7 中的情况并非如此 我知道 D7 仍处于 alpha 阶段 但
  • Junit @Rule 如何工作?

    我想为大量代码编写测试用例 我想了解JUnit的详细信息 Rule注释功能 以便我可以使用它来编写测试用例 请提供一些好的答案或链接 通过一个简单的示例详细描述其功能 规则用于添加适用于测试类中的所有测试的附加功能 但以更通用的方式 例如
  • 无法解析 XML blob

    我在对 azure 上的 dbs 进行身份验证时遇到问题 所有详细信息都是正确的 但是当我单击 连接 时 出现以下错误 TITLE Microsoft SQL Server Management Studio Error connectin
  • 单行检查列表中至少一项是否存在于另一个列表中? [复制]

    这个问题在这里已经有答案了 假设我有一个清单a 1 2 3 我想知道其中至少有一个数字是否存在于另一个列表中 如下所示 b 4 5 6 7 8 1 换句话说 我想知道列表中是否存在 1 2 或 3b 我现在可以做类似的事情 def func
  • 如何用Python实现一个最小的AJAX服务器?

    我想为 Python 程序创建一个非常简单的基于 HTML AJAX 的 GUI 所以前端是一个 HTML 页面 通过 AJAX 与程序进行通信 你能给我一个使用 python 的服务器端的最小实现吗SimpleHTTPServer Sim
  • 旋转 UIImage 并移动

    我已经搜索了堆栈溢出太多次 也发布了一个问题 但没有成功 我需要在我的拼贴应用程序中实现一个功能 用户可以旋转 uiimage 并将其作为旋转图像移动 知道如何做吗 如果需要 我会尝试所有这些 最近两天寻找它感到沮丧 首先 我使用 CGAf
  • 如何获取前台窗口的exe路径

    我想获取活动前台窗口的可执行文件的路径 我已经有了前台窗口的处理程序 DllImport user32 dll static extern IntPtr GetForegroundWindow IntPtr handlerAppActual
  • 使用 .setPaint(gradient) 调整大小时不重新绘制

    一旦我在代码中使用渐变 在调整大小时重新绘制就不会完成 我在调整大小时会得到类似的结果 已调整大小的黑色矩形 请参阅下面链接中的图像 当我停止调整大小时 所有内容都会再次绘制 但只有那时 如果我不使用g2d setPaint gradien
  • 如何安排从 BigQuery 表导出到 Cloud Storage?

    我已在 BigQuery 中成功安排查询 并将结果保存为数据集中的表 我看到很多关于安排数据传输的信息in到 BigQuery 或 Cloud Storage 但我没有找到任何有关安排导出的信息from尚未将 BigQuery 表传输到 C