想请教个机器学习PAI问题?有个地方想优化一下,暂时没想到什么好的解决办法?-[阿里云_云淘科技]

想请教个机器学习PAI问题?有个地方想优化一下,暂时没想到什么好的解决办法?
关于hitrate的计算。。
base表是用户各种行为的序列。希望把后面每个版本的user_emb都加进这一个表里。
新做一版就add col,
v_i版本的 任务增加了user_emb_vi列和关联的数据,但是vi版本不知道v_j,(i<j),
v_j版本也只是增加user_emb_vj列和关联的数据。
这有什么办法实现吗?
不然改v_j版本的时候,要把前面所有版本的insert部分都加上后面的版本的列名

以下为热心网友提供的参考意见

这个问题可以通过使用SQL的UNION ALL操作来解决。首先,你需要为每个版本的user_emb创建一个子查询,然后将这些子查询用UNION ALL连接起来。这样,你就可以得到一个包含所有版本的user_emb的表。

以下是一个示例:

-- 假设v_i和v_j是两个版本号
SELECT user_emb_vi, ... -- 其他列名
FROM base_table
WHERE version = v_i;

UNION ALL

SELECT user_emb_vj, ... -- 其他列名
FROM base_table
WHERE version = v_j;

这样,你就可以得到一个包含所有版本的user_emb的表,而不需要手动添加每一列。当你需要添加新的版本时,只需将新的子查询添加到UNION ALL后面即可。

以下为热心网友提供的参考意见

根据您的描述,您希望在更新不同版本的user_emb时,能够自动将新添加的列添加到base表中。为了实现这个目标,您可以使用以下方法:

  1. 首先,为每个版本创建一个函数,该函数将根据当前版本生成相应的user_emb列名和关联数据。例如,对于v_i版本,您可以创建一个名为generate_user_emb_vi的函数,该函数将返回一个包含user_emb_vi列名和关联数据的字典。

  2. 然后,在更新base表时,使用这些函数动态地生成需要添加的列名和关联数据。这样,当您更新v_j版本时,就不需要手动修改前面的插入部分了。

以下是一个简单的示例代码:

# 假设这是您的原始base表
base_table = ...

# 定义一个函数,根据版本生成user_emb列名和关联数据
def generate_user_emb(version):
    if version == 'v_i':
        return {
            'user_emb_vi': '...',
            'associated_data': '...'
        }
    elif version == 'v_j':
        return {
            'user_emb_vj': '...',
            'associated_data': '...'
        }
    else:
        raise ValueError(f"Unsupported version: {version}")

# 更新base表
for version in ['v_i', 'v_j']:
    user_emb_info = generate_user_emb(version)
    base_table[version] = user_emb_info['user_emb']
    base_table[version + '_associated_data'] = user_emb_info['associated_data']

# 现在,base表已经包含了所有版本的user_emb列和关联数据

这样,您就可以在不修改前面插入部分的情况下,自动将新添加的列添加到base表中。

以下为热心网友提供的参考意见

添加新的partition比较好,离线表不像数据库增加列之后,同一行的数据可以关联起来。 ,此回答整理自钉群“【EasyRec】推荐算法交流群”

本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/19384.html

(0)
匿名
上一篇 2024年1月4日
下一篇 2024年1月4日

相关推荐

新手站长从“心”出发,感谢16年您始终不离不弃。