Создание Python 2.7 UDF в Amazon Redshift для выполнения на Postgres - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь создать функцию в Redshift для вызова с SQL. Я посмотрел на документацию, но я считаю, что то, как я пишу код, может быть проблемой.

Цель функции - преобразовать EWKT (расширенный хорошо известный текст https://en.wikipedia.org/wiki/Well-known_text) в широту и долготу с использованием пакета Python 2.7 Shapely.

Пакет Shapely был установлен в Redshift

Я успешно запустил свой код с использованием Python; однако, когда я пытаюсь создать функцию, которая будет вызываться в 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)
...