Von IBM Netezza migrieren

Dieses Dokument bietet eine allgemeine Anleitung zur Migration von Netezza zu BigQuery. Sie beschreibt die grundlegenden Architekturunterschiede zwischen Netezza und BigQuery und die zusätzlichen Funktionen, die BigQuery bietet. Außerdem erfahren Sie, wie Sie Ihr vorhandenes Datenmodell überdenken und wie Sie extrahieren, transformieren und laden können (ETL), um die Vorteile von BigQuery zu maximieren.

Dieses Dokument richtet sich an Unternehmensarchitekten, Datenbankadministratoren, Anwendungsentwickler und IT-Sicherheitsexperten, die von Netezza zu BigQuery migrieren und technische Herausforderungen im Migrationsprozess lösen möchten. Dieses Dokument enthält Details zu den folgenden Phasen des Migrationsprozesses:

  • Daten exportieren
  • Daten aufnehmen
  • Tools von Drittanbietern nutzen

Verwenden Sie die Batch-SQL-Übersetzung, um Ihre SQL-Skripts im Bulk zu migrieren, oder die interaktive SQL-Übersetzung, um Ad-hoc-Abfragen zu übersetzen. IBM Netezza SQL/NZPLSQL wird von beiden Tools in der Vorschau unterstützt.

Architekturvergleich

Netezza ist ein leistungsstarkes System, mit dem Sie große Datenmengen speichern und analysieren können. Ein System wie Netezza erfordert jedoch große Investitionen in Hardware, Wartung und Lizenzierung. Dies kann aufgrund von Herausforderungen bei der Knotenverwaltung, dem Datenvolumen pro Quelle und den Archivierungskosten schwierig zu skalieren sein. Bei Netezza werden Speicher- und Verarbeitungskapazität durch Hardware-Appliances begrenzt. Wenn die maximale Auslastung erreicht ist, ist der Vorgang zur Erweiterung der Appliance-Kapazität aufwendig und manchmal nicht einmal möglich.

Mit BigQuery müssen Sie keine Infrastruktur verwalten und benötigen keinen Datenbankadministrator. BigQuery ist ein vollständig verwaltetes, serverloses Data Warehouse im Petabytebereich, das ohne Index in Sekundenbruchteilen Milliarden von Zeilen scannen kann. Da BigQuery die Infrastruktur von Google nutzt, kann jede Abfrage parallelisiert und auf Zehntausenden von Servern gleichzeitig ausgeführt werden. Die folgenden Kerntechnologien heben BigQuery ab:

  • Spaltenorientierte Speicherung: Die Daten werden in Spalten statt in Zeilen gespeichert. Dadurch lassen sich ein sehr hohes Komprimierungsverhältnis und ein sehr hoher Scandurchsatz erreichen.
  • Baumarchitektur: Abfragen werden weitergeleitet und die Ergebnisse werden innerhalb weniger Sekunden über Tausende von Maschinen hinweg zusammengefasst.

Netezza-Architektur

Netezza ist eine hardwarebeschleunigte Appliance, die mit einer Softwaredaten-Abstraktionsschicht ausgestattet ist. Die Datenabstraktionsebene verwaltet die Datenverteilung in der Appliance und optimiert Abfragen, indem die Datenverarbeitung auf die zugrunde liegenden CPUs und FPGAs verteilt wird.

Netezza TwinFin- und Striper-Modelle haben im Juni 2019 das Ende des Supports erreicht.

Im folgenden Diagramm werden die Datenabstraktionsebenen in Netezza veranschaulicht:

Image

