

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# $KovarianzSAMP
<a name="covarianceSamp"></a>

Neu ab Version 8.0.2.

Der `$covarianceSamp` Operator in Amazon DocumentDB gibt die Stichprobenkovarianz zweier numerischer Ausdrücke zurück. Es handelt sich um einen Fensteroperator, der nur in der `$setWindowFields` Phase verwendet wird. In den `$group` Stufen oder ist er nicht gültig. `$bucket` Sie geben den Operator unter dem `output` Feld der Bühne an und definieren optional die Fenstergrenzen mit einem `window` Dokument.

**Parameter**
+ `$covarianceSamp`verwendet ein Array mit zwei Elementen`[ <expression1>, <expression2> ]`, wobei jedes Element ein numerischer Ausdruck ist (ein Feldpfad`"$x"`, z. B. ein Ausdruck oder eine Konstante). Es gibt die Beispielkovarianz der beiden Ausdrücke in den Dokumenten im Fenster zurück.

## Beispiel (MongoDB Shell)
<a name="covarianceSamp-examples"></a>

Das folgende Beispiel partitioniert die Dokumente nach`series`, sortiert jede Partition nach `t` und berechnet die Stichprobenkovarianz von `x` und `y` über die gesamte Partition.

**Erstellen Sie Beispieldokumente **

```
db.measurements.insertMany([
  { _id: 1, series: "A", t: 1, x: 1, y: 2 },
  { _id: 2, series: "A", t: 2, x: 2, y: 5 },
  { _id: 3, series: "A", t: 3, x: 3, y: 8 },
  { _id: 4, series: "B", t: 1, x: 1, y: 8 },
  { _id: 5, series: "B", t: 2, x: 2, y: 5 },
  { _id: 6, series: "B", t: 3, x: 3, y: 2 }
]);
```

**Beispiel für eine Abfrage **

```
db.measurements.aggregate([
  {
    $setWindowFields: {
      partitionBy: "$series",
      sortBy: { t: 1 },
      output: {
        covariance: {
          $covarianceSamp: [ "$x", "$y" ],
          window: { documents: ["unbounded", "unbounded"] }
        }
      }
    }
  }
]);
```

**Ausgabe**

```
[
  { "_id": 1, "series": "A", "t": 1, "x": 1, "y": 2, "covariance": 3 },
  { "_id": 2, "series": "A", "t": 2, "x": 2, "y": 5, "covariance": 3 },
  { "_id": 3, "series": "A", "t": 3, "x": 3, "y": 8, "covariance": 3 },
  { "_id": 4, "series": "B", "t": 1, "x": 1, "y": 8, "covariance": -3 },
  { "_id": 5, "series": "B", "t": 2, "x": 2, "y": 5, "covariance": -3 },
  { "_id": 6, "series": "B", "t": 3, "x": 3, "y": 2, "covariance": -3 }
]
```

Jedes Dokument in einer Partition erhält dieselbe `covariance` Stichprobenkovarianz aller Dokumente in dieser Partition `x` und `y` für alle Dokumente in dieser Partition: `3` für Reihen `A` (X und Y nehmen zusammen zu) und `-3` für Reihen `B` (y nimmt ab, wenn X zunimmt). Die Stichprobenkovarianz wird durch `n - 1` statt durch als dividiert`n`, sodass ihr Betrag größer ist als die Kovarianz der Grundgesamtheit für dieselben Daten.

## Codebeispiele
<a name="covarianceSamp-code"></a>

Um ein Codebeispiel für die Verwendung des `$covarianceSamp` Operators in der `$setWindowFields` Phase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = new MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');

  try {
    await client.connect();
    const db = client.db('test');
    const measurements = db.collection('measurements');

    await measurements.insertMany([
      { _id: 1, series: "A", t: 1, x: 1, y: 2 },
      { _id: 2, series: "A", t: 2, x: 2, y: 5 },
      { _id: 3, series: "A", t: 3, x: 3, y: 8 },
      { _id: 4, series: "B", t: 1, x: 1, y: 8 },
      { _id: 5, series: "B", t: 2, x: 2, y: 5 },
      { _id: 6, series: "B", t: 3, x: 3, y: 2 }
    ]);

    const result = await measurements.aggregate([
      {
        $setWindowFields: {
          partitionBy: "$series",
          sortBy: { t: 1 },
          output: {
            covariance: {
              $covarianceSamp: [ "$x", "$y" ],
              window: { documents: ["unbounded", "unbounded"] }
            }
          }
        }
      }
    ]).toArray();

    console.log(result);
  } finally {
    await client.close();
  }
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')

    try:
        db = client['test']
        measurements = db['measurements']

        measurements.insert_many([
            { '_id': 1, 'series': 'A', 't': 1, 'x': 1, 'y': 2 },
            { '_id': 2, 'series': 'A', 't': 2, 'x': 2, 'y': 5 },
            { '_id': 3, 'series': 'A', 't': 3, 'x': 3, 'y': 8 },
            { '_id': 4, 'series': 'B', 't': 1, 'x': 1, 'y': 8 },
            { '_id': 5, 'series': 'B', 't': 2, 'x': 2, 'y': 5 },
            { '_id': 6, 'series': 'B', 't': 3, 'x': 3, 'y': 2 }
        ])

        result = list(measurements.aggregate([
            {
                '$setWindowFields': {
                    'partitionBy': '$series',
                    'sortBy': { 't': 1 },
                    'output': {
                        'covariance': {
                            '$covarianceSamp': [ '$x', '$y' ],
                            'window': { 'documents': ['unbounded', 'unbounded'] }
                        }
                    }
                }
            }
        ]))

        print(result)
    finally:
        client.close()

example()
```

------