So umgehen Sie Fehler beim Erstellen von Berichten in Power BI und beim Aufbau eines Upload-Systems für Big Data



Hinter schönen und verständlichen Power BI-Dashboards stehen oft Wochen der Vorbereitung und des Data Mining. Insbesondere, wenn es darum geht, nützliche BI-Berichte in einem großen Unternehmen mit einem monatlichen Verkehrsaufkommen von mehreren zehn Millionen Besuchern zu erstellen.

In diesem Artikel möchte ich eine Reihe negativer Aspekte beschreiben, die beim Erstellen von BI-Berichten auf der Grundlage von Daten aus Webanalysesystemen in einer Reihe von Unternehmen (große Vertreter des russischen E-Commerce, Versicherungsunternehmen usw.) aufgetreten sind. Der Artikel zielt nicht darauf ab, Werbung gegen bestimmte Tools oder Entscheidungen gegen Werbung zu machen oder umgekehrt. Es wurde vorbereitet, um mögliche negative Momente für andere Benutzer zu vermeiden und Lösungsoptionen anzugeben.

Haftungsausschluss


Ich spreche von großen Datenmengen und zeige Beispiele für das Hochladen und Abtasten von Google Analytics 360. Bei Projekten mit kleinen Datenmengen bestehen solche Schwierigkeiten möglicherweise nicht. Ich habe alle identifizierten Probleme in der Praxis getroffen und in dem Artikel beschreibe ich nur meine Erfahrung bei der Lösung - Ihre kann völlig anders sein.

Anschluss an Yandex.Metrica


Yandex.Metrica bietet im Vergleich zu Google Analytics mildere Stichprobenbedingungen und eine intuitive Benutzeroberfläche. Daher bevorzugen viele Vermarkter Yandex.Metrica und erstellen BI-Berichte für das Hochladen von Daten von dort. Verwenden Sie dazu den Connector von Maxim Uvarov. Diese Methode ist unsicher und erlaubt keine Verarbeitung komplexer Anforderungen.

Große Unternehmen benötigen eine Garantie dafür, dass vertrauliche Informationen nicht in die Hände von Kritikern gelangen und Finanzindikatoren nur für Stakeholder und ausschließlich innerhalb des Unternehmens verwendet werden.

Das erste große Minus ist, dass Sie in Power BI die Einstellung "Datenschutzstufen ignorieren" aktivieren müssen, um den Connector verwenden zu können. Andernfalls funktioniert dies einfach nicht.



Somit können vertrauliche Daten in die Hände eines nicht autorisierten Benutzers fallen. Dies wird durch einen Auszug aus der Power BI-Hilfe bestätigt.



Die Datenverbindung ist anonym. Es gibt jedoch keine Autorisierung oder Überprüfung der Berechtigung zur Verwendung dieser Daten für Benutzer, die dies tatsächlich dürfen.



Damit diese Konnektoren funktionieren, benötigen Sie ein Oauth-Zugriffstoken. Die Beschreibung des Connectors enthält einen Link, wie Sie der Anwendung Zugriff auf Ihr Konto gewähren können.



Tatsächlich erhält eine Drittanbieteranwendung Zugriff auf Ihr Konto. Niemand trägt eine Garantie für die Sicherheit Ihrer Daten.



Das zweite Minus ist, dass die Yandex.Metrica-API keine großen Datenmengen in großen Projekten verarbeiten kann. Daher weigert sich der Connector auch, mit komplexen Abfragen von Yandex.Metrica-Rohdaten zu arbeiten - er entlädt sie nicht.

Beispielsweise müssen Sie Daten für ein Jahr ohne komplexe Filter hochladen. Der Connector gibt einen Fehler aus: „Die Anforderung ist zu komplex. Bitte reduzieren Sie den Datumsabstand oder die Probenahme. "



Dies ist natürlich eine Übersetzung des Fehlers der Yandex.Metrica-API selbst. In diesem Fall haben wir jedoch keine Wahl, Daten mit einer Aufschlüsselung nach Monat oder Tag herunterzuladen, z. B. Daten für jeden Monat zu zyklisieren und sie zu einem einzigen Datensatz zu kombinieren, um einen API-Fehler zu überwinden.
Wenn Sie den Zeitraum erheblich verkürzen, können Sie mit der API Daten pumpen. Dies ist jedoch nur ein kleiner Teil dessen, was wir benötigen.



