Reporting: Warehouse-DB – Erweiterte Regeln

Document created by RSA Information Design and Development on May 11, 2018
Version 1Show Document
  • View in full screen mode

Im Abschnitt werden die erweiterte Regelabfragesyntax und Beispiele erläutert.

Allgemeine Syntax einer erweiterten Regel

In der folgenden Abbildung sehen Sie, wie erweiterte Abfragen definiert werden.

Beispiel für das Definieren einer erweiterten Abfrage 

Folgende Syntax ist ein Beispiel einer erweiterten Abfrage:

DROP Table IF EXISTS sessions21022014;

CREATE External TABLE sessions21022014

ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.avro.AvroSerDe’

STORED AS INPUTFORMAT

'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

LOCATION '/RSA/rsasoc/v1/sessions/data/2013/12/2’

TBLPROPERTIES('avro.schema.literal'='
{

"type":"record";

"name":"nextgen";

"fields":
[
{"name":"time",  "type":["long", "null"], "default":"null"},

{"name":"threat_category",  "type":["string", "null"], "default":"null"},

{"name":"ip_src",  "type":["string", "null"], "default":"null"},

{"name":"device_class",  "type":["string", "null"], "default":"null"}
]
'};

set mapred.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;

select  from_unixtime(time), threat_category, ip.src from  time_variable where threat_category is not NULL and time >= ${report_starttime} and time <= ${report_endtime};

Hinweis: Reporting Engine behandelt eine Zeile, die mit <hyphen> <hyphen> beginnt, in einer Expert Warehouse-Regel als Kommentar.
Beispiel:
set mapred.input.dir.recursive=true;
-- This is an Expert comment
set hive.mapred.supports.subdirectories=true;

Die allgemeine Syntax einer erweiterten Abfrage wird unten erklärt:

  1. Eine externe Tabelle erstellen und anlegen und anschließend die Zeile formatieren:
    Zunächst legen wird die Tabelle ab, wenn die Tabelle bereits vorhanden ist, und erstellen die externe Tabelle sessions21022014
    DROP TABLE IF EXISTS sessions21022014
    CREATE EXTERNAL TABLE sessions21022014
    .

    Hinweis:  Sie müssen nur dann eine externe Tabelle erstellen, wenn Sie gerade eine andere Tabelle benutzen. Wenn Sie zum Beispiel eine andere Tabelle außer sessions21022014 verwenden, müssen Sie die Tabelle ablegen und eine externe Tabelle erstellen.

    Spezifizieren Sie dann das Zeilenformat als Avro.SerDe-Schnittstelle, um HIVE über die Verarbeitung eines Berichts anzuweisen. Mithilfe von Avro.SerDe können Sie Avro-Daten als HIVE-Tabellen lesen und speichern und sie als Eingabe- und Ausgabeformat speichern.
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.Avro.SerDe'
    STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

  1. HDFS-Verzeichnis angeben:
    Im nächsten Schritt müssen Sie das HDFS-Verzeichnis '/RSA/rsasoc/v1/sessions/data/2013/12/2' angeben, aus dem die Daten vor der Ausführung der HIVE-Anweisungen abgefragt werden. Der Speicherortparameter spezifiziert die Daten, die abhängig von ihrem Eingabedatum abgerufen werden müssen. Dies ist ein Variablenparameter. Folglich können Sie Werte nach dem festgelegten Eingabedatum abrufen.
  2. Tabellenschema definieren:
    Im dritten Schritt definieren Sie das Tabellenschema, indem Sie Spalten mit einem spezifischen Datentyp und Standardwert als „Null“ definieren.
    TBLPROPERTIES('avro.schema.literal'='
    {"type":"record";
    "name":"nextgen";
    "fields":
    [
    {"name":"ip_src",  "type":["string", "null"], "default":"null"}
    ]
    '};
  3. Daten von dem Verzeichnis, das Unterverzeichnisse enthält, importieren:
    Anschließend müssen Sie HIVE aktivieren, damit alle Unterverzeichnisse rekursiv gescannt und alle Daten aus allen Unterverzeichnissen abgerufen werden.
    set mapred.input.dir.recursive=true;
    set hive.mapred.supports.subdirectories=true;
  4. Daten aus der HIVE-Tabelle abrufen:
    Sobald Sie alle oben angeführten Anweisungen ausgeführt haben, können Sie die Datenbank mit der HIVE-Abfrageklausel Auswählen abfragen, um die Daten aus der HIVE-Tabelle abzurufen.

Folgende Beispiele beschreiben erweiterte Regeln im Expertenmodus:

  • Stündlicher, täglicher, wöchentlicher und monatlicher Bericht
  • Tabellenpartition auf Basis eines Standortberichts
  • Verbinden von Protokollen und Sitzungen auf Grundlage eines unique_id-Berichts
  • Listenbericht
  • Parametrisierter Bericht
  • Partitionsbasierte Tabelle mit mehreren Speicherorten
  • Automatisierte Partitionierung mithilfe der benutzerdefinierten Funktion(ab Version 10.5.1) 

Stündlicher, täglicher, wöchentlicher und monatlicher Bericht

In diesen Beispielregeln können Sie verschiedene Berichte für den 2. Dezember 2013 erstellen (siehe Abbildung unten). Die Variable „Datum“ in der Anweisung LOCATION kann verändert werden, je nachdem, in welcher Sie einen stündlichen, täglichen, wöchentlichen und monatlichen Bericht erstellen können.

Stündlicher Bericht

In dieser Beispielregel können Sie einen stündlichen Bericht für den 2. Dezember 2013 erstellen. Die Anweisung LOCATION kann verändert werden, um einen stündlichen Bericht zu erzeugen.

LOCATION '/RSA/rsasoc/v1/sessions/data/2013/12/2' - Die Datumsangabe (2013/12/2) steht für Jahr/Monat/Tag. Die gesamten Daten für den 2. Dezember 2013 werden mithilfe der Anweisung LOCATION abgerufen. 

Planen eines stündlichen Berichts

Der Ergebnissatz dieser Abfrage wäre ein stündlicher Bericht.

Täglicher Bericht

In dieser Beispielregel können Sie einen täglichen Bericht für Dezember 2013 erstellen. Die Anweisung LOCATION kann verändert werden, um einen täglichen Bericht zu erzeugen.

LOCATION '/RSA/rsasoc/v1/sessions/data/2013/12' – Die Datumsangabe (2013/12) steht für Jahr/Monat. Die gesamten Daten für Dezember 2013 werden mithilfe dieser Location-Anweisung abgerufen.

Planen eines täglichen Berichts

Das ResultSet dieser Abfrage wäre ein täglicher Bericht.

Wöchentlicher Report

In dieser Beispielregel können Sie einen wöchentlichen Bericht für Dezember 2013 erstellen. Die Anweisung LOCATION kann verändert werden, um einen wöchentlichen Bericht zu erzeugen.

LOCATION '/RSA/rsasoc/v1/sessions/data/2013/12' – Die Datumsangabe (2013/12) steht für Jahr/Monat. Die gesamten Daten für Dezember 2013 werden mithilfe dieser Location-Anweisung abgerufen.

Planen eines wöchentlichen Berichts

Der Ergebnissatz dieser Abfrage wäre ein wöchentlicher Bericht.

Monatlicher Bericht

In dieser Beispielregel können Sie einen monatlichen Bericht für das Jahr 2013 erstellen. Die Anweisung LOCATION kann verändert werden, um einen monatlichen Bericht zu erzeugen.

LOCATION '/RSA/rsasoc/v1/sessions/data/2013' – Die Datumsangabe (2013) steht für Jahr. Die gesamten Daten für das Jahr 2013 werden mithilfe dieser Location-Anweisung abgerufen.

Planen eines monatlichen Berichts

Der Ergebnissatz dieser Abfrage wäre ein monatlicher Bericht.

Weitere Informationen zur LOCATION-Definition erhalten Sie unter HDFS-Standort spezifizieren in dem Abschnitt Allgemeine Syntax einer erweiterten Regel.

Führen Sie folgende Schritte nacheinander aus, um das ResultSet einer erweiterten Regel anzusehen.

  1. Definieren einer erweiterten Regel
  2. Hinzufügen einer erweiterten Regel zu einem Bericht
  3. Planen von Berichten
  4. Anzeigen von geplanten Berichten

Die folgende Abbildung zeigt, wie Sie eine erweiterte Regel definieren können.

Beispiel für die erweiterte Regel

Die folgende Abbildung zeigt, wie Sie einem Bericht eine erweiterte Regel hinzufügen (Zum Beispiel AllEventCategories).

Erweiterte Regel zu einem Bericht

Die folgende Abbildung zeigt, wie Sie einen täglichen Bericht planen.

Planen eines täglichen Berichts

Wenn Sie einen Bericht für einen bestimmten Zeitraum erzeugen möchten, müssen Sie den Zeitraum in der Abfrage mithilfe der folgenden zwei Variablen manuell definieren:

${report_starttime} - The starting time of the range in seconds.
${report_endtime} - The ending time of the range in seconds.

Beispiel: SELECT from_unixtime(time), threat_category, ip.src FROM time_variable WHERE threat_category is not NULL AND time >= ${report_starttime} AND time <= ${report_endtime};

Die folgende Abbildung zeigt den Ergebnissatz der Planung eines täglichen Berichts.

Ergebnissatz der Planung eines täglichen Berichts

Tabellenpartition auf Basis eines Standortberichts

In dieser Beispielregel können Sie eine standortbasierte Tabellenpartition erstellen. Jede Tabelle kann einen oder mehrere Partitionsschlüssel haben, die festlegen, welche Daten gespeichert werden. Zum Beispiel: Ein country_dst des Typs STRING und ein ip_src des Typs STRING. Jeder einzelne Wert der Partitionsschlüssel definiert eine Partition der Tabelle.

In dem angeführten Beispiel wird eine HIVE-Abfrage ausgeführt, um das Zielland und die IP-Adresse der Quelle aus der Tabelle sessions05032014 abzurufen und den Ergebnissatz zu gruppieren, die in diesen Feldern eingestellt sind.

Diese Regel bietet Informationen zur erstellten Tabelle, zur formatierten Zeile, zum Speicherort (Verzeichnispfad) für Avro-Datendateien in Warehouse und gibt einen Ergebnissatz anhand der HIVE-Abfrage zurück, um anzuzeigen, dass die Abfrage einen Ergebnissatz zurückgegeben hat. Weitere Informationen zu diesen Anweisungen finden Sie im Abschnitt Allgemeine Syntax einer erweiterten Regel.

Tabellenpartition auf Basis eines Standortberichts

Die folgende Abbildung zeigt den Ergebnissatz der Erstellung einer Tabellenpartition gestützt auf einen Standortbericht.

Ergebnissatz einer Tabellenpartition auf Basis eines Standortberichts

Verbinden von Protokollen und Sitzungen auf Grundlage eines unique_id-Berichts

In dieser Beispielregel können Sie eine Regel zur Verbindung der Protokoll- und Sitzungstabelle erstellen, um die unique_id, die IP-Adresse der Quelle und des Ziels und das ID-Paket, basierend auf unique_id, abzurufen.

Im angeführten Beispiel kann eine HIVE-Abfrage ausgeführt werden, um bestimmte Felder sowohl aus der sessions_table als auch der logs_table abzurufen, indem eine Verbindung auf Basis des Feldes „unique_id“ ausgeführt wird.

Diese Regel bietet Informationen zur erstellten Tabelle, zur formatierten Zeile, zum Speicherort (Verzeichnispfad) für Avro-Datendateien in Warehouse und gibt einen Ergebnissatz anhand der HIVE-Abfrage zurück, um anzuzeigen, dass die Abfrage einen Ergebnissatz zurückgegeben hat. Weitere Informationen zu diesen Anweisungen finden Sie im Abschnitt Allgemeine Syntax einer erweiterten Regel.

Beispiel für das Verbinden von Protokollen und Sitzungen auf Grundlage eines unique_id-Berichts

Die folgende Abbildung zeigt den Ergebnissatz der Verbindung der Protokoll- und Sitzungsstabelle auf Basis der unique_id.

Ergebnissatz des Verbindens von Protokollen und Sitzungen auf Grundlage eines unique_id-Berichts

Listenbericht

In diesem Beispiel können Sie eine Berichtliste erstellen, um die IP-Adresse der Quelle und des Ziels ebenso wie den Gerätetyp aus der Tabelle lists_test, in welcher der Gerätetyp nicht Null ist und die IP-Adresse von der richtigen Ereignisliste abgerufen wird.

Diese Regel bietet Informationen zur erstellten Tabelle, zur formatierten Zeile, zum Speicherort (Verzeichnispfad) für Avro-Datendateien in Warehouse und gibt einen Ergebnissatz anhand der HIVE-Abfrage zurück, um anzuzeigen, dass die Abfrage einen Ergebnissatz zurückgegeben hat. Weitere Informationen zu diesen Anweisungen finden Sie im Abschnitt Allgemeine Syntax einer erweiterten Regel.

Beispiel für Listenbericht

Folgende Abbildung zeigt den Ergebnissatz der Ausführung einer Berichtliste an.

Ergebnissatz eines Listenberichts

Parametrisierter Bericht

In dieser Beispielregel können Sie eine Regel erstellen, um die IP-Adressen der Quelle und des Ziels ebenso wie den Gerätetyp aus der Tabelle runtime_variable auf Basis der angegebenen Laufzeitvariable ${EnterIPDestination} abzurufen. Bei der Laufzeit werden Sie aufgefordert, einen Wert für die IP-Adresse des Ziels ip_dst einzugeben. Basierend auf dem eingegebenen Wert wird der Ergebnissatz angezeigt.

Diese Regel bietet Informationen zur erstellten Tabelle, zur formatierten Zeile, zum Speicherort (Verzeichnispfad) für Avro-Datendateien in Warehouse und gibt einen Ergebnissatz anhand der HIVE-Abfrage zurück, um anzuzeigen, dass die Abfrage einen Ergebnissatz zurückgegeben hat. Weitere Informationen zu diesen Anweisungen finden Sie im Abschnitt Allgemeine Syntax einer erweiterten Regel.

Parametrisierter Bericht

Die folgende Abbildung zeigt den Ergebnissatz der Ausführung eines parametrisierten Berichts.

Ergebnissatz eines parametrisierten Berichts

Partitionsbasierte Tabelle mit mehreren Speicherorten

Im Folgenden finden Sie ein Beispiel für eine partitionsbasierte Tabelle mit mehreren Speicherorten:

set mapred.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;
DROP TABLE IF EXISTS AVRO_COUNT;
CREATE EXTERNAL TABLE AVRO_COUNT
PARTITIONED BY (partition_id int)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.literal'='{
"name": "my_record", "type": "record",
"fields": [
{"name":"sessionid", "type":["null", "long"], "default" : null},
{"name":"time", "type":["null", "long"], "default" : null}
]}'
)
STORED AS
INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat';
ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=0) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/8';
ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=1) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/9';
ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=2) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/10/';
ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=3) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/11/';
ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=4) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/12/';
SELECT COUNT(*) as TOTAL FROM AVRO_COUNT WHERE time >= ${report_starttime} AND time
<= ${report_endtime};

