pub struct CrossJoinSpec {
pub arrays: Vec<String>,
pub prefix: bool,
pub keep_parent: bool,
pub on_empty: OnEmpty,
pub drop_arrays: bool,
pub max_product: usize,
}transform-cross-join only.Expand description
User-facing cross_join config.
Fields§
§arrays: Vec<String>Sibling array fields to cross (≥2). Each element is expected to be an object; a scalar element is wrapped under the array’s name.
prefix: boolPrefix each produced column with its array name (jobs → jobs_title).
Avoids collisions between arrays that share field names. Default false.
keep_parent: boolKeep the record’s non-array scalar fields on every output row.
Default true.
on_empty: OnEmptyBehavior when a crossed array is empty. Default skip.
drop_arrays: boolRemove the source array fields from the output rows after expansion.
Default true.
max_product: usizeFail (rather than OOM) if a single record’s cartesian product would
exceed this many rows. Default DEFAULT_MAX_PRODUCT.
Implementations§
Source§impl CrossJoinSpec
impl CrossJoinSpec
Sourcepub fn compile(&self) -> Result<CompiledCrossJoin, FaucetError>
pub fn compile(&self) -> Result<CompiledCrossJoin, FaucetError>
Validate the spec, returning a reusable CompiledCrossJoin.
Sourcepub fn into_stage(&self) -> Result<TransformStage, FaucetError>
pub fn into_stage(&self) -> Result<TransformStage, FaucetError>
Compile and wrap as a TransformStage::PageFn (1→0..N per record,
fallible on product overflow).
Trait Implementations§
Source§impl Clone for CrossJoinSpec
impl Clone for CrossJoinSpec
Source§fn clone(&self) -> CrossJoinSpec
fn clone(&self) -> CrossJoinSpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CrossJoinSpec
impl Debug for CrossJoinSpec
Source§impl<'de> Deserialize<'de> for CrossJoinSpec
impl<'de> Deserialize<'de> for CrossJoinSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for CrossJoinSpec
impl JsonSchema for CrossJoinSpec
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for CrossJoinSpec
impl PartialEq for CrossJoinSpec
Source§impl Serialize for CrossJoinSpec
impl Serialize for CrossJoinSpec
impl StructuralPartialEq for CrossJoinSpec
Auto Trait Implementations§
impl Freeze for CrossJoinSpec
impl RefUnwindSafe for CrossJoinSpec
impl Send for CrossJoinSpec
impl Sync for CrossJoinSpec
impl Unpin for CrossJoinSpec
impl UnsafeUnpin for CrossJoinSpec
impl UnwindSafe for CrossJoinSpec
Blanket Implementations§
impl<T> Allocation for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request