Um große Berichte zu erstellen, ist das Entladen für kurze Zeiträume unpraktisch und unpraktisch. In der Praxis müssen Sie häufig durch komplexe Open-Site-Trichter mit einer großen Anzahl von Besuchen pro Tag entladen werden. Insbesondere bei Verwendung komplexer Besuchssegmente ist es praktisch unmöglich, die erforderlichen Daten hochzuladen.

Selbst wenn Sie die Daten laden konnten, ist es keine Tatsache, dass es möglich ist, sie in das Datenmodell hochzuladen, um die Berichterstellung selbst zu erstellen, da hin und wieder verschiedene Ladefehler auftreten. Aus irgendeinem Grund treten selbst bei einer normal geladenen Tabelle Fehler auf.


Damit alle Stakeholder im Unternehmen den auf dem Yandex.Metrica-API-Connector basierenden Bericht verwenden können, müssen Sie den Bericht im PowerBI-Service veröffentlichen. In diesem Fall müssen auch die Datenschutzstufen ignoriert werden.


Wenn die Visualisierung konfiguriert und der Bericht in der Microsoft Cloud veröffentlicht wird, zeigt der Connector einen kombinierten Abfragefehler an und wird nicht über den Power BI-Dienst aktualisiert. Sie können die geplante Aktualisierung Ihres Berichts nicht konfigurieren. Der Fehler tritt auf, wenn eine der Abfragen, die die endgültige Upload-Tabelle bilden, die Logik der gleichzeitigen Arbeit mit der externen und internen Abfrage enthält.

In dem Fehler



wird nur die Tabelle "Aufgerufene Funktion" angezeigt: Diese Tabelle wird aufgrund der PQYM-Funktion erhalten, die mit einer externen Datenquelle - der Yandex.Metrica-API - arbeitet. Der Berichtsaktualisierungsmechanismus in Power BI funktioniert nicht und fordert Sie auf, die Kombination von Abfragen zu wiederholen. Dies liegt an den internen Links einer Anforderung zum Herstellen einer Verbindung mit einer externen Anforderung sowie an der Struktur der Funktion selbst.



Wir haben uns entschieden, beim Erstellen von Berichten keinen solchen Connector zu verwenden, und sind zum Entladen von Daten aus der Yandex.Metrica-API über Python-Skripte übergegangen. Mehr dazu später in diesem Artikel.

Google Analytics Connector


Zum Erstellen von Berichten zu Google Analytics-Daten (es handelt sich um das direkte Herunterladen vom Analysesystem) gibt es auch einen Maxim Uvarov- Connector .

Hier müssen Sie auch "Datenschutzstufen ignorieren" einstellen. Der Zugriff auf die API Ihres Analysesystems, die Daten zum Online-Verkauf enthält, erfolgt über eine anonyme Verbindung.



Gemäß den Anweisungen müssen Sie erneut den Zugriff auf eine Drittanbieteranwendung nur für ein Google-Konto öffnen, das eine Bedrohung für den Datenschutz Ihrer Daten darstellt.



Sie können einige Daten im Connector selbst neu schreiben und für Ihre eigene Anwendung verwenden. Registrieren Sie dazu "OAuth 2.0 Client ID" auf cloud.google.comHolen Sie sich Zugriffstoken und geben Sie die erforderlichen Zugriffsschlüssel in den Arbeitsmechanismus ein. Aber selbst diese Maßnahmen helfen nicht im Kampf gegen Stichproben und Aktualisierung Ihrer Berichterstattung.

Wenn Sie die aggregierten Daten der Google Analytics-API berühren, werden wir immer auf Stichproben stoßen.

Der Connector hat die Möglichkeit, einen Tag zu entladen, spart aber nicht immer. Die im Anschluss integrierte Probenahmeanzeige zeigt an, dass sie auch an einem Tag vorhanden ist.



Beispielsweise können Sitzungsdaten, die nach Einkaufsphasen aufgeschlüsselt sind, nicht hochgeladen werden, ohne solche Datenmengen abzutasten. Dies führt zu großen Daten- und Messfehlern beim Erstellen von Berichten, insbesondere wenn die Konvertierung des Übergangs von einem Schritt in einen anderen genau berechnet oder Daten auf Trichtern mit einer komplexen Segmentstruktur hochgeladen werden müssen.

Auch wenn Datenverlust für Sie nicht kritisch ist, können Sie die geplante Aktualisierung Ihrer Berichte nicht über den Power BI-Dienst konfigurieren.