Die partitionsbasierte Tabelle mit mehreren Speicherorten wird im Folgenden erläutert:

  1. Aktivieren Sie HIVE, um alle Unterverzeichnisse rekursiv zu scannen und alle Daten aus den Unterverzeichnissen abzurufen.
    set mapred.input.dir.recursive=true;
    set hive.mapred.supports.subdirectories=true;
  2. Sie müssen eine externe Tabelle erstellen und anlegen und anschließend die Zeile formatieren:
    DROP TABLE IF EXISTS AVRO_COUNT;
    CREATE EXTERNAL TABLE AVRO_COUNT
    PARTITIONED BY (partition_id int)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
    WITH SERDEPROPERTIES (
    'avro.schema.literal'='{
    "name": "my_record", "type": "record",
    "fields": [
    {"name":"sessionid", "type":["null", "long"], "default" : null},
    {"name":"time", "type":["null", "long"], "default" : null}
    ]}'
    )
    STORED AS
    INPUTFORMAT
    'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
    OUTPUTFORMAT
    'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat';

Hinweis:  Sie müssen nur dann eine externe Tabelle erstellen, wenn Sie eine andere Tabelle benutzen. Wenn Sie zum Beispiel eine andere Tabelle außer AVRO_COUNT verwenden, müssen Sie die Tabelle ablegen und eine externe Tabelle erstellen.

