问题描述
我在Google Bigquery中有一个存储过程,已经与Tableau建立了连接。我可以看到数据集下的所有表,但看不到写在同一数据集中的存储过程。
我试图从Tableau页面中找到信息,但找不到任何信息。
任何人都可以解释一下他们是否曾经这样做过或者有可能这样做吗? 还是我应该最终在Tableau自定义查询中创建相同的存储过程?
解决方法
您可以连接到custom SQL Query as a Datasource in Tableau。
在这种情况下,您必须提供原始SQL,该SQL将为您返回一个以后可以使用的表,包括对存储过程的调用。
我不建议对Tableau中的原始SQL查询进行编码:为此使用Big Query Web界面(您可以从中查看所有存储过程,数据集和分区),然后在tableu中创建自定义SQL查询并粘贴查询就可以了。
要访问存储的过程(UDF),您需要在数据集名称之前添加数据名。
示例:
假设我们有一个像这样的简单UDF:
CREATE FUNCTION dataset.addFive(number int64) returns int64 as (number + 5);`
我们可以直接在Standard SQL中调用该函数。不需要调用(例如在Oracle中):
SELECT dataset.addFive(5) as udfCall ;
或
SELECT dataset.user_defined_function(column) as udfCall from dataset.Table ;
还有一个视图:
CREATE VIEW dataset.view_with_udf as
SELECT dataset.user_defined_function(column) as udfCall from dataset.Table ;
警告这仅适用于具有标准SQL的BigQuery(可能是您的情况)。
如果您的函数是使用BigQuery旧版SQL进行的(而您的UDF源在Cloud Storage中),则将无法使用。
在这种情况下:
- 您需要create the UDF in Big Query Standard SQL (使用create function语句Create function ..)。
- 然后,您可以通过直接调用RAW SQL或创建视图从RAW SQL访问它。