Das Diagramm zeigt die folgenden Datenabstraktionsebenen:

  • Laufwerkgehäuse. Der physische Bereich innerhalb der Appliance, in dem die Laufwerke befestigt sind.
  • Laufwerke. Physische Laufwerke in den Gehäusen von Laufwerken speichern die Datenbanken und Tabellen.
  • Daten-Slices: Logische Darstellung der auf einem Laufwerk gespeicherten Daten. Daten werden mithilfe eines Verteilungsschlüssels auf die Daten-Slices verteilt. Sie können den Status von Daten-Slices mit nzds-Befehlen überwachen.
  • Datenpartitionen: Logische Darstellung eines Daten-Slices, das von einer bestimmten Snippet Processing Units (SPUs) verwaltet wird. Jede SPU besitzt eine oder mehrere Datenpartitionen mit den Nutzerdaten, für deren Verarbeitung die SPU während Abfragen verantwortlich ist.

Alle Systemkomponenten sind über Netzwerkstruktur verbunden. Die Netezza-Appliance führt ein benutzerdefiniertes Protokoll auf der Grundlage von IP-Adressen aus.

BigQuery-Architektur

BigQuery ist ein vollständig verwaltetes Data Warehouse für Unternehmen, mit dem Sie Ihre Daten mit integrierten Features wie maschinellem Lernen, raumbezogenen Analysen und Business Intelligence verwalten und analysieren können. Weitere Informationen finden Sie unter Was ist BigQuery?.

BigQuery übernimmt das Speichern und Berechnen, um eine dauerhafte Datenspeicherung und leistungsstarke Antworten auf Analyseabfragen zu ermöglichen. Weitere Informationen finden Sie unter Erläuterung von BigQuery.

Informationen zu den Preisen von BigQuery finden Sie unter Schnelle Skalierung und einfache Preise von BigQuery.

Vor der Migration

Um eine erfolgreiche Data Warehouse-Migration zu gewährleisten, sollten Sie Ihre Migrationsstrategie frühzeitig im Zeitplan Ihres Projekts planen. Weitere Informationen zur systematischen Planung Ihrer Migration finden Sie unter Was und wie migrieren: der Migrations-Framework.

BigQuery-Kapazitätsplanung

Der Analysedurchsatz in BigQuery wird in Slots gemessen. Ein BigQuery-Slot ist die proprietäre Einheit von Google für Computing, RAM und Netzwerkdurchsatz, welche zum Ausführen von SQL-Abfragen erforderlich sind. BigQuery berechnet automatisch je nach Größe und Komplexität der Abfrage, wie viele Slots für jede Abfrage erforderlich sind.

Wählen Sie eines der folgenden Preismodelle aus, um Abfragen in BigQuery auszuführen:

  • On-demand. Das Standardpreismodell, bei dem Ihnen die Anzahl der Byte in Rechnung gestellt wird, die bei jeder Abfrage verarbeitet werden.
  • Kapazitätsbasierte Preise. Sie erwerben Slots, die virtuelle CPUs sind. Wenn Sie Slots erwerben, erwerben Sie dedizierte Verarbeitungskapazität, die Sie zum Ausführen von Abfragen verwenden können. Slots sind in folgenden Zusicherungsplänen verfügbar:
    • Jährlich: Sie verpflichten sich zu 365 Tagen.
    • Dreijährige Sie verpflichten sich zu 365*3 Tagen.

Ein BigQuery-Slot hat einige Gemeinsamkeiten mit den SPUs von Netezza, z. B. CPU, Arbeitsspeicher und Datenverarbeitung. Sie stellen jedoch nicht dieselbe Maßeinheit dar. Netezza SPUs haben eine feste Zuordnung zu den zugrunde liegenden Hardwarekomponenten, während der BigQuery-Slot eine virtuelle CPU darstellt, die zum Ausführen von Abfragen verwendet wird. Um die Slot-Schätzung zu unterstützen, empfehlen wir die Einrichtung von BigQuery-Monitoring mit Cloud Monitoring und die Analyse Ihrer Audit-Logs mit BigQuery. Zum Visualisieren der BigQuery-Slot-Auslastung können Sie auch Tools wie Looker Studio oder Looker verwenden. Durch regelmäßiges Monitoring und Analyse der Slot-Auslastung können Sie abschätzen, wie viele Slots Ihr Unternehmen benötigt, während Sie in Google Cloud wachsen.

