MCPcopy Create free account
hub / github.com/apache/arrow / test_partitioning

Function test_partitioning

python/pyarrow/tests/test_dataset.py:702–831  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

700
701
702def test_partitioning():
703 schema = pa.schema([
704 pa.field('i64', pa.int64()),
705 pa.field('f64', pa.float64())
706 ])
707 for klass in [ds.DirectoryPartitioning, ds.HivePartitioning,
708 ds.FilenamePartitioning]:
709 partitioning = klass(schema)
710 assert isinstance(partitioning, ds.Partitioning)
711 assert partitioning == klass(schema)
712 assert partitioning != "other object"
713
714 schema = pa.schema([
715 pa.field('group', pa.int64()),
716 pa.field('key', pa.float64())
717 ])
718 partitioning = ds.DirectoryPartitioning(schema)
719 assert len(partitioning.dictionaries) == 2
720 assert all(x is None for x in partitioning.dictionaries)
721 expr = partitioning.parse('/3/3.14/')
722 assert isinstance(expr, ds.Expression)
723
724 expected = (ds.field('group') == 3) & (ds.field('key') == 3.14)
725 assert expr.equals(expected)
726
727 with pytest.raises(pa.ArrowInvalid):
728 partitioning.parse('/prefix/3/aaa')
729
730 expr = partitioning.parse('/3/')
731 expected = ds.field('group') == 3
732 assert expr.equals(expected)
733
734 assert partitioning != ds.DirectoryPartitioning(schema, segment_encoding="none")
735
736 schema = pa.schema([
737 pa.field('alpha', pa.int64()),
738 pa.field('beta', pa.int64())
739 ])
740 partitioning = ds.HivePartitioning(schema, null_fallback='xyz')
741 assert len(partitioning.dictionaries) == 2
742 assert all(x is None for x in partitioning.dictionaries)
743 expr = partitioning.parse('/alpha=0/beta=3/')
744 expected = (
745 (ds.field('alpha') == ds.scalar(0)) &
746 (ds.field('beta') == ds.scalar(3))
747 )
748 assert expr.equals(expected)
749
750 expr = partitioning.parse('/alpha=xyz/beta=3/')
751 expected = (
752 (ds.field('alpha').is_null() & (ds.field('beta') == ds.scalar(3)))
753 )
754 assert expr.equals(expected)
755
756 for shouldfail in ['/alpha=one/beta=2/', '/alpha=one/', '/beta=two/']:
757 with pytest.raises(pa.ArrowInvalid):
758 partitioning.parse(shouldfail)
759

Callers

nothing calls this directly

Calls 13

lenFunction · 0.85
DirectoryPartitioningMethod · 0.80
equalsMethod · 0.80
is_nullMethod · 0.80
FilenamePartitioningMethod · 0.80
schemaMethod · 0.45
fieldMethod · 0.45
parseMethod · 0.45
scalarMethod · 0.45
dictionaryMethod · 0.45
stringMethod · 0.45
arrayMethod · 0.45

Tested by

no test coverage detected