Der gleiche Fehler des Arbeitsmechanismus stört, nur die PQGA-Funktionen.


Wir haben uns auch geweigert, mit diesem Anschluss zu arbeiten.

Google Analytics Native Connector


Manchmal machen Google und Microsoft Zugeständnisse: Power BI verfügt standardmäßig über einen Standard-Google Analytics-Connector. Leider gibt es für Yandex.Metrica keine solche Option.


Der Mechanismus für die Arbeit mit der Google Analytics-API ist hier bequemer implementiert als im Connector von Maxim Uvarov. Beim Herunterladen einer großen Anzahl von Indikatoren werden die Daten jedoch zu stark abgetastet. Die sich wiederholenden Zahlen im Screenshot sind die abgetasteten Daten.


Sie können Stichproben vermeiden, wenn Sie Minitabellen entladen, die nur nach Datum und einem Indikator aufgeschlüsselt sind. Zum Beispiel Datum, Anzahl der Sitzungen und Gerätetyp. Und dann aus diesen Tabellen die notwendigen Berichte zu sammeln.

Wenn Sie nicht über Millionen von Datenverkehr verfügen, kann dies hilfreich sein. Die Berichterstellung ist jedoch nicht informativ und mit Einschränkungen der Skalierbarkeit verbunden: Aufgrund der vielen Minitabellen im Datenmodell ist es schwierig, Beziehungen zwischen ihnen herzustellen. Dies führt zu einer Einschränkung der Erstellung von Filtern und Slices.

Sie können den Standard-Connector neu schreiben und erzwingen, dass Daten für jeden Tag hochgeladen werden, während die Daten nahe an den reellen Zahlen in der GA-Schnittstelle liegen, aber Sie können das Abtasten nicht vermeiden.


Nach meinen Beobachtungen konnte bei der Aufschlüsselung der Shopping Stage-Sitzungen kein einziger Konnektor normalerweise Daten hochladen, ohne große Datenmengen abzutasten.

Im Standard-Connector können Sie die Download-Daten nicht anpassen. Sie müssen lediglich eine Auswahl von Parametern und Metriken aus den in Ordnern angeordneten Google Analytics-APIs auswählen.


Dieser Anschluss eignet sich für kleine und mittlere Internetprojekte mit wenig Verkehr. Eine ähnliche Situation ergibt sich hier beim Abrufen von Daten von Yandex.Metrica. Alle erforderlichen Informationen ohne Genauigkeitsverlust können nur mithilfe von Skripten oder speziellen Daten-Streaming-Diensten direkt über die API heruntergeladen werden - mehr dazu später in diesem Artikel.

Sticks in Wheels von Google


Kürzlich haben wir eine seltsame Sperre festgestellt. Beim Versuch, das Update für den "nativen" Connector für Google Analytics zu konfigurieren, wurde über ein Google-Konto in der Power BI Service-Oberfläche ein Autorisierungsfehler angezeigt.



Wir haben versucht, bei Google herauszufinden, was in einer solchen Situation zu tun ist und wie der Ruf des Kontos "getüncht" werden kann. Unsere Versuche sind jedoch fehlgeschlagen. Wir haben versucht, neue Konten zu registrieren und uns über verschiedene Geräte anzumelden. Google hat alle Autorisierungsversuche blockiert.

Ungefähr einen Monat nach der Sperrung konnten wir uns immer noch über dasselbe Konto anmelden. Ein solcher Vorfall kann jedoch die rechtzeitige Veröffentlichung der erforderlichen BI-Berichterstattung erheblich beeinträchtigen und den Kunden in eine unangenehme Lage bringen. Unmittelbar nach dem Schloss begannen wir nach einem möglichen Ausweg aus der Situation zu suchen. Um unerwartete Sperren zu vermeiden, haben wir beschlossen, eine eigene kontrollierte Umgebung mit den erforderlichen Daten für die BI-Berichterstellung zu erstellen.

Lösungsoptionen


Erhalten Sie die erforderlichen BI-Berichte für mittlere und große Unternehmen, und auch ohne Stichproben ist dies möglich. Aber Sie müssen ein wenig versuchen und eine von mehreren Möglichkeiten wählen.

Sie können vorgefertigte Dienste zum Streamen von Daten verwenden. Ihr Hauptzweck ist das Hochladen von Daten aus dem Analysesystem, verschiedenen Werbesystemen, CRM und anderen Diensten in einen beliebigen Speicher. Bequem, schnell und praktisch, aber nicht kostenlos. Bei großen Datenmengen oder Daten mit mehreren Quellen sind die Mengen greifbar.