Beispiel: Sie reservieren zuerst 2.000 BigQuery-Slots, um 50 Abfragen mit mittlerer Komplexität gleichzeitig auszuführen. Wenn Abfragen regelmäßig länger als ein paar Stunden dauern und Ihre Dashboards eine hohe Slot-Auslastung aufweisen, sind Ihre Abfragen möglicherweise nicht optimiert oder Sie benötigen möglicherweise zusätzliche BigQuery-Slots, um Ihre Arbeitslasten zu unterstützen. Wenn Sie Slots selbst über jährliche oder dreijährige Zusicherungen erwerben möchten, können Sie BigQuery-Reservierungen erstellen. Verwenden Sie dazu die Google Cloud Console oder das bq-Befehlszeilentool. Wenn Sie eine Offline-Vereinbarung über einen Kapazität-basierten Kauf abgeschlossen haben, können deren Bestimmungen von den hier beschriebenen abweichen.

Informationen zum Kontrollieren der Speicher- und Abfrageverarbeitungskosten in BigQuery finden Sie unter Arbeitslasten optimieren.

Sicherheit in Google Cloud

In den folgenden Abschnitten werden allgemeine Sicherheitskontrollen von Netezza beschrieben und wie Sie Ihr Data Warehouse in einer Google Cloud-Umgebung schützen können.

Identitäts- und Zugriffsverwaltung

Die Netezza-Datenbank enthält eine Reihe von vollständig integrierten System-Zugriffssteuerungsfunktionen, mit denen Nutzer auf Ressourcen zugreifen können, für die sie autorisiert sind.

Der Zugriff auf Netezza wird über das Netzwerk zur Netezza-Appliance gesteuert. Dazu werden die Linux-Nutzerkonten verwaltet, die sich beim Betriebssystem anmelden können. Der Zugriff auf die Netezza-Datenbank, -Objekte und -Aufgaben wird mithilfe der Netezza-Datenbanknutzerkonten verwaltet, die SQL-Verbindungen zum System herstellen können.

BigQuery verwendet den IAM-Dienst (Identity and Access Management) von Google, um den Zugriff auf Ressourcen zu verwalten. In BigQuery stehen folgende Ressourcentypen zur Verfügung: Organisationen, Projekte, Datasets, Tabellen und Ansichten. In der Richtlinienhierarchie von IAM sind die Datasets die untergeordneten Ressourcen von Projekten. Eine Tabelle übernimmt die Berechtigungen des Datasets, das sie enthält.

Wenn Sie Zugriff auf eine Ressource erteilen möchten, müssen Sie einem Nutzer, einer Gruppe oder einem Dienstkonto eine oder mehrere Rollen zuweisen. Organisations- und Projektrollen steuern den Zugriff zum Ausführen von Jobs oder zum Verwalten des Projekts, während Dataset-Rollen den Zugriff zum Anzeigen oder Ändern der Daten in einem Projekt steuern.

IAM bietet die folgenden Rollentypen:

  • Vordefinierte Rollen Unterstützung gängiger Anwendungsfälle und Zugriffssteuerungsmuster.
  • Einfache Rollen Schließt die Rollen "Inhaber", "Bearbeiter" und "Betrachter" ein. Einfache Rollen, die einen detaillierten Zugriff auf einen bestimmten Dienst ermöglichen und von Google Cloud verwaltet werden.
  • Benutzerdefinierte Rollen, die genau definierten Zugriff entsprechend einer vom Nutzer angegebenen Liste von Berechtigungen ermöglichen.

Wenn Sie einem Nutzer sowohl vordefinierte als auch einfache Rollen zuweisen, werden ihm die Berechtigungen beider Rollen gewährt.

Sicherheit auf Zeilenebene

