Spaltendaten abfragen

Auf dieser Seite wird beschrieben, wie Sie Abfragen für spaltenorientierte Daten ausführen.

Spaltendaten abfragen

Die Spanner-Abfrage-Engine analysiert Abfragen und wählt automatisch das spaltenbasierte Format aus, wenn es von Vorteil ist. Für einige Klassen von Abfragen ist jedoch möglicherweise weiterhin der Hinweis erforderlich, um das spaltenweise Format zu verwenden. Hier sind einige Beispiele für die Verwendung des Abfragehinweises @{scan_method=columnar}:

  • @{scan_method=columnar} SELECT COUNT(*) FROM Singers;
  • SELECT COUNT(*) FROM Singers @{scan_method=columnar};
  • @{scan_method=columnar} SELECT m.MsgBlob FROM Messages WHERE m.id='1234';

Außerdem können Sie die automatische Auswahl von Spalten explizit deaktivieren, indem Sie den Abfragehinweis @{scan_method=no_columnar} verwenden.

Spaltenbasierte Spanner-Daten mit föderierten BigQuery-Abfragen abfragen

Wenn Sie spaltenbasierte Spanner-Daten aus BigQuery lesen möchten, können Sie entweder ein externes Dataset erstellen oder die Funktion EXTERNAL_QUERY verwenden.

Wenn Sie externe Datasets abfragen, werden automatisch spaltenbasierte Daten verwendet, sofern sie verfügbar und für Ihre Abfrage geeignet sind.

Wenn Sie die Funktion EXTERNAL_QUERY verwenden, werden die spaltenbasierten Daten in Spanner automatisch verwendet, sofern sie verfügbar und für die Arbeitslast geeignet sind. Sie können den Hinweis @{scan_method=columnar} auch in die verschachtelte Spanner-Abfrage einfügen.

Im folgenden Beispiel wird der Query-Hinweis verwendet:

  • Das erste Argument für EXTERNAL_QUERY gibt die externe Verbindung und das Dataset an: my-project.us.albums.
  • Das zweite Argument ist eine SQL-Abfrage, mit der MarketingBudget aus der Tabelle AlbumInfo ausgewählt wird, wobei MarketingBudget kleiner als 500.000 ist.
  • Mit dem Hinweis @{scan_method=columnar} wird die externe Abfrage für das spaltenweise Scannen optimiert.
  • Mit der äußeren SELECT-Anweisung wird die Summe der MarketingBudget-Werte berechnet, die von der externen Abfrage zurückgegeben werden.
  • Mit der AS total_marketing_spend-Klausel wird der berechneten Summe ein Alias zugewiesen.
SELECT SUM(MarketingBudget) AS total_marketing_spend
FROM
  EXTERNAL_QUERY(
    'my-project.us.albums',
    '@{scan_method=columnar} SELECT AlbumInfo.MarketingBudget FROM AlbumInfo WHERE AlbumInfo.MarketingBudget < 500000;');

Nächste Schritte