r - Redshift 加入元数据表并选择列
问题描述
我用 table_name、col_name 和 data_type 创建了 pg_table_def 表的一个子集。我还添加了一个以“Y”为活动的列作为某些行的值。让我们将此表称为 config。表配置如下所示:
table_name column_name interaction_summary name_id tag_transaction name_id interaction_summary direct_preference bulk_sent email_image_click crm_dm web_le_click
现在我希望能够将此表中的表名映射到实际表并获取相应列的值。name_id 将是此处的键,可在所有表中使用。我的输出应如下所示:
name_id direct_preference email_image_click web_le_click
1 Y 1 2
2 N 1 2
解决方案需要是动态的,以便即使表列表明天扩展,新表也应该能够容纳。由于我是 Redshift 的新手,因此感谢您提供任何帮助。我也在考虑通过 R 使用 dplyr 包来做同样的事情。
解决方案
我知道动态查询不适用于 Redshift。我的目标是拉出任何新的表,并使用它们的列在 R 中进行回归分析。我通过使用 listagg 功能和 concat 操作来完成这项工作。然后将输出写入 R 中的数据框。该数据框将有“n”个选择查询作为不同的行。下面是格式:
df <- as.data.frame(tbl(conn,sql("select 'select ' || col_names|| ' from ' || table_name as q1 from ( select distinct table_name, listagg(col_name,',') within group (order by col_name)
over (partition by table_name) as col_names
from attribute_config
where active = 'Y'
order by table_name )
group by 1")))
完成后,我将此数据帧的每一行分配给一个新数据帧,并使用以下方法获取输出:
df1 <- tbl(conn,sql(df[1,]))
我知道这是一个关于解决方案的回合。但它有效!在 1 秒内获取大约 17M 条记录。
推荐阅读
- javascript - jOuery DataTables:点击列名后数据可见
- python - 为什么参数不能在 pyplot 中以 x 和 y 的形式显式传递?
- maven - maven maven-assembly-plugin:定义文件顺序
- c++ - 在两个范围内按降序对向量进行排序
- java - 可以用不同的jdk配置wildfly 10应用服务器吗?
- python - 如何将标量值与 Numba (Python) 中的数组进行比较?
- python - Jupyter notebook 找不到我的 ssl 证书文件,除非我以 sudo 身份运行
- ios - 在iOS上卸载抵抗存储短字符串的地方?
- angular - 接收数据更新后强制 MatSnackBar 更新 UI
- swift - Apple 的 Xcode 开发教程:“Thread 1: Fatal error: The dequeued cell is not an instance of MealTableViewCell.”