Die mehrstufige Sicherheit ist ein abstraktes Sicherheitsmodell, mit dem Netezza Regeln definiert, um den Nutzerzugriff auf Zeilengesicherte Tabellen (RSTs) zu steuern. Eine zeilengesicherte Tabelle ist eine Datenbanktabelle mit Sicherheitslabels in den Zeilen, um Nutzer herauszufiltern, die nicht die entsprechenden Berechtigungen haben. Die Ergebnisse, die für Abfragen zurückgegeben werden, unterscheiden sich je nach Berechtigung des Nutzers, der die Abfrage stellt.

Um die Sicherheit auf Zeilenebene in BigQuery zu erlangen, können Sie autorisierte Ansichten und Zugriffsrichtlinien auf Zeilenebene verwenden. Weitere Informationen zum Entwerfen und Implementieren dieser Richtlinien finden Sie unter Einführung in die BigQuery-Sicherheit auf Zeilenebene.

Datenverschlüsselung

Netezza-Appliances verwenden selbstverschlüsselnde Laufwerke (SEDs), um die Sicherheit und den Schutz der auf der Appliance gespeicherten Daten zu verbessern. SEDs verschlüsseln Daten, wenn sie auf das Laufwerk geschrieben werden. Jedes Laufwerk hat einen Laufwerksverschlüsselungsschlüssel (Disk Encryption Key, DEK), der in der Fabrik festgelegt wird und auf dem Laufwerk gespeichert ist. Das Laufwerk verwendet den DEK, um Daten während des Schreibens zu verschlüsseln und dann beim Entschlüsseln der Daten wenn sie vom Laufwerk gelesen werden. Der Vorgangsweise des Laufwerks sowie seine Ver- und Entschlüsselung ist für die Nutzer, die Daten lesen und schreiben, transparent. Dieser Standardmodus für Verschlüsselung und Entschlüsselung wird als sicheres Löschen-Modus bezeichnet.

Im Modus für sicheres Löschen benötigen Sie keinen Authentifizierungsschlüssel und kein Passwort, um Daten zu entschlüsseln und zu lesen. SEDs bieten verbesserte Funktionen für ein einfaches und schnelles sicheres Löschen in Situationen, in denen Laufwerke umfunktioniert oder aus Support- oder Gewährleistungsgründen zurückgegeben werden müssen.

Netezza verwendet symmetrische Verschlüsselung; Wenn Ihre Daten verschlüsselt sind, können Sie die folgende Entschlüsselungsfunktion verwenden, um Daten zu lesen und zu exportieren:

varchar = decrypt(varchar text, varchar key [, int algorithm [, varchar IV]]);
nvarchar = decrypt(nvarchar text, nvarchar key [, int algorithm[, varchar IV]]);

Alle in BigQuery gespeicherten Daten werden im inaktiven Zustand verschlüsselt. Wenn Sie die Verschlüsselung selbst steuern möchten, können Sie von Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) für BigQuery verwenden. Statt es Google zu überlassen, können Sie auch selbst über Cloud KMS die Schlüsselverschlüsselungsschlüssel, die Ihre Daten schützen, steuern und verwalten. Weitere Informationen finden Sie unter Verschlüsselung.

Leistungsbenchmarking

Damit Sie den Fortschritt und die Verbesserung während des gesamten Migrationsprozesses verfolgen können, ist es wichtig, eine Referenzleistung für den aktuelle Status der Netezza-Umgebung zu erstellen. Wählen Sie zur Erstellung der Referenzleistung eine Reihe von repräsentativen Abfragen aus, die aus den nutzenden Anwendungen wie Tableau oder Cognos erfasst werden.

Umgebung Netezza BigQuery
Datengröße size TB -
Abfrage 1: Name (vollständiger Tabellenscan) mm:ss.ms -
Abfrage 2: name mm:ss.ms -
Abfrage 3: name mm:ss.ms -
Total (Gesamtzahl) mm:ss.ms -

Grundlegende Einrichtung von Projekten

