Skip to content

Commit b536070

Browse files
authored
fix: correct zero row count in DataFrame from table view (#1062)
* fix: correct zero row count display in DataFrame from table view * update logic and test
1 parent 650d80d commit b536070

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

bigframes/core/nodes.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ class GbqTable:
508508
table_id: str = field()
509509
physical_schema: Tuple[bq.SchemaField, ...] = field()
510510
n_rows: int = field()
511+
is_physical_table: bool = field()
511512
cluster_cols: typing.Optional[Tuple[str, ...]]
512513

513514
@staticmethod
@@ -523,6 +524,7 @@ def from_table(table: bq.Table, columns: Sequence[str] = ()) -> GbqTable:
523524
table_id=table.table_id,
524525
physical_schema=schema,
525526
n_rows=table.num_rows,
527+
is_physical_table=(table.table_type == "TABLE"),
526528
cluster_cols=None
527529
if table.clustering_fields is None
528530
else tuple(table.clustering_fields),
@@ -603,7 +605,7 @@ def variables_introduced(self) -> int:
603605

604606
@property
605607
def row_count(self) -> typing.Optional[int]:
606-
if self.source.sql_predicate is None:
608+
if self.source.sql_predicate is None and self.source.table.is_physical_table:
607609
return self.source.table.n_rows
608610
return None
609611

tests/system/small/test_dataframe.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,6 +1521,26 @@ def test_shape(scalars_dfs):
15211521
assert bf_result == pd_result
15221522

15231523

1524+
@pytest.mark.parametrize(
1525+
"reference_table, test_table",
1526+
[
1527+
(
1528+
"bigframes-dev.bigframes_tests_sys.base_table",
1529+
"bigframes-dev.bigframes_tests_sys.base_table_view",
1530+
),
1531+
(
1532+
"bigframes-dev.bigframes_tests_sys.csv_native_table",
1533+
"bigframes-dev.bigframes_tests_sys.csv_external_table",
1534+
),
1535+
],
1536+
)
1537+
def test_view_and_external_table_shape(session, reference_table, test_table):
1538+
reference_df = session.read_gbq(reference_table)
1539+
test_df = session.read_gbq(test_table)
1540+
1541+
assert test_df.shape == reference_df.shape
1542+
1543+
15241544
def test_len(scalars_dfs):
15251545
scalars_df, scalars_pandas_df = scalars_dfs
15261546
bf_result = len(scalars_df)

0 commit comments

Comments
 (0)