Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El $linearFill operador interpola los valores que faltan en una secuencia de documentos. El operador $linearFill realiza la interpolación lineal de los datos que faltan, lo que hace que sea útil para los conjuntos de datos con lagunas en valores, como los datos de serie temporal.
Syntax
{
$linearFill: {
input: < expression > ,
sortBy: {
< field >: < 1 or - 1 >
}
}
}
Parámetros
| Parámetro | Description |
|---|---|
input |
Campo o expresión para el que se interpolan los valores que faltan. |
sortBy |
Especifica el campo por el que se ordenan los datos para la interpolación, junto con el criterio de ordenación (1 para ascendente, -1 para descendente). |
Examples
Considere este documento de ejemplo de la colección de tiendas.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Ejemplo 1: Interpolación de datos de ventas que faltan
Para interpolar los datos de ventas que faltan, ejecute una consulta para crear particiones primero de los almacenes del conjunto de datos por nombre. A continuación, use el operador $linearFill para interpolar los datos de ventas que faltan en los almacenes de la partición.
db.stores.aggregate([{
"$match": {
"company": {
"$in": ["First Up Consultants"]
}
}
},
{
"$setWindowFields": {
"partitionBy": "$name",
"sortBy": {
"storeOpeningDate": 1
},
"output": {
"interpolatedSales": {
"$linearFill": "$sales.totalSales"
}
}
}
}
])
Los tres primeros resultados devueltos por esta consulta son:
[
{
"_id": "0f4c48fe-c43b-4083-a856-afe6dd902077",
"name": "First Up Consultants | Appliance Bargains - Feilmouth",
"interpolatedSales": 26630
},
{
"_id": "c4883253-7ccd-4054-a7e0-8aeb202307b5",
"name": "First Up Consultants | Appliance Bargains - New Kari",
"interpolatedSales": 31568
},
{
"_id": "a159ff5c-6ec5-4ca8-9672-e8903a54dd90",
"name": "First Up Consultants | Appliance Bargains - Schadenstad",
"interpolatedSales": 59926
}
]