在 google bigquery 中,如何使用 javascript UDF 使用 google python 客户端
In google bigquery, how to use javascript UDF using google python client
我正在使用标准 SQL 和 javascript UDF 在 bigquery 中编写查询。我可以使用 WebUI 和 bigquery 命令行工具实现此功能,但我的要求是使用 google python 客户端进行此查询。无法实现这一点。请有人帮忙。
from google.cloud import bigquery
bigquery_client = bigquery.Client()
client = bigquery.Client()
query_results = client.run_sync_query("""
CREATE TEMPORARY FUNCTION CategoriesToNumerical(a array<STRING>,b array<STRING>)
RETURNS string
LANGUAGE js AS """
var values = {};
var counter = 0;
for(i=0;i<a.length;i++)
{ var temp;
temp = a[i];
a[i] = counter;
values[temp] = counter;
counter ++;
}
for(i=0;i<b.length;i++)
{
for(var key in values)
{
if(b[i] == key)
{
b[i] = values[key];
}
}
}
return b;
""";
SELECT
CategoriesToNumerical(ARRAY(SELECT DISTINCT ProspectStage from lsq.lsq_dest),ARRAY(SELECT ProspectStage from lsq.lsq_dest)) as prospectstageds
;""")
query_results.use_legacy_sql = False
query_results.run()
page_token = None
while True:
rows1, total_rows, page_token = query_results.fetch_data(
max_results=100,
page_token=page_token)
for row1 in rows1:
print "row",row1
if not page_token:
break
这不适用于 me.Please 谁能帮助我解决这个问题。
问题似乎是您这里有 2 组相互冲突的“””。将其中一组替换为三重“”,代码应该可以工作。
所以不用
query_results = client.run_sync_query("""
CREATE TEMPORARY FUNCTION CategoriesToNumerical(a array<STRING>,b array<STRING>)
RETURNS string
LANGUAGE js AS """
javacript code
"""
SELECT *
FROM
"""
写
query_results = client.run_sync_query('''
CREATE TEMPORARY FUNCTION CategoriesToNumerical(a array<STRING>,b array<STRING>)
RETURNS string
LANGUAGE js AS """
javacript code
"""
SELECT *
FROM
'''
我正在使用标准 SQL 和 javascript UDF 在 bigquery 中编写查询。我可以使用 WebUI 和 bigquery 命令行工具实现此功能,但我的要求是使用 google python 客户端进行此查询。无法实现这一点。请有人帮忙。
from google.cloud import bigquery
bigquery_client = bigquery.Client()
client = bigquery.Client()
query_results = client.run_sync_query("""
CREATE TEMPORARY FUNCTION CategoriesToNumerical(a array<STRING>,b array<STRING>)
RETURNS string
LANGUAGE js AS """
var values = {};
var counter = 0;
for(i=0;i<a.length;i++)
{ var temp;
temp = a[i];
a[i] = counter;
values[temp] = counter;
counter ++;
}
for(i=0;i<b.length;i++)
{
for(var key in values)
{
if(b[i] == key)
{
b[i] = values[key];
}
}
}
return b;
""";
SELECT
CategoriesToNumerical(ARRAY(SELECT DISTINCT ProspectStage from lsq.lsq_dest),ARRAY(SELECT ProspectStage from lsq.lsq_dest)) as prospectstageds
;""")
query_results.use_legacy_sql = False
query_results.run()
page_token = None
while True:
rows1, total_rows, page_token = query_results.fetch_data(
max_results=100,
page_token=page_token)
for row1 in rows1:
print "row",row1
if not page_token:
break
这不适用于 me.Please 谁能帮助我解决这个问题。
问题似乎是您这里有 2 组相互冲突的“””。将其中一组替换为三重“”,代码应该可以工作。
所以不用
query_results = client.run_sync_query("""
CREATE TEMPORARY FUNCTION CategoriesToNumerical(a array<STRING>,b array<STRING>)
RETURNS string
LANGUAGE js AS """
javacript code
"""
SELECT *
FROM
"""
写
query_results = client.run_sync_query('''
CREATE TEMPORARY FUNCTION CategoriesToNumerical(a array<STRING>,b array<STRING>)
RETURNS string
LANGUAGE js AS """
javacript code
"""
SELECT *
FROM
'''