是否可以使用DataflowPipelineRunner运行器(异步)提交X个单独的作业/管道,并让作业共享工作池,而不是启动和拆除单个作业/管道?
我们的一个Dataflow作业将其输出写入BigQuery.我对如何在幕后实现这一点的理解是,Dataflow实际上将结果(分片)以JSON格式写入GCS,然后启动BigQuery加载作业以导入该数据.
但是,我们注意到,在作业完成后,无论是成功还是失败,都不会删除某些JSON文件.错误消息中没有警告或建议不会删除文件.当我们注意到这一点时,我们看了一下我们的存储桶,它有几百个来自失败作业的大型JSON文件(主要是在开发期间).
我原以为Dataflow应该处理任何清理,即使作业失败,当它成功时,肯定会删除这些文件.在作业完成后留下这些文件会产生大量的存储成本!
这是一个错误吗?
作业的示例作业ID"成功"但在GCS中留下了数百个大文件:2015-05-27_18_21_21-8377993823053896089



根据定价页面,2016年1月1日将为BigQuery引入新的分层定价模型.
我们希望能够预测这可能对我们的应用程序产生的任何成本影响.因此,我们已经查看了一些更复杂的查询的JSON响应,以查看为其分配了什么"层".
该billingTier层在JSON响应中清晰可见.
200 OK
- Show headers -
{
"kind": "bigquery#job",
[...]
"totalBytesProcessed": "45319172942",
"query": {
"totalBytesProcessed": "45319172942",
"totalBytesBilled": "45319454720",
"billingTier": 1,
"cacheHit": false
}
Run Code Online (Sandbox Code Playgroud)
这是仅在2016年1月1日新定价模型启动之前分配的默认层(第1层),还是分配给查询的层的真实指示?
我的 Google Analytics(分析)数据分布在多个 BigQuery 数据集中,所有数据集都使用相同的架构。我想使用 BigQuery 的新标准 SQL 方言同时查询这些数据集中的多个表。我知道我可以查询单个数据库中的多个表,如下所示:
FROM `12345678`.`ga_sessions_2016*` s
WHERE s._TABLE_SUFFIX BETWEEN '0501' AND '0720'
Run Code Online (Sandbox Code Playgroud)
我不明白的是如何不仅查询12345678而且23456789同时查询。
我的一些查询返回billingTierLimitExceeded错误并进行故障排除,这会导致我发送文档,告诉我更改查询作业的配置.
我configuration.query.maximumBillingTier在REST API中找到了它,但没有找到Ruby客户端库.
如何configuration.query.maximumBillingTier使用Ruby SDK进行设置?
我们在加载到BigQuery时尝试使用glob模式,例如:
gs://<bucket_name>/Network*Impressions_12345_20150201*
Run Code Online (Sandbox Code Playgroud)
我们的存储桶中有"..NetworkImpressions_ .."和"..Network Backfill Impressions_ ..",因此我们使用第一个'*'来获取这两种类型的文件.但BQ borks:
"未找到:URI gs:// backup-gdfp-7415/Network*Impressions_232503_20150101_20*"
文件肯定存在.如果我们删除第一个'*'它就可以正常工作(当我们明确指定两种类型时).
这是我们尝试使用该模式的失败加载作业的作业ID:job_LXNGEAeWsaU9HyFgcCCJMHu8YtY
我原以为这应该可以用BigQuery实现吗?
我们有一个从 BigQuery 表读取的管道。调用getF()TableRow 上的方法应该List<TableCell>为该行返回 a 。但它返回null。
为什么getF()返回null?
@Override
public void processElement(ProcessContext c) throws Exception {
TableRow aRow = context.element();
List<TableCell> tableCells = aRow.getF(); //This returns null!
}
Run Code Online (Sandbox Code Playgroud) 在我的数据流的管道,我设置字段impressions_raw作为Long一个com.google.api.services.bigquery.model.TableRow对象:
在我的管道中,我读了TableRow回来.但是,而不是一个Long,我回来了Integer.
但是,如果我明确地将值设置为Long大于Integer.MAX_VALUE,例如30亿的值,那么我回来了Long!
似乎Dataflow SDK正在进行某种类型的检查优化.
因此,如果不进行丑陋的类型检查,应该如何以编程方式处理此问题?(也许我错过了一些明显的事)
如何以编程方式(例如使用 Java 或 SQL)列出 BigQuery 中的所有用户定义函数?
我有一张名为:结果的表 我正在使用 BigQuery 从 GA 中选择数据
SELECT
Date,
totals.pageviews,
h.transaction.transactionId,
h.item.itemQuantity,
h.transaction.transactionRevenue,
totals.bounces,
fullvisitorid,
totals.timeOnSite,
device.browser,
device.deviceCategory,
trafficSource.source,
channelGrouping,
h.page.pagePath,
h.eventInfo.eventCategory,
device.operatingSystem
FROM
`atomic-life-148403.126959513.ga_sessions_*`,
UNNEST(hits) AS h
WHERE
_TABLE_SUFFIX BETWEEN REPLACE(CAST(DATE_ADD(CURRENT_DATE(), INTERVAL -1 YEAR) AS STRING), '-','')
AND CONCAT('intraday_', REPLACE(CAST(DATE_ADD(CURRENT_DATE(), INTERVAL 0 DAY) AS STRING), '-',''))
ORDER BY
date DESC
Run Code Online (Sandbox Code Playgroud)
有一些记录重复。如何删除表中的重复记录?