在Amazon Redshift中创建Python 2.7 UDF以在Postgres上执行

时间:2018-04-24 18:26:39

标签: python postgresql amazon-redshift geocoding shapely

我试图在Redshift上创建一个用SQL调用的函数。我查看了文档,但我相信我编写代码可能是一个问题。

该函数的目的是使用Python 2.7包Shapely将EWKT(扩展的已知文本https://en.wikipedia.org/wiki/Well-known_text)转换为纬度和经度。

在Redshift上安装了Shapely包

我已成功使用python运行我的代码;但是,当我尝试创建要在Redshift中调用的函数时,我无法按预期执行代码。我认为我编写redshift代码的方法是不正确的,但我不知道为什么 - 请你帮我解决这个问题?

**

  • 尝试使用Redshift:

**

CREATE OR REPLACE FUNCTION schema.latlong(a VARCHAR) RETURNS VARCHAR STABLE as $$

def latlong(z):
  import pandas as pd
  from shapely import wkb
  hexlocation = z['store_geo_location']
  point = wkb.loads(hexlocation, hex=True)
  longitude = point.x
  latitude = point.y
  a = str(latitude) +','+str(longitude)
return(a)

$$ LANGUAGE plpythonu;

**

  • 示例代码在Python中运行:

**

from shapely import wkb
import pandas as pd

def f_latlong(z):
    hexlocation = z
    point = wkb.loads(hexlocation, hex=True)
    longitude = point.x
    latitude = point.y
#     return longitude, latitude     
    a = str(latitude) +','+str(longitude)
    return(a)

0 个答案:

没有答案