【问题标题】:Snowpark-Python Dynamic JoinSnowpark-Python动态连接
【发布时间】:2023-01-27 00:28:26
【问题描述】:

我搜索了大量文档,试图找到我正在尝试做的事情的例子。我承认更大的问题可能是我缺乏 python 专业知识。所以我在这里伸出援手,希望有人能指出我正确的方向。我正在尝试创建一个基于函数参数动态查询表的 python 函数。这是我正在尝试做的一个例子:

def validateData(_ses, table_name,sel_col,join_col, data_state, validation_state):
 
    sdf_t1 = _ses.table(table_name).select(sel_col).filter(col('state') == data_state)
    sdf_t2 = _ses.table(table_name).select(sel_col).filter(col('state') == validation_state)
    df_join = sdf_t1.join(sdf_t2, [sdf_t1[i] == sdf_t2[i] for i in join_col],'full')
    return df_join.to_pandas()

这将被称为这样的:

df = validateData(ses,'table_name',[col('c1'),col('c2')],[col('c2'),col('c3')],'AZ','TX')

这个问题我在函数的第 5 行遇到了问题:

df_join = sdf_t1.join(sdf_t2, [col(sdf_t1[i]) == col(sdf_t2[i]) for i in join_col],'full')

我知道代码不正确,但我希望它能解释我正在尝试做的事情。如果有人对这是否可能或如何进行有任何建议,我将不胜感激。

【问题讨论】:

  • 如果您想使用直接完全连接 SQL,我可以提出一个解决方案 - 使用 SQL 构建带有过滤器的完全连接数据,然后执行您的操作...请告诉我这是否可行。
  • @KoushikRoy,您能否将我链接到您所指的示例?我肯定会尽我所能探索任何解决方案,但我不明白你的意思。先感谢您!
  • 在回答中添加了它。

标签: python join dynamic snowflake-cloud-data-platform


【解决方案1】:

与其加入数据框,我认为使用直接 SQL 并将数据拉入雪框并将其转换为熊猫数据框更容易。

from snowflake.snowpark import Session
import pandas as pd

#snow df creation using SQL
data = session.sql("select t1.col1, t2.col2, t2.col2 from mytable t1 full outer join mytable2 t2 on t1.id=t2.id where t1.col3='something'")

#Convert snow DF to Pandas DF. You can use this pandas data frame.
data= pd.DataFrame(data.collect())

【讨论】:

    猜你喜欢
    • 2022-08-22
    • 2022-06-18
    • 2023-04-11
    • 2022-07-25
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 2021-12-14
    • 2011-05-05
    相关资源
    最近更新 更多