Hinweis: Wichtige Punkte, die Sie beim Erstellen einer Tabelle beachten müssen:
    - Wenn Sie eine „nicht externe“ Tabelle ablegen, werden die Daten gelöscht.
    - Die Tabelle wird auf einer einzigen Spalte mit dem Namen „partition_id“ partitioniert. Dies ist die Standardspalte für Reporting Engine.
    - Der Standardwert einer beliebigen Spalte ist Null, da die AVRO-Datei die angegebene Spalte nicht enthalten darf.
    - Die Spaltennamen müssen in Kleinschreibung angegeben sein, da in HIVE nicht zwischen Groß- und Kleinschreibung unterschieden wird, in AVRO jedoch wird unterschieden.
    - Sie müssen avro.schema.literal in SERDEPROPERTIES angeben.

Weitere Informationen zur Regelsyntax finden unter Apache HIVE

  1. Partitionen hinzufügen:
    Nachdem Sie eine Tabelle definiert haben, müssen Sie die HDFS-Speicherorte angeben, von denen die Daten abgefragt werden müssen, bevor Sie die HIVE-Anweisungen ausführen. Der Speicherortparameter gibt die Daten an, die je nach dem angegebenen Datum abgerufen werden sollen. Die Daten sind auf mehrere Speicherorte oder Verzeichnisse in HDFS verteilt. Für jeden Speicherort müssen Sie eine Partition mit zugewiesenen eindeutigen Werten in der Partitionsspalte hinzufügen. Die Speicherorte können jedes Verzeichnis in HDFS sein
    ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=0) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/8';
    ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=1) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/9';
    ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=2) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/10/';
    ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=3) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/11/';
    ALTER TABLE AVRO_COUNT ADD PARTITION(partition_id=4) LOCATION '/rsasoc/v1/sessions/data/2015/07/22/12/';