Die bekanntesten Dienstleistungen:


Mit jedem dieser Systeme können Sie das tägliche Streaming von nicht abgetasteten Daten von Webanalysesystemen (Yandex.Metrics und Google Analytics) in Datenbanken (z. B. BigQuery, Azure SQL-Datenbank, Microsoft SQL Server oder ClickHouse) für die Verbindung über Power BI und das Erstellen von Berichten konfigurieren.

Wenn die aufgeführten Tools für das Unternehmen zu teuer sind, können Sie versuchen, Ihr Daten-Upload-System zu implementieren und Power BI + Python + Any Cloud Server (oder Yandex.Cloud) + PostgreSQL zu verwenden. Dies ist die Methode, die wir beim Erstellen von BI-Berichten verwenden.

Systeminteraktionsschema:


Ein solches Arbeitsschema bietet die notwendige Aufbewahrung, Autonomie und Aggregation von Daten. Nachdem Sie ein solches Schema einmal eingerichtet haben, müssen Sie keine Zeit mehr mit dem Sammeln von Informationen verbringen. Alles befindet sich im Repository. Sie müssen lediglich eine Verbindung herstellen und einen Bericht über Power BI erstellen.

Python-Skripte „ziehen“ alle Daten gemäß der API aus den erforderlichen Quellen, schreiben in die Datenbank oder bilden Entladungen (z. B. im CSV-Format). Skripte zum Hochladen von der API und zum Laden in die Datenbank verdienen einen separaten Artikel, und eines Tages werde ich ihn schreiben.

Natürlich gibt es im Internet viele Vorlagen und vorgefertigte Lösungen, aber für die weitere Skalierung ist es erforderlich, die individuellen Anforderungen des Systems zu kennen, unter dem die Skripte zum Entladen erstellt werden.

Daten werden in eine vorab erstellte und konfigurierte Datenbank geschrieben - in unserem Fall PostgreSQL. Skripte pumpen Daten für jeden Tag aus und schreiben sie nach einem Zeitplan in Tabellen. Sie befinden sich auf einem Cloud-Server unter unserer Kontrolle oder unter der Kontrolle des IT-Sicherheitsdienstes des Kunden.

Es gibt eine große Anzahl von Unternehmen, die Cloud-Speicherdienste anbieten. Basierend auf persönlichen Vorlieben wurde Yandex . Cloud ausgewählt .

Vorteile von Yandex.Cloud:

  • Bequeme Konfiguration und Serververmietung mit vorinstalliertem PostgreSQL.
  • Umfangreiche Dokumentation in russischer Sprache, die klar angegeben ist und es Ihnen ermöglicht, schnell zu lernen, wie Sie den Dienst nutzen.
  • Bequeme Serververwaltung.
  • Schnelle Unterstützung von Spezialisten.
  • Flexibilität verschiedener Geräteeinstellungen und -tarife: Niemand schreibt vorgefertigte Konfigurationspakete vor, Sie wählen die Konfiguration Ihrer Geräte selbst aus und können sofort die Voreinstellung einer beliebigen Datenbank bestellen.



Die resultierenden Uploads werden in die PostgreSQL-Datenbank geschrieben. Diese Datenbank wurde ausgewählt, weil es sich um ein objektrelationales DBMS handelt (Arbeiten mit mehrdimensionalen Arrays und JSON-Unterstützung aus der "Box" - für komplexe Datenstrukturen muss). Es ist flexibel, zuverlässig, kostenlos und hat auch eine riesige Community an Support.

Power BI verfügt über einen integrierten direkten Connector in PostgreSQL. Bei der ersten Verbindung müssen Sie zusätzliches Npgsql installieren . Power BI benachrichtigt Sie darüber und stellt einen Link bereit.


Um Berichtsaktualisierungen bei Verwendung des Cloud-Speichers zu konfigurieren, müssen Sie das Power BI-Gateway konfigurieren . Es ist erforderlich, die Aktualisierung der BI-Berichterstellung zu konfigurieren und die Sicherheit vertraulicher Daten zu gewährleisten, wenn diese aus einer Datenbank übertragen werden, die sich im internen IT-Bereich Ihres Unternehmens oder auf einem sicheren Cloud-Server befinden sollte.

