【发布时间】:2022-07-22 01:15:41
【问题描述】:
我想根据其他映射表动态生成一个表。我有一个看起来像的映射表,这个映射表连接到一个 excel,用户可以根据需要添加任意多的行来修改:
| Name | ColumnName |
|---|---|
| banner | banner_flag |
| pop_up | pop_up_flag |
然后我有一个如下所示的源表:
| id | language | transactions | action |
|---|---|---|---|
| 01 | es-es | 0 | banner |
| 02 | es-mx | 0 | loggin |
| 03 | es-es | 1 | pop_up |
| 03 | es-es | 1 | banner |
| 03 | es-es | 1 | loggin |
| 03 | es-es | 1 | back_home |
| 04 | es-es | 0 | loggin |
| 04 | es-es | 0 | banner |
| 04 | es-es | 0 | banner |
| 05 | es-es | 1 | loggin |
| 06 | es-es | 2 | loggin |
那么最终的输出应该是这样的:
| id | language | transactions | banner_flag | pop_up_flag |
|---|---|---|---|---|
| 01 | es-es | 0 | 1 | 0 |
| 02 | es-mx | 0 | 0 | 0 |
| 03 | es-es | 0 | 1 | 1 |
| 04 | es-es | 0 | 2 | 0 |
| 05 | es-es | 0 | 0 | 0 |
| 06 | es-es | 0 | 0 | 0 |
与映射表关联的列是计算字段,在伪代码中如下所示:
for x in map_table.ColumnName:
if x in sourceTable.Column:
return 1
else:
return 0
【问题讨论】:
-
交易列是如何计算的?
标签: sql dynamic google-bigquery pivot