Hinweis: HIVE liest alle Dateien an diesen Speicherorten als AVRO. Falls an einem dieser Speicherorte eine Nicht-AVRO-Datei vorliegt, kann die Abfrage fehlschlagen.

  1. Abfrage ausführen
    SELECT COUNT(*) as TOTAL FROM AVRO_COUNT WHERE time >= ${report_starttime} AND time
    <= ${report_endtime};

    Wenn eine Tabelle erstellt wird, können Sie bestimmte Abfragen ausführen, um die Daten zu filtern. Beispiel: Nach der Erstellung der Tabelle können Sie die Daten wie in den folgenden Beispielen gezeigt filtern:
    Sitzungen mit einer bestimmten Quell-IP-Adresse:
    SELECT * FROM AVRO_COUNT WHERE time >= ${report_starttime} AND time <= ${report_endtime}  AND ip_src = '127.0.0.1';
    Gruppieren nach Benutzerziel:
    SELECT * FROM AVRO_COUNT WHERE time >= ${report_starttime} AND time <= ${report_endtime}  GROUP BY usr_dst;

Automatisierte Partition mit benutzerdefinierter Funktion

In 10.5.1 können Sie im Expertenmodus die benutzerdefinierte Funktion zur Automatisierung des Hinzufügens von Partitionierungen in einer vom Benutzer definierten Tabelle verwenden.

