Skip to content

Commit c39adea

Browse files
TrevorBergeronashleyxuu
authored andcommitted
fix: generate unique ids on join to avoid id collisions (#65)
* fix: generate unique ids on join to avoid id collisions
1 parent db9df9d commit c39adea

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

‎bigframes/core/joins/single_column.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from __future__ import annotations
1818

19+
import itertools
1920
import itertools
2021
import typing
2122
from typing import Callable, Literal, Tuple
@@ -129,6 +130,25 @@ def join_by_column(
129130
)
130131
}
131132

133+
def get_column_left(col_id):
134+
return lmapping[col_id]
135+
136+
def get_column_right(col_id):
137+
return rmapping[col_id]
138+
139+
lmapping = {
140+
col_id: guid.generate_guid()
141+
for col_id in itertools.chain(
142+
left.column_names, left._hidden_ordering_column_names
143+
)
144+
}
145+
rmapping = {
146+
col_id: guid.generate_guid()
147+
for col_id in itertools.chain(
148+
right.column_names, right._hidden_ordering_column_names
149+
)
150+
}
151+
132152
def get_column_left(col_id):
133153
return lmapping[col_id]
134154

@@ -146,6 +166,8 @@ def get_column_right(col_id):
146166
col_id_overrides=rmapping,
147167
)
148168
join_conditions = [
169+
value_to_join_key(left_table[lmapping[left_index]])
170+
== value_to_join_key(right_table[rmapping[right_index]])
149171
value_to_join_key(left_table[lmapping[left_index]])
150172
== value_to_join_key(right_table[rmapping[right_index]])
151173
for left_index, right_index in zip(left_column_ids, right_column_ids)

0 commit comments

Comments
 (0)