Как указать LIBREF в SASPy при преобразовании таблицы SAS в Python Dataframe
Пожалуйста, посмотрите изображение ниже для моей схемы сервера SAS. Я хотел бы вытащить верхний стол2020_01_SETTLEMENTS
и поместите его во фрейм данных Python. Я успешно установил соединение между Python и сервером SAS. У меня есть следующий код ниже, но я считаю, что ошибаюсь вLIBREF
часть sasdata2dataframe
функция. Я также перечислил сообщение об ошибке ниже. Большое спасибо всем, кто может сказать мне, где я ошибся. Я также связал справочный материал с этой функцией здесь:
https://sassoftware.github.io/saspy/api.html
Код:
import saspy
import pandas as pd
from IPython.display import HTML
sas = saspy.SASsession(cfgfile=r'C:\Users\P1\Python_Code\sascfg_personal.py')
sasdata2dataframe(table: str = '2020_01_SETTLEMENTS', libref: str = 'BANKMKR', dsopts: dict = None, method: str = 'MEMORY')
Сообщение об ошибке:
File "<ipython-input-18-41bb6a0902ac>", line 1
sasdata2dataframe(table: '2020_01_SETTLEMENTS', libref: str = 'BANKMKR', dsopts: dict = None, method: str = 'MEMORY')
^
SyntaxError: invalid syntax
2 ответа
Хотя, поскольку это не указано в руководстве, я в конечном итоге использовал следующий код, и он сработал. Я только что изменилсяtable: str = '2020_01_SETTLEMENTS'
к table='2020_01_SETTLEMENTS'
tempTable = sas.sasdata2dataframe(table='2020_01_SETTLEMENTS', libref='BANKMKR')
Я видел это только сегодня и подумал, что пролил свет на то, что вижу в этом треке. И я пытаюсь помочь, а не быть придурком, поэтому, пожалуйста, прочтите это так (я так написал). Проблема здесь просто в знании языка; python в этом случае. Документ API - это автоматически созданный раздел, основанный на самом коде; определения методов и строки документации. Итак, показанные методы являются определениями (сигнатурами), а не примерами их вызова. Это может помочь, а может и не помочь, но вот документ об определениях функций (методов): https://docs.python.org/3.5/reference/compound_stmts.html
Например, в C вы можете определить функцию как
int max(int num1, int num2) { … },
но это не пример того, как вызвать его из исходного кода; это определение функции, которое сообщает вам все, что вам нужно знать о ней, чтобы иметь возможность ее вызывать. Если вы попытаетесь закодировать определение как его вызов, вы получите синтаксическую ошибку от компилятора, такую же, как и синтаксическая ошибка, которую Python дал при попытке закодировать a: вместо = в вызове функции.
значение = int max(int 3, int 5);
это синтаксическая ошибка. Правильный способ вызвать эту функцию:
значение = макс (3,5);
То же самое и с любым языком. Определение функции сообщает вам о функции; это не пример вызова его из вашего кода. Из определения функции python можно почерпнуть много информации; какие пармы требуются или нет, какие позиционные, ключевые или и то, и другое. есть ли дефолты и какие они есть, или нет. Если parm имеет определенный тип данных или нет. Вся эта информация есть в определении. Но чтобы выполнить вызов из вашего кода, вы используете эту информацию, чтобы закодировать ее так, как вы хотите ее назвать, с правильным синтаксисом языка. Надеюсь, это имеет смысл. Опять же, просто пытаюсь помочь.