Bevor Sie Speicherressourcen für die Migration von Daten bereitstellen, müssen Sie Ihr Projekt einrichten.

  • Informationen zum Einrichten von Projekten und zum Aktivieren von IAM auf Projektebene finden Sie unter Google Cloud-Architektur-Framework.
  • Informationen zum Entwerfen grundlegender Ressourcen, um Ihre Cloud-Bereitstellung für Nutzung durch Unternehmen vorzubereiten, finden Sie unter Design der Landing Zone in Google Cloud.
  • Informationen zu Data Governance und den Kontrollelementen, die Sie bei der Migration Ihres lokalen Data Warehouse zu BigQuery benötigen, finden Sie unter Datensicherheit und Governance.

Netzwerkverbindung

Es ist eine zuverlässige und sichere Netzwerkverbindung zwischen dem lokalen Rechenzentrum, in dem die Netezza-Instanz ausgeführt wird, und der Google Cloud-Umgebung nötig. Informationen zum Sichern Ihrer Verbindung finden Sie unter Netzwerksicherheit. Wenn Sie Datenextrakte hochladen, kann die Netzwerkbandbreite ein begrenzender Faktor sein. Informationen zum Erfüllen Ihrer Datenübertragungsanforderungen finden Sie unter Netzwerkbandbreite erhöhen.

Unterstützte Datentypen und Attribute

Netezza-Datentypen unterscheiden sich von BigQuery-Datentypen. Weitere Informationen zu BigQuery-Datentypen finden Sie unter Datentypen. Einen detaillierten Vergleich der Datentypen von Netezza und BigQuery finden Sie im IBM Netezza SQL Übersetzung-Leitfaden.

SQL-Vergleich

Netezza-Daten-SQL besteht aus DDL, DML und nur-Netezza Data Control Language (DCL), die sich von GoogleSQL unterscheiden. GoogleSQL ist mit dem SQL 2011-Standard kompatibel und bietet Erweiterungen, die die Abfrage verschachtelter und wiederkehrender Daten unterstützen. Wenn Sie den Legacy-SQL-Dialekt von BigQuery verwenden, finden Sie weitere Informationen unter Legacy-SQL-Funktionen und -Operatoren. Einen detaillierten Vergleich von SQL und Funktionen von Netezza und BigQuery finden Sie im IBM Netezza SQL-Übersetzungsleitfaden.

Um die Migration Ihres SQL-Codes zu vereinfachen, verwenden Sie die Batch-SQL-Übersetzung, um Ihren SQL-Code im Bulk zu migrieren, oder die interaktive SQL-Übersetzung um Ad-hoc-Abfragen zu übersetzen.

Funktionsvergleich

Es ist wichtig zu verstehen, wie Netezza-Funktionen BigQuery-Funktionen zugeordnet werden. Die Funktion Netezza Months_Between gibt beispielsweise eine Dezimalzahl aus, während die BigQuery-Funktion DateDiff eine Ganzzahl ausgibt. Daher müssen Sie eine benutzerdefinierte UDF-Funktion verwenden, um den richtigen Datentyp auszugeben. Einen detaillierten Vergleich zwischen den Funktionen von Netezza SQL und GoogleSQL finden Sie im Leitfaden zur Übersetzung von IBM Netezza SQL.

Datenmigration

Wenn Sie Daten von Netezza zu BigQuery migrieren möchten, exportieren Sie Daten aus Netezza, übertragen sie nach Google Cloud und stellen sie in Google Cloud bereit und laden sie dann in BigQuery. Dieser Abschnitt bietet einen allgemeinen Überblick über den Datenmigrationsprozess. Eine ausführliche Beschreibung des Datenmigrationsprozesses finden Sie unter Schema- und Datenmigrationsprozess. Einen detaillierten Vergleich der Datentypen unterstützt von Netezza und BigQuery finden Sie im IBM Netezza SQL Übersetzung-Leitfaden.

