pub struct DataBackendSession {
pub chunk_size: usize,
pub runtime: Arc<Runtime>,
/* private fields */
}Expand description
Provides a DataFusion session and registers DataFusion queries.
The session is used to register data sources and make queries on them. A
query returns a Chunk of Arrow records. It is decoded and converted into
a Vec of data by types that implement [DecodeDataFromRecordBatch].
Fields§
§chunk_size: usize§runtime: Arc<Runtime>Implementations§
Source§impl DataBackendSession
impl DataBackendSession
Sourcepub fn new(chunk_size: usize) -> Self
pub fn new(chunk_size: usize) -> Self
Creates a new DataBackendSession instance.
Sourcepub fn register_object_store(
&mut self,
url: &Url,
object_store: Arc<dyn ObjectStore>,
)
pub fn register_object_store( &mut self, url: &Url, object_store: Arc<dyn ObjectStore>, )
Register an object store with the session context
Sourcepub fn register_object_store_from_uri(
&mut self,
uri: &str,
storage_options: Option<AHashMap<String, String>>,
) -> Result<()>
pub fn register_object_store_from_uri( &mut self, uri: &str, storage_options: Option<AHashMap<String, String>>, ) -> Result<()>
Register an object store with the session context from a URI with optional storage options
pub fn write_data<T: EncodeToRecordBatch>( data: &[T], metadata: &AHashMap<String, String>, stream: &mut dyn WriteStream, ) -> Result<(), DataStreamingError>
Sourcepub fn add_file<T>(
&mut self,
table_name: &str,
file_path: &str,
sql_query: Option<&str>,
custom_type_name: Option<&str>,
) -> Result<()>where
T: DecodeDataFromRecordBatch,
pub fn add_file<T>(
&mut self,
table_name: &str,
file_path: &str,
sql_query: Option<&str>,
custom_type_name: Option<&str>,
) -> Result<()>where
T: DecodeDataFromRecordBatch,
Registers a Parquet file and adds a batch stream for decoding.
The caller must specify T to indicate the kind of data expected. table_name is
the logical name for queries; file_path is the Parquet path; sql_query defaults
to SELECT * FROM {table_name} ORDER BY ts_init if None.
When custom_type_name is Some, it is merged into each batch’s schema metadata
before decoding (as type_name). Use this for custom data when Parquet/DataFusion
does not preserve schema metadata so the decoder can look up the type in the registry.
The file data must be ordered by the ts_init in ascending order for this
to work correctly.
Sourcepub fn collect_query_batches(
&mut self,
table_name: &str,
file_path: &str,
sql_query: Option<&str>,
) -> Result<Vec<RecordBatch>>
pub fn collect_query_batches( &mut self, table_name: &str, file_path: &str, sql_query: Option<&str>, ) -> Result<Vec<RecordBatch>>
Registers a Parquet file and executes a query, returning the raw record batches.
pub fn get_query_result(&mut self) -> QueryResult
Sourcepub fn clear_registered_tables(&mut self)
pub fn clear_registered_tables(&mut self)
Clears all registered tables and batch streams.
This is useful when the underlying files have changed and we need to re-register tables with updated data.
Trait Implementations§
Source§impl<'py> IntoPyObject<'py> for DataBackendSession
impl<'py> IntoPyObject<'py> for DataBackendSession
Source§type Target = DataBackendSession
type Target = DataBackendSession
Source§type Output = Bound<'py, <DataBackendSession as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DataBackendSession as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for DataBackendSession
impl PyClass for DataBackendSession
Source§impl PyClassImpl for DataBackendSession
impl PyClassImpl for DataBackendSession
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = /// Provides a DataFusion session and registers DataFusion queries.
///
/// The session is used to register data sources and make queries on them. A
/// query returns a Chunk of Arrow records. It is decoded and converted into
/// a Vec of data by types that implement [`DecodeDataFromRecordBatch`].
const RAW_DOC: &'static CStr = /// Provides a DataFusion session and registers DataFusion queries. /// /// The session is used to register data sources and make queries on them. A /// query returns a Chunk of Arrow records. It is decoded and converted into /// a Vec of data by types that implement [`DecodeDataFromRecordBatch`].
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type Layout = <<DataBackendSession as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<DataBackendSession>
type Layout = <<DataBackendSession as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<DataBackendSession>
Source§type ThreadChecker = ThreadCheckerImpl
type ThreadChecker = ThreadCheckerImpl
type Inventory = Pyo3MethodsInventoryForDataBackendSession
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
§fn dict_offset() -> Option<PyObjectOffset>
fn dict_offset() -> Option<PyObjectOffset>
§fn weaklist_offset() -> Option<PyObjectOffset>
fn weaklist_offset() -> Option<PyObjectOffset>
Source§impl PyClassNewTextSignature for DataBackendSession
impl PyClassNewTextSignature for DataBackendSession
const TEXT_SIGNATURE: &'static str = "(chunk_size=10000)"
Source§impl PyStubType for DataBackendSession
impl PyStubType for DataBackendSession
Source§fn type_output() -> TypeInfo
fn type_output() -> TypeInfo
§fn type_input() -> TypeInfo
fn type_input() -> TypeInfo
Source§impl PyTypeInfo for DataBackendSession
impl PyTypeInfo for DataBackendSession
Source§const NAME: &str = <Self as ::pyo3::PyClass>::NAME
const NAME: &str = <Self as ::pyo3::PyClass>::NAME
prefer using ::type_object(py).name() to get the correct runtime value
Source§const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
prefer using ::type_object(py).module() to get the correct runtime value
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.impl DerefToPyAny for DataBackendSession
impl ExtractPyClassWithClone for DataBackendSession
Auto Trait Implementations§
impl Freeze for DataBackendSession
impl !RefUnwindSafe for DataBackendSession
impl Send for DataBackendSession
impl Sync for DataBackendSession
impl Unpin for DataBackendSession
impl UnsafeUnpin for DataBackendSession
impl !UnwindSafe for DataBackendSession
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read more§impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
§fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
Use ::classinfo_object() instead and format the type name at runtime. Note that using built-in cast features is often better than manual PyTypeCheck usage.
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more