Px.Utils 1.0.4

There is a newer version of this package available.
See the version list below for details.
dotnet add package Px.Utils --version 1.0.4                
NuGet\Install-Package Px.Utils -Version 1.0.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Px.Utils" Version="1.0.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Px.Utils --version 1.0.4                
#r "nuget: Px.Utils, 1.0.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Px.Utils as a Cake Addin
#addin nuget:?package=Px.Utils&version=1.0.4

// Install Px.Utils as a Cake Tool
#tool nuget:?package=Px.Utils&version=1.0.4                

Px.Utils

Px.Utils is a .NET library for reading and processing px files and processing data in px-type cube format. The goal of this library is to offer a high performance and easy to use library that can be integrated into any .NET project. This project aims to follow these core design principles:

High performance

Everything is designed with performance in mind. Px files are commonly used in webserver environments where performance and low memory usage is important.

Be as unopinionated as possible

We do not want to limit the user if not absolutely necessary. There are variations in the metadata between users and we want to support as many as possible.

High modularity

Extending the library with a new features should be as easy as possible and every module should be useable on its own.

Installation

Px.Utils can be installed using .NET CLI or NuGet Package Manager.

.NET CL

Latest
dotnet add package Px.Utils
Specific version
dotnet add package Px.Utils --version 1.0.0

NuGet Package Manager

Latest
nuget install Px.Utils
Specific version
nuget install Px.Utils -Version 1.0.0

Features

Reading the px files

TBA

Validation

Px file validation

Px files can be validated either as a whole by using PxFileValidator or by using individual validators - SyntaxValidator, ContentValidator and DataValidator - for different parts of the file. Custom validation functions or validator classes can be added to the validation processes.

PxFileValidator

PxFileValidator is a class that validates the whole px file including its data, metadata syntax and metadata contents. The class can be instantiated with the following parameters:

  • stream (Stream): The stream of the px file to be validated
  • filename (string): Name of the file to be validated
  • encoding (Encoding, optional): Encoding of the px file. Default is Encoding.Default
  • syntaxConf (PxFileSyntaxConf, optional): Object that contains px file syntax configuration tokens and symbols.

Custom validator objects can be injected by calling the SetCustomValidatorFunctions or SetCustomValidators methods of the PxFileValidator object. Custom validators must implement either the IPxFileValidator or IPxFileValidatorAsync interface. Custom validation methods are stored in CustomSyntaxValidationFunctions and CustomContentValidationFunctions objects for syntax and content validation processes respectively.

Once the PxFileValidator object is instantiated, either the Validate or ValidateAsync method can be called to validate the px file. The Validate method returns a ValidationResult object that contains the validation results as ValidationFeedbackItem object array.

SyntaxValidator

SyntaxValidator is a class that validates the syntax of a px file's metadata. It needs to be run before other validators, because both the ContentValidator and DataValidator require information from the SyntaxValidationResult object that SyntaxValidator Validate and ValidateAsync methods return. The class can be instantiated with the following parameters:

  • stream (Stream): The stream of the px file to be validated
  • encoding (Encoding): Encoding of the px file.
  • filename (string): Name of the file to be validated
  • syntaxConf (PxFileSyntaxConf, optional): Object that contains px file syntax configuration tokens and symbols.
  • customValidationFunctions (CustomSyntaxValidationFunctions, optional): Object that contains custom validation functions for the syntax validation process.
  • leaveStreamOpen (bool, optional): If true, the stream will not be closed after the validation process. Default is false.
ContentValidator

ContentValidator class validates the integrity of the contents of a px file's metadata. It needs to be run after the SyntaxValidator, because it requires information from the SyntaxValidationResult object that SyntaxValidator Validate and ValidateAsync methods return. The class can be instantiated with the following parameters:

  • filename (string): Name of the file to be validated
  • encoding (Encoding): Encoding of the px file.
  • entries (ValidationStructuredEntry[]): Array of ValidationStructuredEntry objects that contain the metadata entries of the px file. This object is returned by the SyntaxValidator Validate and ValidateAsync methods.
  • customContentValidationFunctions (CustomContentValidationFunctions, optional): Object that contains custom functions for validating the px file metadata contents.
  • syntaxConf (PxFileSyntaxConf, optional): Object that contains px file syntax configuration tokens and symbols.
DataValidator

DataValidator class is used to validate the data section of a px file. It needs to be run after the SyntaxValidator, because it requires information from both the SyntaxValidationResult and ContentValidationResult objects that SyntaxValidator and ContentValidator Validate and ValidateAsync methods return. The class can be instantiated with the following parameters:

  • stream (Stream): Px file stream to be validated
  • rowLen (int): Length of one row of Px file data. ContentValidationResult object contains this information.
  • numOfRows (int): Amount of rows of Px file data. This information is also stored in ContentValidationResult object.
  • filename (string): Name of the file being validated
  • startRow (long): The row number where the data section starts. This information is stored in the SyntaxValidationResult object.
  • encoding (Encoding, optional): Encoding of the stream
  • conf (PxFileSyntaxConf, optional): Syntax configuration for the Px file
Database validation

TBA

Data models

TBA

Computing

Matrix<TData> class has a set of extension methods for performing basic computations for the datapoints.

Sum

SumToNewValue<TData> computes sums of datapoints defined by a subset of values from a given dimension. The method takes a new dimension value as a parameter that will define the resulting values. The method also has an asyncronous variant SumToNewValueAsync<TData>.

AddConstantToSubset<TData> adds a constant to a subset of datapoints. Also has an asynchronous variant AddConstantToSubsetAsync<TData>.

Multiplication

MultiplyToNewValue<TData> computes products of datapoints defined by a subset of values from a given dimension. The method takes a new dimension value as a parameter that will define the resulting values. The method also has an asyncronous variant MultiplyToNewValueAsync<TData>.

MultiplySubsetByConstant<TData> Multiply a subset of datapoints by a constant. Also has an asynchronous variant MultiplySubsetByConstantAsync<TData>.

Division

DivideSubsetBySelectedValue divides a subset of datapoints defined by values from one dimension with datapoints defined by a value from the same dimension. Also has an asyncronous variant DivideSubsetBySelectedValueAsync

DivideSubsetByConstant<TData> Divide a subset of datapoints by a constant. Also has an asynchronous variant DivideSubsetByConstantAsync<TData>.

General

ApplyOverDimension Generatas a new set datapoints by applying a function to datapoints defined by a subset of values from one dimension. The method takes a new dimension value as a parameter that will define the resulting values.

ApplyToSubMap Applies a function to a set of datapoints.

ApplyRelative Applies a function to a set of datapoints defined by a subset of values from one dimension. The method also takes a code of a value from the same dimension as a parameter which is used to define additional datapoints to be used as an input for the function.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 115 11/14/2024
1.0.4 95 7/25/2024
1.0.3 89 7/25/2024
1.0.2 105 7/18/2024
1.0.1 108 7/2/2024
1.0.0 97 6/10/2024