diff options
author | vvvv <[email protected]> | 2025-10-06 13:26:25 +0300 |
---|---|---|
committer | vvvv <[email protected]> | 2025-10-06 14:06:25 +0300 |
commit | eca8ce9cb1613d5c983185c4e43c20651a9638aa (patch) | |
tree | 61ee5ae779948e61af9a7691d19eaa2c09869121 /yql/essentials/udfs/common/stat/static/stat_udf.h | |
parent | 4adf7eecae16a9b228b28cc5f64c27ef69ad5ec2 (diff) |
YQL-20086 udfs
init
commit_hash:f9684778bf1ea956965f2360b80b91edb7d4ffbe
Diffstat (limited to 'yql/essentials/udfs/common/stat/static/stat_udf.h')
-rw-r--r-- | yql/essentials/udfs/common/stat/static/stat_udf.h | 100 |
1 files changed, 50 insertions, 50 deletions
diff --git a/yql/essentials/udfs/common/stat/static/stat_udf.h b/yql/essentials/udfs/common/stat/static/stat_udf.h index 3ab6dbb20b4..e1d637132b7 100644 --- a/yql/essentials/udfs/common/stat/static/stat_udf.h +++ b/yql/essentials/udfs/common/stat/static/stat_udf.h @@ -9,57 +9,57 @@ using namespace NYql; using namespace NUdf; namespace { - extern const char DigestResourceName[] = "Stat.TDigestResource"; +extern const char DigestResourceName[] = "Stat.TDigestResource"; - typedef TBoxedResource<TDigest, DigestResourceName> TDigestResource; - typedef TRefCountedPtr<TDigestResource> TDigestResourcePtr; +typedef TBoxedResource<TDigest, DigestResourceName> TDigestResource; +typedef TRefCountedPtr<TDigestResource> TDigestResourcePtr; - SIMPLE_UDF_WITH_OPTIONAL_ARGS(TTDigest_Create, TResource<DigestResourceName>(double, TOptional<double>, TOptional<double>), 2) { - Y_UNUSED(valueBuilder); - const double delta = args[1].GetOrDefault<double>(0.01); - const double K = args[2].GetOrDefault<double>(25.0); - if (delta == 0 || K / delta < 1) { - UdfTerminate((TStringBuilder() << GetPos() << " Invalid combination of delta/K values").c_str()); - } - - return TUnboxedValuePod(new TDigestResource(delta, K, args[0].Get<double>(), true)); +SIMPLE_UDF_WITH_OPTIONAL_ARGS(TTDigest_Create, TResource<DigestResourceName>(double, TOptional<double>, TOptional<double>), 2) { + Y_UNUSED(valueBuilder); + const double delta = args[1].GetOrDefault<double>(0.01); + const double K = args[2].GetOrDefault<double>(25.0); + if (delta == 0 || K / delta < 1) { + UdfTerminate((TStringBuilder() << GetPos() << " Invalid combination of delta/K values").c_str()); } - SIMPLE_STRICT_UDF(TTDigest_AddValue, TResource<DigestResourceName>(TResource<DigestResourceName>, double)) { - Y_UNUSED(valueBuilder); - TDigestResource::Validate(args[0]); - TDigestResource* resource = static_cast<TDigestResource*>(args[0].AsBoxed().Get()); - resource->Get()->AddValue(args[1].Get<double>()); - return TUnboxedValuePod(resource); - } + return TUnboxedValuePod(new TDigestResource(delta, K, args[0].Get<double>(), true)); +} - SIMPLE_STRICT_UDF(TTDigest_GetPercentile, double(TResource<DigestResourceName>, double)) { - Y_UNUSED(valueBuilder); - TDigestResource::Validate(args[0]); - return TUnboxedValuePod(static_cast<TDigestResource*>(args[0].AsBoxed().Get())->Get()->GetPercentile(args[1].Get<double>())); - } +SIMPLE_STRICT_UDF(TTDigest_AddValue, TResource<DigestResourceName>(TResource<DigestResourceName>, double)) { + Y_UNUSED(valueBuilder); + TDigestResource::Validate(args[0]); + TDigestResource* resource = static_cast<TDigestResource*>(args[0].AsBoxed().Get()); + resource->Get()->AddValue(args[1].Get<double>()); + return TUnboxedValuePod(resource); +} - SIMPLE_STRICT_UDF(TTDigest_Serialize, char*(TResource<DigestResourceName>)) { - TDigestResource::Validate(args[0]); - return valueBuilder->NewString(static_cast<TDigestResource*>(args[0].AsBoxed().Get())->Get()->Serialize()); - } +SIMPLE_STRICT_UDF(TTDigest_GetPercentile, double(TResource<DigestResourceName>, double)) { + Y_UNUSED(valueBuilder); + TDigestResource::Validate(args[0]); + return TUnboxedValuePod(static_cast<TDigestResource*>(args[0].AsBoxed().Get())->Get()->GetPercentile(args[1].Get<double>())); +} - SIMPLE_UDF(TTDigest_Deserialize, TResource<DigestResourceName>(char*)) { - Y_UNUSED(valueBuilder); - return TUnboxedValuePod(new TDigestResource(TString(args[0].AsStringRef()), true)); - } +SIMPLE_STRICT_UDF(TTDigest_Serialize, char*(TResource<DigestResourceName>)) { + TDigestResource::Validate(args[0]); + return valueBuilder->NewString(static_cast<TDigestResource*>(args[0].AsBoxed().Get())->Get()->Serialize()); +} - SIMPLE_STRICT_UDF(TTDigest_Merge, TResource<DigestResourceName>(TResource<DigestResourceName>, TResource<DigestResourceName>)) { - Y_UNUSED(valueBuilder); - TDigestResource::Validate(args[0]); - TDigestResource::Validate(args[1]); - return TUnboxedValuePod(new TDigestResource( - static_cast<TDigestResource*>(args[0].AsBoxed().Get())->Get(), - static_cast<TDigestResource*>(args[1].AsBoxed().Get())->Get(), - true)); - } +SIMPLE_UDF(TTDigest_Deserialize, TResource<DigestResourceName>(char*)) { + Y_UNUSED(valueBuilder); + return TUnboxedValuePod(new TDigestResource(TString(args[0].AsStringRef()), true)); +} - /* +SIMPLE_STRICT_UDF(TTDigest_Merge, TResource<DigestResourceName>(TResource<DigestResourceName>, TResource<DigestResourceName>)) { + Y_UNUSED(valueBuilder); + TDigestResource::Validate(args[0]); + TDigestResource::Validate(args[1]); + return TUnboxedValuePod(new TDigestResource( + static_cast<TDigestResource*>(args[0].AsBoxed().Get())->Get(), + static_cast<TDigestResource*>(args[1].AsBoxed().Get())->Get(), + true)); +} + +/* * * TODO: Memory tracking * @@ -67,12 +67,12 @@ namespace { * */ - SIMPLE_MODULE(TStatModule, - TTDigest_Create, - TTDigest_AddValue, - TTDigest_GetPercentile, - TTDigest_Serialize, - TTDigest_Deserialize, - TTDigest_Merge) +SIMPLE_MODULE(TStatModule, + TTDigest_Create, + TTDigest_AddValue, + TTDigest_GetPercentile, + TTDigest_Serialize, + TTDigest_Deserialize, + TTDigest_Merge) -} +} // namespace |