Das Gateway bietet eine schnelle und sichere Datenübertragung zwischen Datenspeichern im internen Netzwerk des Unternehmens und Microsoft Cloud-Diensten. Die Datenübertragung zwischen Power BI und dem Gateway ist sicher, und alle von den Gateway-Administratoren bereitgestellten Anmeldeinformationen werden zum Schutz der Informationen in der Cloud verschlüsselt und nur auf dem Gateway-Computer entschlüsselt.


Nach dem Herunterladen und Starten von Power BI Gateway wird ein Dialogfeld angezeigt.


Zum Registrieren und Betreiben des Gateways sind die Anmeldeinformationen des Power BI Service-Clouddiensts erforderlich.


Nach allen Einstellungen wird ein Fenster über das Arbeitsgateway angezeigt. Als nächstes müssen Sie zusätzliche Einstellungen vornehmen.


Eine einfachere Alternative zum Anpassen von PostgreSQL ist Google BigQuery. Power BI verfügt über einen integrierten Connector in Google BigQuery. In diesem Fall muss das Prinzip "siebenmal zur Berechnung der Kosten, einmal zur Erfüllung der Anforderung" befolgt werden.


BigQuery kann ein Jahr lang kostenlos verwendet werden, indem einfach eine Bankkarte gebunden wird, wenn die Nutzung des Dienstes vereinbart wurde. Geld nach Ablauf der Frist ohne Ihr Wissen wird nicht belastet. Weitere Tarife - entsprechend den Tarifen des Systems selbst, jedoch mit einigen angenehmen "Pluspunkten".

Wenn die von Ihren Systemen heruntergeladenen Daten nicht 10 GB pro Monat (!) Erreichen, wird für das Herunterladen keine Gebühr erhoben.


Wenn die monatliche Datenverarbeitung 1 TB nicht überschreitet, wird auch hierfür keine Gebühr erhoben. Wenn mehr, dann 5 $ für jede Behandlung 1 TB.


Wenn Sie mehr als 10 GB pro Monat speichern müssen, kostet jedes weitere Gigabyte 0,010 USD.


Die Tarife werden auf der BigQuery-Seite ausführlicher beschrieben .

Zusammenfassung


Wenn Sie Daten aus verschiedenen Analysesystemen benötigen und gleichzeitig Sicherheit, kontinuierliche Aggregation, Benutzerfreundlichkeit und fehlende Stichproben für Sie von grundlegender Bedeutung sind, haben Sie zwei Möglichkeiten.

Der erste ist Streaming-Dienste. Sie sind einfach zu bedienen, verfügen über fortlaufenden technischen Support und eine vorgefertigte Integration in Data Warehouses.

Nachteile:

  • Sachkosten für große Datenmengen.
  • Begrenzte Art der Integration vorgesehen.
  • Unkontrollierte Prozesse auf der Seite des Streaming-Dienstanbieters, um mit Ihren Informationen zu arbeiten.

Der zweite ist ein eigener Daten-Upload- und Aggregations-Stream. Skalierbar, kontrolliert und mit Datensicherheit. Die Implementierung mag kompliziert und zeitaufwändig erscheinen. Wenn das Unternehmen eine effektive Organisation der BI-Berichterstellung, ihrer weiteren Skalierbarkeit und Datensicherheit benötigt, ist diese Option am akzeptabelsten.

Alle, die nur an eine umfassende BI-Berichterstattung denken, müssen das Motto „Sammeln, Strukturieren und Schützen dieser Daten vor Jugendlichen“ in die Unternehmenskultur aufnehmen. Es gibt nichts Besseres als eine vollwertige fehlertolerante Datenbank mit einer regelmäßigen Sicherung und differenzierten Nutzungsrechten für verschiedene Kategorien von Stakeholdern.

Es ist erforderlich, Ihre Daten aus Analysesystemen, einer mobilen Anwendung und anderen Client-Diensten zu sammeln, zu strukturieren und zu aggregieren. All dies wird in Zukunft dazu beitragen, sowohl Ihre Zielgruppe als auch Ihre Produkte in beliebigen Abschnitten zu analysieren. Informationen und Daten regieren heute die Welt und kosten manchmal mehr als Geld.

In den folgenden Artikeln werde ich erläutern, wie der im Artikel beschriebene Ansatz zum Übertragen von Analysedaten in eine PostgreSQL-Datenbank mithilfe von Python-Skripten und Implementierungsdetails implementiert wird.

All Articles