2017-04-11 2 views
0

Hoffe jemand kann mit dem besten Weg nach vorne für ein Projekt helfen, an dem ich arbeite.R in Echtzeit MS BI-Umgebung

Mein Arbeitgeber verwendet den MS BI-Stack - SSRS, SSIS, SQLServer usw. - und die Entwickler haben ein Webportal in C# und ASP.Net erstellt, um Echtzeit-Management-Berichte in einem Dashboard-Format anzuzeigen. In Echtzeit verstehe ich genau das. Wenn sich die zugrunde liegenden Daten ändern, wie es häufig während des Tages der Fall ist, ändern sich auch die Informationen auf dem Dashboard.

Ich habe ein Prototyp-Dashboard mit R und Shiny Dashboard entwickelt, das auf einem virtuellen Ubuntu-Server läuft, der grafischer und interaktiver ist und reaktive Komponenten und maschinelle Lernanalysen enthält.

Alle sind sehr beeindruckt von dem Dashboard, vor allem von der Grafik (gglot und plotly), und das Management möchte die analytischen und grafischen Komponenten in das bestehende Portal integrieren, wodurch die Abhängigkeit von Ubuntu und Shiny entfällt. Da es nur ein Prototyp war, verwendet es jedoch Dateien, die im SQL-Server erstellt und jeden Abend als CSV in einen Ordner exportiert werden, der mit Ubuntu geteilt wird. Von diesem Ordner liest Shiny/R die Dateien ein und erstellt die Visualisierungen und führt die Modelle auf Anfrage aus. Bisher haben wir nur Iframes erstellt, die auf den glänzenden Server verweisen, aber das Management ist mit diesem Ansatz nicht zufrieden. Sie wollen die R-Modelle und Grafiken in das Echtzeitportal integrieren.

Ich weiß, SQL Server 2016 bündelt R-Dienste und wir haben damit begonnen, damit zu spielen, aber wie integrieren Sie Echtzeit-R-Analysen und Grafiken in den bestehenden MS/.Net-Stack?

Prost Andrew

+0

Am einfachsten ist es, Ihre Grafiken in einem PowerBI R-Skript neu zu erstellen, aber keine Interaktivität – HubertL

+0

[Windows, Mac OS X und andere Betriebssysteme werden derzeit nicht als Shiny-Serverplattformen unterstützt] (https: // www. rstudio.com/products/shiny/download-server/) – HubertL

+0

[Verwenden von Daten aus OLAP-Cubes in R] (https://docs.microsoft.com/en-us/sql/advanced-analytics/r-services/using- Data-from-Olap-Cubes-in-r) – HubertL

Antwort

0

Es klingt wie Sie einen guten Anwendungsfall für Funktion reactivePoll glänzende aufweisen, die eine neue Daten Umfrage löst jedes Mal, es ist Prüffunktion einen anderen Wert zurückgibt.

Sie müssen eine checkFunc schreiben, die eine schnelle Überprüfung der SQL Server-Daten ist, um zu sehen, ob sich Ihre Daten geändert haben. Dann müssen Sie eine valueFunc schreiben, die die Daten Ihrer App zurückgibt, wenn checkFunc anzeigt, dass sich die zugrunde liegenden Werte geändert haben. Und schließlich müssen Sie bestimmen, wie oft checkFunc mit dem intervalMillis Argument ausgeführt werden soll.

Damit können Sie nahezu Echtzeitanalysen mit Shiny durchführen, ohne es auf einer anderen Plattform neu erstellen zu müssen. Wenn das Management jedoch darauf beharrt, sich vom Ubuntu-Server zu entfernen, wird dies nicht funktionieren.

Sie könnten versuchen, Ihre plotly Grafiken mit plotly.js neu zu schreiben, und einen .NET-Trigger verwenden, um erneut ausführen R-Skripte auf dem Server als Teil der Echtzeit-Pipeline json Daten für Ihre plotly.js zu erzeugen Plots, aber Sie könnten auch einfach reactivePoll zum gleichen Affekt verwenden ... Hat die Verwaltung einen guten Grund für diese Anfrage? Es klingt nach einer Menge Arbeit, wenn die Analyse und der Wert von R und Shiny generiert werden. Warum sollte man einen runden Stift in ein quadratisches Loch stecken?

+0

Ich erinnere mich an diesen Vortrag https://www.rstudio.com/resources/videos/airbnb/ Umgang mit etwas Ähnlichem. Ich denke, sie haben eine geplante Aufgabe eingerichtet, um die erforderlichen Daten in jeder beliebigen Häufigkeit in eine CSV-Datei zu exportieren und dann 'reactiveFileReader' zu verwenden, um Änderungen aus der CSV-Datei zu übernehmen. Es war nicht wirklich in Echtzeit, aber konnte ziemlich nah kommen. – Benjamin

+1

Ja, 'reactivePoll' ist wie' reactiveFileReader', außer für eine Datenbankquelle oder eine Webquelle. Sie können schnell etwas in Ihrer SQL Server-Tabelle wie "Zuletzt aktualisiert" überprüfen und nur Daten herunterladen/Ihre Abfrage ausführen, wenn diese billige Funktion ein anderes Ergebnis zurückgibt. Wenn du in Millisekunden arbeitest, 'intervalMillis', würde ich sagen, dass das ziemlich viel Echtzeit ist;) –

+0

Danke für die Vorschläge und werde definitiv in die Dinge schauen. Der Grund, warum ich von Ubuntu und Shiny wegziehen möchte, ist, dass ich ein Auftragnehmer bin und obwohl ich meine Aufgabe erfüllt habe, einen Weg zu finden, den Benutzer visuell und interaktiv zu machen und ihnen einige analytische Werkzeuge zur Verfügung zu stellen Habe die Fähigkeiten im Haus, entweder um den Server und R zu verwalten und zu verwalten (und ich denke, sie zögern, ihre Mitarbeiter zu schulen, was ich angeboten habe). –