Ich kenne die Metabase-Codebasis überhaupt nicht, nachdem ich sie mir vor Minuten buchstäblich angeschaut habe. Allerdings habe ich ein bisschen gehackt und festgestellt, dass das Ändern einer Zeile in src/metabase/api/dataset.clj (ab Commit 4844ecc) für meine Zwecke ausreichte, zumindest soweit ich es bisher sagen kann. Ich habe einen Patch angebracht, wenn Sie neugierig sind. Die auslaufbare JAR-Datei ist einfach zu erstellen, wie die Entwickler Notizen und so weit läuft es gut in meiner Umgebung und die Leute laden gerne CSV-Dateien mit >10k Zeilen. Auch hier habe ich keine Ahnung, ob dies verheerende Auswirkungen auf den Rest der Codebasis haben wird, also Wort der Warnung. Okay, ich habe vor kurzem den Gist der Ströme kennenlernen. Die Stream-API in Node.js ist ein leistungsstarkes Tool. Streams sind coole, sehr coole Dinge (wenn und nur wenn es richtig gemacht wird). Dieser Artikel führte mich zu der bestmöglichen Möglichkeit, die volle Leistungsfähigkeit von Streams zu nutzen und führte mich schließlich zu der Idee einer effizienten, nicht blockierenden, weniger speicherverbrauchenden Art und Weise, Dateien von einem Express-Server herunterzuladen.

@SchwiftyOne scheint es, als ob die Zahl, die Sie erwähnen (200-300k) ohne zu viel Drama passieren sollte. Sie sollten sicherstellen, dass Ihre Instance über genügend Arbeitsspeicher verfügt, und Sie müssen möglicherweise einige Konfigurationseinstellungen optimieren, wenn Sie Downloadfehler sehen. Nicht in der Lage, alle Zeilen herunterzuladen ist ein ziemlich großes Problem für uns. So etwas wie einen “Download All”-Button zu haben, wäre toll. Ich möchte auch eine Option zum Herunterladen von CSV-Dateien mit mindestens einem höheren Zeilenlimit als die aktuellen 10.000. Ich kann die Gründe für das Limit sehen, aber ich erforsche die Verwendung von Metabase als eine Möglichkeit, nicht-technische Personen in meinem Unternehmen Einblicke zu liefern, und ab und zu werden sie ein Resultset mit etwas mehr als 10.000 Zeilen generieren. Die letzte war 13.000 Zeilen oder so, und es war frustrierend, dass sie nicht einen Knopf drücken und das ganze Ding herunterladen konnten. Nur ein wenig zu groß. Beachten Sie auch, dass die Hilfsfunktion einen Dateinamen als zweites Argument verwendet, was sehr nützlich ist, um den Standarddateinamen für die heruntergeladene Datei festzulegen. Warten Sie, also ist das Limit für die Anzahl der herunterladbaren Zeilen 10k und nicht 1 Million Zeilen? Wenn ja, werde ich diese Nachricht in der Benutzeroberfläche ändern: Früher, wenn Sie einige Tabelle von Daten exportieren wollten Sie entweder Hand gerollt UI des Exports selbst mit einer der verschiedenen csvlib oder excellib Klassen, oder einige der moderneren Moodle-Code verwendet table_sql, die nicht weit verbreitet ist, vor allem in Drittanbieter-Plugins, und stark unterschätzt.

Dies bedeutete, dass, wenn Sie csv und excel oder ODS unterstützen möchten, dann das Hinzufügen jedes neuen Formats mehr Code war. Diese neue Dataformat-API bietet eine einfache API, um die gesamte Download-BEnutzeroberfläche für wenig Aufwand zu verarbeiten und entfernt alle formatspezifischen Code aus Ihrem Plugin-Code. Die statische URL.createObjectURL()-Methode ermöglicht das Erstellen einer Objekt-URL, die ein Blobobjekt oder eine Blob-Datei darstellt. Es nimmt ein Blob-Objekt als Argument und gibt eine DOMString zurück, die die URL ist, die das übergebene Blobobjekt darstellt. So sieht es aus: Bestätigt, dass dies eine Regression in v0.21.0 ist. Downloads der Tabelle Orders im Beispiel-Dataset sind auf 2.000 Zeilen beschränkt, obwohl die Kopie in der Benutzeroberfläche “Die maximale Downloadgröße von 1 Million Zeilen” lautet.