Daten aus Netezza exportieren

Zum Untersuchen von Daten aus Netezza-Datenbanktabellen empfehlen wir, dass Sie sie in eine externe Tabelle im CSV-Format exportieren. Weitere Informationen finden Sie unter Daten in ein Remote-Clientsystem entladen. Sie können Daten auch mit Drittanbietersystemen wie Informatica (oder benutzerdefiniertem ETL) mit JDBC/ODBC-Connectors lesen, um CSV-Dateien zu erstellen.

Netezza unterstützt nur den Export von unkomprimierten FlatFiles (CSV) für jede Tabelle. Wenn Sie jedoch große Tabellen exportieren, kann die unkomprimierte CSV-Datei sehr groß werden. Wenn möglich, sollten Sie die CSV-Datei in ein schemasensitives Format wie Parquet, Avro oder ORC konvertieren, was zu kleineren Exportdateien mit höherer Zuverlässigkeit führt. Wenn CSV das einzige verfügbare Format ist, empfehlen wir, die Exportdateien zu komprimieren, um die Dateigröße zu verringern, bevor Sie sie in Google Cloud hochladen. Wenn Sie die Dateigröße verringern, beschleunigen Sie den Upload und erhöhen die Zuverlässigkeit der Übertragung. Zum Übertragen von Dateien an Cloud Storage können Sie den Befehl gsutil cp -z verwenden, der die Dateien vor dem Hochladen komprimiert.

Datenübertragung und Staging

Nachdem die Daten exportiert wurden, müssen sie übertragen und in Google Cloud bereitgestellt werden. Je nach Datenmenge, die Sie übertragen, und der verfügbaren Netzwerkbandbreite haben Sie mehrere Möglichkeiten, die Daten zu übertragen. Weitere Informationen finden Sie unter Übersicht über Schema- und Datenübertragung.

Mit dem gsutil-Tool können Sie die Übertragung von Dateien nach Cloud Storage automatisieren und parallelisieren. Begrenzen Sie die Dateigröße auf 4 TB (unkomprimiert), um Daten schneller in BigQuery zu laden. Sie müssen jedoch das Schema vorher exportieren. Dies ist eine gute Gelegenheit, BigQuery mithilfe von Partitionierung und Clustering zu optimieren.

Verwenden Sie den Befehl gsutil mb, um die Staging-Buckets zum Speichern der exportierten Daten zu erstellen, und den Befehl gsutil cp, um die Datenexport-Dateien in Cloud Storage-Buckets zu übertragen.

Das gsutil-Tool bietet die Option -m, die den Kopiervorgang mit einer Kombination aus Multithreading und Multiprocessing ausführt, wofür wiederum die Anzahl der Threads und Prozessoren verwendet wird, die durch die Werte parallel_thread_count und parallel_process_count festgelegt werden. Diese Werte haben Sie festgelegt. Dies kann die Leistung erheblich verbessern, wenn Sie Vorgänge mit einer großen Anzahl an Dateien über eine relativ schnelle Netzwerkverbindung ausführen. Weitere Informationen zur Verwendung des gsutil-Tools zur Leistungsoptimierung großer Datenübertragungen finden Sie unter Große Datasets übertragen.

Daten in BigQuery laden

Nachdem die Daten in Google Cloud bereitgestellt wurden, gibt es mehrere Möglichkeiten, die Daten in BigQuery zu laden. Weitere Informationen finden Sie unter Schema und Daten in BigQuery laden.

Partnertools und -support

Sie können erhalten Partnersupport während des Migrationsvorgangs. Um die Migration Ihres SQL-Codes zu vereinfachen, verwenden Sie die Batch-SQL-Übersetzung, um Ihren SQL-Code im Bulk zu migrieren.

Viele Google Cloud-Partner bieten auch Data-Warehouse-Migrationsdienste an. Eine Liste der Partner und ihrer Lösungen finden Sie unter Mit einem Partner mit BigQuery-Fachwissen zusammenarbeiten.