Allgemeine Syntax

RE WH CUSTOM ADDPARTITIONS(table, namespace, rollup, [starttime, endtime])

Die folgende Tabelle beschreibt die Syntax der benutzerdefinierten Funktion:

                      
S.NoNameBeschreibung
1Tabelle Der Tabellenname, für den die Partitionierung hinzugefügt werden muss.
2namespaceDer Namespace kann Sitzungen oder Protokolle umfassen.
3rollup

Dieser Wert bestimmt die Ebene des Verzeichnispfads, der in Partitionierungen einbezogen werden soll. Der
Wert kann „STUNDE“, „TAG“ oder „MINUTE“ sein. Wenn Warehouse Connector für den Rollup „TAG“ konfiguriert ist, ergibt das Festlegen dieses Wertes auf „STUNDE“ KEINE Ergebnisse. Die Anzahl und der Speicherort jeder Partitionierung basiert auf dem Zeitbereich für das Ausführen der Regel und dem Rollup-Wert.

4(Optional) starttime, endtime

Um Partitionen für einen bestimmten Zeitbereich zu erzeugen, der nicht dem in der Regel genannten entspricht, müssen Sie „starttime“ und „endtime“ in Epochensekunden angeben.

Hinweis: Ausdrücke werden für „starttime“ und „endtime“ nicht unterstützt.

Die benutzerdefinierte Funktion wird aufgerufen, wenn Reporting Engine die Regel entweder während eines Regeltests oder eines geplanten Berichts ausführt. Während der Ausführung einer Expertenregel extrahiert Reporting Engine jedes Mal, wenn die Funktionsdeklaration erkannt wird, die erforderlichen
Argumente, fügt n Anweisungen vom Typ „ADD PARTITION HiveQL“ hinzu und führt sie auf dem Hive-Server aus.

