обращается к кадрам данных из другой функции внутри класса

У меня есть класс, который содержит функции, которые подключаются к снежинке (используя коннектор снежинки) и выполняют очистку данных. Моя мысль заключалась в том, чтобы создать несколько функций для отдельной очистки данных.

Я определил одну переменную в функции с именем «work_data» под названием «self.calls», и я определил эту функцию как фреймворк данных pandas, и я хотел бы получить доступ к этому фрейму данных в другой функции.

Вот мой текущий процесс:

Сначала я инициализировал переменную в функции инициализации и пока сделал ее пустым списком. После того, как я запустил функцию "work_data" и попробую запустить функцию "finalized_data" ... но я получаю пустой список вместо фрейма данных panadas.

Вот мой код:

      class SnowReader:

    sql_pslink ='select * from xyz in xyz";'
    sql_account= 'select * from xyz in xyz;'
    sql_call = 'select * from xyz in xyz;'
    sql_sales = 'select * from xyz in xyz;'
    sql_address = 'select * from xyz in xyz;'

    def __init__(self) -> None:
        self.database = "xyz"
        self.username = INTEGRATION_USER
        self.password = SNOW_PASSWORD
        self.account = "xyz"
        self.warehouse = "xyz"
        self.role = "xyz"
        self.schema = "xyz"
        self.conn = self._connect_snow()
        self.calls = []

    def _connect_snow(self):
        try:
            self.conn = snowflake.connector.connect(
                user=self.username,
                password=self.password,
                account=self.account,
                warehouse=self.warehouse,
                database=self.database,
                role=self.role,
                schema=self.schema,
            )

            logger.info("You are connected to Snowflake")
        except Exception as ex:
            if ex.errno == 250001:
                logger.error(
                    f"Invalid username/password, please re-enter username and password.."
                )
                
    def work_data(self):
        if not self.conn:
            self._connect_snow()
        link = pd.read_sql(SnowReader.sql_pslink, self.conn)
        account = pd.read_sql(SnowReader.sql_account, self.conn)
        self.calls = pd.read_sql(SnowReader.sql_call, self.conn)
        sales = pd.read_sql(SnowReader.sql_sales, self.conn)
        Calls_merged = self.calls.groupby('xyz', as_index=False)['xyz'].count()
        Account_step1 = Calls_merged.merge(account,left_on='xyz', right_on='xyz', how="left" )
        Sales_merged = sales.groupby(['xyz'], as_index=False)['xyz'].count()
        Account_final = Sales_merged.merge(Account_step1,left_on='xyz', right_on='xyz', how="left" )
        Master_Address = pd.read_sql(SnowReader.sql_address, self.conn)
        return Account_final, Master_Address, link, self.calls
    
    def finalize_data(self):
        return self.calls


a, b, c, d= SnowReader().work_data()
display(a,b,c, d)
testt = SnowReader().finalize_data()
testt

0 ответов

Другие вопросы по тегам