Nach der Migration

Nach Abschluss der Datenmigration können Sie mit der Optimierung der Nutzung von Google Cloud beginnen, um geschäftliche Anforderungen zu erfüllen. Dazu gehören möglicherweise die Verwendung der Explorations- und Visualisierungstools von Google Cloud, um Erkenntnisse für Stakeholder des Unternehmens abzuleiten, Abfragen mit unzureichender Leistung zu optimieren oder ein Programm zu entwickeln, das die Akzeptanz durch die Nutzer unterstützt.

Verbindung zu BigQuery APIs über das Internet herstellen

Im folgenden Diagramm ist zu sehen, wie eine externe Anwendung über die API eine Verbindung zu BigQuery herstellen kann:

Image

Das Diagramm zeigt die folgenden Schritte:

  1. In Google Cloud wird ein Dienstkonto mit IAM-Berechtigungen erstellt. Der Dienstkontoschlüssel wird im JSON-Format generiert und auf den Front-End-Server kopiert, z. B. MicroStrategy.
  2. Das Front-End liest den Schlüssel und fordert ein OAuth-Token von Google APIs in HTTPS an.
  3. Das Front-End sendet dann BigQuery-Anfragen zusammen mit dem Token an BigQuery.

Weitere Informationen finden Sie unter API-Anfragen autorisieren.

Optimierung für BigQuery

GoogleSQL ist mit dem SQL 2011-Standard kompatibel und bietet Erweiterungen, die die Abfrage verschachtelter und wiederholter Daten unterstützen. Die Optimierung von Abfragen für BigQuery ist entscheidend für die Verbesserung von Leistung und Antwortzeit.

Funktion "Months_Between" in BigQuery durch UDF ersetzen

Netezza behandelt die Tage in einem Monat als immer 31. Die folgende benutzerdefinierte UDF erstellt die Netezza-Funktion mit hoher Genauigkeit neu, die Sie aus Ihren Abfragen aufrufen können:

CREATE TEMP FUNCTION months_between(date_1 DATE, date_2 DATE)
AS (
  CASE
    WHEN date_1 = date_2
      THEN 0
    WHEN EXTRACT(DAY FROM DATE_ADD(date_1, INTERVAL 1 DAY)) = 1
      AND EXTRACT(DAY FROM DATE_ADD(date_2, INTERVAL 1 DAY)) = 1
      THEN date_diff(date_1,date_2, MONTH)
    WHEN EXTRACT(DAY FROM date_1) = 1
      AND EXTRACT(DAY FROM DATE_ADD(date_2, INTERVAL 1 DAY)) = 1
      THEN date_diff(DATE_ADD(date_1, INTERVAL -1 DAY), date_2, MONTH) + 1/31
    ELSE date_diff(date_1, date_2, MONTH) - 1 + ((EXTRACT(DAY FROM date_1) + (31 - EXTRACT(DAY FROM date_2))) / 31)
    END
);

In Netezza Gespeicherte Verfahren migrieren

Wenn Sie in Netezza gespeicherte Verfahren in ETL-Arbeitslasten zum Erstellen von Faktentabellen verwenden, müssen Sie diese gespeicherten Prozeduren in BigQuery-kompatible SQL-Abfragen migrieren. Netezza verwendet die Skriptsprache NZPLSQL, um mit gespeicherten Prozeduren zu arbeiten. NZPLSQL basiert auf der Postgres PL/pgSQL-Sprache. Weitere Informationen finden Sie im Leitfaden zur Übersetzung von IBM Netezza SQL.

Benutzerdefinierte UDF zum Simulieren von Netezza-ASCII

Die folgende benutzerdefinierte UDF für BigQuery korrigiert Codierungsfehler in Spalten:

CREATE TEMP FUNCTION ascii(X STRING)
AS (TO_CODE_POINTS(x)[ OFFSET (0)]);

Nächste Schritte