Der Speicherort und die Verzeichnisstruktur werden durch das in der Regel übergebene Argument und die Hive-Datenquellenkonfiguration
in Reporting Engine bestimmt. Die Anzahl der Partitionen ist abhängig vom angegebenen Rollup und dem bei der Ausführung der Regel verwendeten Zeitraum. Beispiel: Der Rollup „STUNDE“ und der Zeitbereich als „LETZTE 2 Tage“ führen zu 48 Partitionierungen für 48 Stunden während
Reporting Engine mit dem Rollup „TAG“ 2 Partitionierungen erstellt, eine für jeden Tag.

Die Partitionierungsabfrage wird durch die im Attribut AlterTableTemplate der Hive-Konfiguration der Reporting Engine festgelegte Syntax-Vorlage erzeugt.

Hinweis: Standardmäßig beginnt diese Funktion das Hinzufügen von Partitionierungen in einer Tabelle mit den Partitions-IDs von 0 bis N-1. Daher muss die Tabelle nach einer nach einer einzelnen Ganzzahl benannten Partitionierungs-ID partitioniert werden.

Im Folgenden ist ein Beispiel für eine automatisierte Partitionierung mithilfe der benutzerdefinierten Funktion dargestellt:
set mapred.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;
DROP TABLE IF EXISTS AVRO_COUNT;

CREATE EXTERNAL TABLE AVRO_COUNT
PARTITIONED BY (partition_id int)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.literal'='{ 
  "name": "my_record", "type": "record", 
  "fields": [ 
    {"name":"sessionid", "type":["null", "long"], "default" : null} 
   ,{"name":"time", "type":[ "null" , "long"], "default" : null} 
   ,{"name":"unique_id", "type":["null", "string"], "default" : null} 
   ]}'
)
STORED AS 
INPUTFORMAT 
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat';

RE_WH_CUSTOM_ADDPARTITIONS(AVRO_COUNT, 'sessions', 'DAY');
SELECT COUNT(*) as TotalSessions FROM AVRO_COUNT
WHERE time >= ${report_starttime} AND time <= ${report_endtime};

Erstellen eines benutzerdefinierten Tabellenberichts

In 10.6.1 können Sie benutzerdefinierte Tabellen auf dem Hive-Server verwenden und erstellen. Reporting Engine unterstützt die Ausführung von Abfragen für benutzerdefinierte Tabellen und die Möglichkeit, aus einer einzigen Regelausgabe eine neue Tabelle zu erstellen. Wenn diese Funktion in der Benutzeroberfläche der Warehouse-Regelerstellung aktiviert ist, wird Benutzern eine Liste mit benutzerdefinierten Tabellen angezeigt, die im Hive-Server verfügbar sind.

Beispiel für das Erstellen eines benutzerdefinierten Tabellenberichts

Legen Sie zur Aktivierung dieser Funktion CustomTablesEnabled auf TRUE fest, indem Sie zu Reporting Engine -> Durchsuchen ->Hive-Konfiguration navigieren.

Einstellung für benutzerdefinierte Tabellen

Erstellen einer benutzerdefinierten Tabelle aus regulären Regeln

Um einen Bericht planen, der eine einzelne SAW-Regel enthält, wird eine neue Texteingabe mit einem Warehouse CTAS Name hinzugefügt. Der Benutzer kann jetzt einen Namen für die benutzerdefinierte Tabelle angeben, die aus der Ausgabe der Regel im Bericht erstellt wird.

Hinweis: Diese Funktion ist nur verfügbar, wenn der Bericht eine einzelne SAW-Regel auf der Seite „Planung“ enthält. Ansonsten ist diese Option ausgeblendet.

Der Prozess zur Verwendung der Funktion wird unten erklärt:

  1. Erstellen Sie eine Regel zum Filtern mit Daten in SAW.Eine Regel zum Filtern mit Daten in SAW
  2. Erstellen Sie einen Bericht mit der oben genannten Regel.SAW-Bericht

  3. Erstellen Sie eine Planung und geben Sie den CTAS-Tabellennamen ein.
    Planen eines Berichts mit einem CTAS-Tabellennamen

  4. Führen Sie den Bericht aus und Reporting Engine erstellt die nachstehende Ergebnisübersicht für die Planung.
    Ergebnisatz eines Berichts mit einem CTAS-Tabellennamen

  5. Im nächsten Schema aktualisieren Sie Reporting Engine oder starten Reporting Engine neu, die CTAS-Tabelle wird aufgeführt.Die CTAS-Tabelle wird aufgeführt

You are here
Table of Contents > Anhang > Warehouse-DB – Erweiterte Regeln

Attachments

    Outcomes