Kategorien anzeigen

Abfrage eines Ordners mit Parquet-Dateien mit SQL

24 Minuten Lesezeit

PARKETT-FOLDERVERBINDER

Abfrage eines Ordners mit Parquet-Dateien mit SQL

Parquet verwendet ein eigenes Schema, sodass nichts erraten werden muss. Verweisen Sie Query Streams auf den Ordner, und jede Datei wird zu einer SQL-Tabelle mit exakt den Spaltennamen und -typen, die in den Dateien bereits definiert sind – ganz ohne Spark, Python oder Uploads.

Typen aus der Fußzeile reiner Metadaten-Sniff Direkt in Excel Es wurde nichts hochgeladen.
\\lake\exports\orders
Teil-00000.Parkett Teil-00001.Parkett Teil-00002.Parkett + 806 weitere
Schema, das aus jeder Fußzeile gelesen wird
Land auswählen
       SUMME(Nettobetrag)
Bestellungen
Gruppieren nach Land;

Query Streams ist eine sichere Echtzeit-Datenbankintegrationsplattform, deren Parquet Folder Connector einen Ordner mit .parquet-Dateien in eine einzige Live-SQL-Tabelle umwandelt, die Sie aus Microsoft Excel, Google Sheets, Airtable und Ihrem KI-Assistenten abfragen können. Weitere Informationen finden Sie unter QueryStreams.com. und kostenlos anmelden Abfragen Sie Ihren ersten Parquet-Ordner in wenigen Minuten.

Jemand hat Ihnen einen Ordner mit Parquet-Dateien gegeben.

Es erreicht uns über einen der wenigen ausgetretenen Pfade. Ein Data-Lake-Export landet als einige hundert Einheiten auf einer Aktie. Teil-00000.Parkett Dateien. Ein dbt- oder Spark-Job speichert seine Ausgabe in einem Netzwerkordner. Ein Analyseteam übergibt einen Datenextrakt. Eine Data-Warehouse-Tabelle wird auf Festplatte archiviert, weil die Lizenzverlängerung teuer wird, und achtzehn Monate später möchte jemand wissen, was darin stand.

Das Schwierige daran ist, dass Parquet nicht für Menschen lesbar ist. Ein Doppelklick auf eine .Parkett Die Datei ist nutzlos. Öffnet man sie in einem Texteditor, erhält man nur Binärdaten. Auf Nachfrage rät man entweder „Spark starten“ oder „ein bisschen Python schreiben“, doch beides ist keine ernstzunehmende Antwort für jemanden, dessen eigentliche Aufgabe darin besteht, dem Finanzdirektor am Donnerstag eine Zahl zu präsentieren.

Der Parkett-Ordnerverbinder Das ist der kürzeste Weg. Sie verweisen den Query Streams Agent auf den Ordner, und jede übereinstimmende Datei wird Teil einer einzigen SQL-Tabelle. Nichts wird konvertiert, nichts in eine neue Datei zusammengeführt und nichts hochgeladen – die Dateien bleiben genau dort, wo sie sind, und Sie können sie direkt dort abfragen.

Das Schema ist bereits in der Datei enthalten.

Dies ist der einzige Umstand, der Parquet von allen anderen Ordnertypen unterscheidet, und es lohnt sich, dies zu verstehen, denn er erklärt, warum dieser Konnektor so problemlos zu verwenden ist.

Jede Parquet-Datei endet mit einer Fußzeile: einem Metadatenblock, der die Spaltennamen, deren genaue Datentypen, die Zulässigkeit von Nullwerten in den einzelnen Spalten und die Anzahl der Zeilen in der Datei angibt. Diese Fußzeile wird von dem Programm erstellt, das die Datei erzeugt hat, und ist maßgebend. Sie ist kein Hinweis oder eine Konvention – sie ist die offizielle Beschreibung des Dateiinhalts.

Eine .parquet-Datei
Zeilengruppe 1 – komprimierte Spaltenblöcke Zeilengruppe 2 – komprimierte Spaltenblöcke Zeilengruppe 3 – komprimierte Spaltenblöcke Fußzeile – Spaltennamen, Datentypen, Nullwerte zulässig, Zeilenanzahl
Query Streams liest lediglich die Fußzeile, um die Tabelle zu ermitteln. Die Zeilengruppen werden erst bei der Ausführung einer Abfrage verändert.

Wenn der Konnektor also den Ordner durchsucht, prüft er nicht die Datenwerte und zieht daraus Schlüsse. Er fordert jede durchsuchte Datei auf, sich selbst zu beschreiben, liest die Antwort und legt diese als Tabellendefinition fest. Die Typen sind erklärt statt abgeleitetDas bedeutet, dass man sich keine Gedanken über die Stichprobengröße machen muss und dass es keine Möglichkeit gibt, dass die zehntausendste Zeile dem widerspricht, was die ersten hundert impliziert haben.

Auch die Typen werden unverändert weitergegeben. DECIMAL(18,2) Die Spalte in der Datei ist eine Dezimalspalte in der Tabelle, keine Gleitkomma-Approximation von Eins, da der Wert auf dem Weg dorthin niemals als Zeichenkette verarbeitet wird. Alle anderen Komponenten dieser Familie – der Ordnerscan, das Dateiprotokoll, der verschlüsselte lokale Cache, die Verwaltungstabellen – funktionieren genau wie beschrieben. Funktionsweise von DateisatzverbindernIm Folgenden werden nur die Unterschiede bei Parkett erläutert.

Worüber man nie streiten muss

Der Vorteil wird am deutlichsten, wenn man es mit einer CSV-Datei vergleicht, die im Prinzip dasselbe leistet, nur ohne Fußzeile. Alles, was man sich vorstellen kann, ist … CSV-Ordner-Connector „Erkennen, zustimmen und verteidigen“ wird in Parquet ganz einfach von vornherein so formuliert.

Die FrageCSV-OrdnerParkettordner
Um welche Zeichenkodierung handelt es sich? Die Erkennung erfolgt pro Datei, gemischte Kodierungen werden abgelehnt. Tritt nicht auf – der Text wird im Format selbst als UTF-8 gespeichert.
Komma, Semikolon, Tabulator oder Pipe? Geschnüffelt, und muss im gesamten Ordner identisch sein. Tritt nicht auf — Parquet ist kein begrenzter Text.
Ist die erste Zeile eine Überschrift? Eine Option, andernfalls mit Positionsspalten. Die Spaltennamen befinden sich in der Fußzeile.
Handelt es sich bei dieser Spalte um eine Zahl oder um Text? Aus den Stichprobenwerten abgeleitet. In der Datei deklariert.
Bleibt der Geldwert konstant? Ja, aber nur, weil der Konverter sich die Mühe macht, Dezimalspalten zu erkennen und sie als exakt festzulegen. Eine Dezimalzahl in der Datei ist eine Dezimalzahl in der Tabelle. Es gibt nichts zu erkennen.
Ist 03/04/2026 März oder April? Möglicherweise ist eine explizite Angabe erforderlich. Datumsformat. Datumsangaben werden als Datum und nicht als Text gespeichert.
Wie viele Zeilen enthält diese Datei? Das lässt sich nur durch Lesen herausfinden. Im Footer, kostenlos.

Es gibt dementsprechend wenige Einstellungsmöglichkeiten. Ein CSV-Ordner-Connector enthält Trennzeichen, Anführungszeichen, einen Header-Schalter, eine Kodierung, leere Zeichenketten, ein Datumsformat und einen Layoutmodus, da diese Parameter bei einer Textdatei nicht eindeutig definiert sind. Ein Parquet-Ordner-Connector bietet diese Optionen nicht, da die Datei die Informationen bereits enthält – die vorhandenen Einstellungen sind weiter unten aufgeführt.

Spalten, die nur einige Dateien enthalten

Ordner mit Parquet-Dateien werden selten vollständig auf einmal geschrieben. Eine Pipeline erhält im März ein neues Feld, sodass Dateien ab März eine Spalte enthalten, die in den Januar-Dateien fehlt. Dies ist die einzige Entscheidung, die der Konnektor treffen muss, und er trifft sie auf eine bestimmte Weise.

Der angeheftete Tisch ist der Union Die Spalten, die in den Stichprobendateien vorkommen, werden nicht in deren Schnittmenge betrachtet. Eine Spalte, die nur in einigen Dateien vorkommt, wird dennoch in die Tabelle aufgenommen – sie wird einfach als nullable markiert und wie folgt gelesen: NULL für die Dateien, die älter sind. Dadurch bleiben alle Spalten im Ordner erhalten, anstatt die später hinzugefügten zu verlieren.

Eine Spalte fehlen wird toleriert. Eine Spalte mit einer verschiedene Art ist es nicht. Wenn Bestellnummer Wenn es sich in einer Datei um eine 64-Bit-Ganzzahl und in einer anderen um Text handelt, verweigert der Connector jegliche Zuordnung und benennt die Diskrepanz präzise: welche Spalte, welcher Datentyp, in welchen beiden Dateien. Er wählt keinen Datentyp aus und führt auch keine automatische Typumwandlung durch, um die Zahlen anzugleichen.

Eine Datei, die nicht im Parquet-Format vorliegt, führt nicht zum Absinken des Samples. Wenn eine der Stichprobendateien überhaupt nicht als Parquet gelesen werden kann – ein abgeschnittener Schreibvorgang, ein .Parkett Eine Erweiterung bei etwas anderem – sie wird mit dem Grund protokolliert und die Stichprobe wird mit den verbleibenden Dateien fortgesetzt. Nur wenn keiner Wenn die Stichprobendateien lesbar sind, verweigert der Konnektor die Verbindung und listet dann auf, was bei jeder Datei als fehlerhaft befunden wurde.

Schnüffeln ist billig, weil nichts gelesen wird.

Abfragestreams-Samples bis zu 64 Dateien Beim ersten Verbinden mit einem Ordner. Bei CSV bedeutet das, 64 Dateien zu öffnen und zu parsen. Bei Parquet bedeutet es, zum Ende von 64 Dateien zu springen und einen Metadatenblock zu lesen – ein minimaler Aufwand, selbst wenn die Dateien jeweils Hunderte von Megabyte groß sind.

Derselbe Trick kommt auch bei der Synchronisierung zum Einsatz. Die Zeilenanzahl jeder Datei wird aus der Fußzeile ausgelesen, ohne die Daten selbst zu verändern. So weiß der Konnektor im Voraus, ob eine Datei die maximale Zeilenanzahl pro Datei überschreiten wird und ob die Synchronisierung insgesamt ihr Zeilenbudget überschreitet. Er kann die Synchronisierung ablehnen und das Limit festlegen. vor Die fehlerhafte Datei wird in die Tabelle geschrieben, anstatt das Problem erst mittendrin zu entdecken und Ihnen eine Teilladung vorzuenthalten.

LeitplankeStandardMaximal
Dateien pro Konnektor100,0002,000,000
Ordnertiefe8 Stufen64 Level
Größe einer einzelnen Datei512 MB4 GB
Zeilen aus einer beliebigen Datei2,000,00050,000,000
Zeilen pro Synchronisierung10,000,000100,000,000
Scanzeitbudget300 Sekunden3.600 Sekunden

Bevor auch nur ein einziges Byte verschoben wird, wird zunächst die Dateigröße geprüft. Dateien, die die Größenbeschränkung überschreiten, werden anhand ihres Namens abgelehnt, und der Rest des Ordners wird entsprechend synchronisiert.

Jede Zeile kennt ihre Position in ihrer Datei.

Wie bei jedem Dateisatzverbinder enthält jede Zeile eine _Quelldatei Spalte mit Angabe der Ursprungsdatei und einer _row_id Das ist einzigartig auf dem gesamten Tisch. In einer Parquet-Mappe. _row_id ist noch besser: Parquet-Leser enthüllen ein echtes DateizeilennummerDer Bezeichner setzt sich also aus dem Dateinamen und der tatsächlichen Position der jeweiligen Zeile innerhalb der Datei zusammen, wobei mit Nullen auf zwölf Stellen aufgefüllt wird.

Die Auffüllung ist der Sinn der Sache. Sortieren nach _row_id Die Zeilen werden in Dateireihenfolge anstatt in der Reihenfolge 1, 10, 100, 2 und zwölf Ziffern angeordnet. Das reicht aus, um dies auch bei einer Billion Zeilen in einer einzigen Datei zu gewährleisten – weit über jede mögliche Obergrenze hinaus. CSV bietet kein vergleichbares Konzept, daher bietet das Spaltenformat hier einen echten Mehrwert, anstatt nur Aufwand zu ersparen.

Welche Teildatei ist für das Gesamtergebnis verantwortlich?
SELECT _source_file, COUNT(*) AS row_count, SUM(net_amount) AS net_amount FROM orders GROUP BY _source_file ORDER BY net_amount DESC;

Und weil die Zeilenkennung geordnet ist, können Sie sich den Anfang einer bestimmten Datei ansehen, ohne den gesamten Ordner lesen zu müssen – nützlich, wenn eine Partition verdächtig aussieht und Sie sehen möchten, was sich tatsächlich darin befindet.

Die ersten Zeilen einer Teildatei, in Dateireihenfolge
SELECT _row_id, order_id, order_date, net_amount FROM orders WHERE _source_file = 'part-00042.parquet' ORDER BY _row_id LIMIT 20;

Wenn eine Datei nicht mehr mit der PIN übereinstimmt

Sobald die Struktur festgelegt ist, wird jede Datei beim Import damit abgeglichen – und auch hier handelt es sich um einen Footer-Leser, nicht um einen Datenleser, sodass die Prüfung für jede Datei und jedes Mal ressourcenschonend durchgeführt werden kann. Eine Datei, die nicht mehr übereinstimmt, wird als geparktDie entsprechenden Zeilen bleiben außerhalb der Tabelle, der Grund wird protokolliert, und der Rest des Ordners wird normal synchronisiert.

Vier Dinge gelten als Meinungsverschiedenheiten, und es lohnt sich, sie voneinander zu unterscheiden, weil das dritte die Leute überrascht.

  • Ein Typ hat sich geändert. Die Spalte ist zwar vorhanden, aber in der Fußzeile wird sie jetzt als etwas anderes deklariert als das, was vorher festgelegt war.
  • Eine erforderliche Spalte fehlte. Eine Spalte, die vom Pin als nicht nullbar gekennzeichnet wurde, fehlt in der Datei.
  • Eine Datei hat eine Spalte verloren, die sie zuvor hatte. Selbst wenn die fixierte Spalte Nullwerte zulässt, eine Datei, die tat Diese Spalte wird nur dann verwendet, wenn sie beim Sampling des Ordners berücksichtigt wurde und seitdem nicht mehr verwendet wird. Sie wird daher nicht als Nullwert interpretiert, sondern als geparkt. Eine Interpretation als Nullwert würde alle auf dieser Spalte basierenden Summen unbewusst verfälschen, und eine falsche Summe ist schlimmer als eine fehlende Datei.
  • Eine brandneue Spalte erschien. Eine Spalte, die der Pin noch nie gesehen hat und die Sie nicht ausgeschlossen haben, führt dazu, dass die Datei geparkt und nicht stillschweigend verworfen wird.
Die Schemaentwicklung in der Quellcode-Pipeline ist die übliche Ursache. Wenn Ihr Spark- oder dbt-Job tatsächlich eine neue Spalte schreibt, hat sich die Ordnerstruktur dauerhaft geändert. In diesem Fall müssen Sie die Ordner neu anheften, anstatt die Datei zu reparieren. Durch Ändern einer beliebigen Konnektoroption wird der Ordner neu berechnet und eine neue Definition angeheftet, die die neue Spalte enthält. Anschließend werden die geparkten Dateien normal synchronisiert.

Das erneute Einlesen einer Datei ersetzt deren Zeilen, anstatt sie zu ergänzen. Alle zuvor von einer Datei beigetragenen Daten werden entfernt und der aktuelle Inhalt in einer einzigen Transaktion eingefügt. Dadurch können bei einem Fehler während des Vorgangs weder Duplikate noch eine unvollständige Tabelle entstehen.

Alle Parketteinstellungen und wann man sie ändern sollte

Das Nützlichste, was man über diese Karte sagen kann, ist, was sie ist. nicht Ich bin dabei. Ein Parquet-Ordner-Konnektor hat überhaupt keine formatspezifischen Einstellungen. Ein CSV-Ordner enthält ein Trennzeichen, ein Anführungszeichen, eine Kodierung, leere Zeichenketten und ein Datumsformat. Ein Excel-Ordner enthält eine Tabellenblattliste. Ein JSONL-Ordner hat eine Strukturierungstiefe. Parquet-Dateien hingegen benötigen keines dieser Elemente. Der Grund dafür ist die Fußzeile: Das Schema ist in jeder Datei deklariert, sodass der Konnektor keine Informationen erhält und nichts erraten muss. Die Frage „Welche Option habe ich falsch gewählt?“ stellt sich hier nicht.

Was übrig bleibt, ist eine kurze Liste. Alles andere, was Sie auf der Verbindung Die Registerkarte „Stammverzeichnisse“, „Unterverzeichnisse scannen und maximale Scantiefe“, „Ausschlussmuster“, „Symlinks folgen“, „Dateinamen-Analysemuster“, „Ordner-Token-Namen“, „Scanintervall“, „Inhaltshashing“, „Löschrichtlinie“, „Ereignisprotokollaufbewahrung“ und „Scan-Schutzmechanismen“ verhält sich bei jedem Ordnertyp identisch und ist einmalig vollständig dokumentiert. Leitfaden zum Dateisatz-KonnektorDieser Abschnitt behandelt ausschließlich die Besonderheiten eines Ordners mit Parquet-Dateien.

Einige Einstellungen sind erst nach Aktivierung von „Erweiterte Optionen anzeigen“ sichtbar. Hashing, die Löschrichtlinie, die Aufbewahrung von Ereignisprotokollen, die Scan-Limits, die vier Datenerfassungslimits und Manifestüberschreibungen – all diese Einstellungen werden durch diese Option gesteuert. Falls eine der unten genannten Einstellungen nicht angezeigt wird, liegt es daran.

Tabellenname

Erforderlich. Parquet ist ein Single-Table-Treiber: Jede Datei, deren Include-Muster übereinstimmen, wird zu einer Tabelle zusammengeführt, und so wird diese Tabelle in SQL bezeichnet. Bestellungen, Veranstaltungen, ReisenDer Ordnerinhalt wird unabhängig vom tatsächlichen Inhalt akzeptiert. Nur Buchstaben, Ziffern und Unterstriche sind zulässig, und der Ordner darf nicht mit einer Ziffer beginnen; alle anderen Zeichen werden beim Speichern und nicht erst bei der Synchronisierung abgelehnt.

Wählen Sie diesen Namen bewusst, denn er wird für jede gespeicherte Abfrage, jede Nova-Frage und jede Tabellenaktualisierung verwendet. Eine spätere Umbenennung ist zwar nicht schädlich, bedeutet aber, dass Sie alle darauf aufbauenden Daten erneut bearbeiten müssen. Ein Ordner mit Teildateien namens Teil-00000.Parkett Der Tabellenname gibt keinerlei Auskunft darüber, was die einzelnen Zeilen beinhalten. Daher ist er in der Regel die einzige für Menschen lesbare Bezeichnung, die die Daten jemals erhalten.

Muster einbeziehen

Standard: **/*.Parkett Die Glob-Muster werden automatisch für Sie festgelegt, wenn Sie die Parquet-Ordnerkarte auswählen. Jedes Glob-Muster, eines pro Zeile, bestimmt, welche Dateien in den Stammordnern berücksichtigt werden. Standardmäßig werden alle Parquet-Dateien im Verzeichnisbaum einbezogen, was beim ersten Exportvorgang gewünscht ist.

Die Verengung dieses Bereichs ist der wichtigste Hebel, den Sie haben, und das ist fast immer der bessere Weg, als eine Kappe anzuheben. Data-Lake-Exporte sind partitioniert, sodass die Ordnerstruktur bereits den gewünschten Filter enthält. Falls ein Scan aufgrund der Überschreitung der zulässigen Dateianzahl im Freigabeordner fehlschlägt, beschränken Sie das Suchmuster auf die tatsächlich abgefragten Partitionen, anstatt die Dateigrenze zu berücksichtigen. Ein Connector, der 4.000 Dateien liest, ist schneller beim Scannen und Synchronisieren und deutlich einfacher zu handhaben als einer, der 400.000 Dateien liest und diese anschließend filtert.

Bereich eines partitionierten Exports
**/*.parquet Jede Parquet-Datei im Verzeichnisbaum (Standardeinstellung) Jahr=2026/**/*.parquet Ein Jahr eines Hive-partitionierten Lakes **/part-*.parquet Spark-Partitionsdateien, manuell hinzugefügte Extras werden übersprungen orders/**/*.parquet Ein Datensatz aus einer Freigabe mit mehreren

Eine Regel birgt Gefahren, und der Zauberer selbst nennt sie auf dem Spielfeld: Ein gemischter Ordner besteht aus zwei Verbindungen im selben Stammverzeichnis, eine pro Treiber. Wenn \\lake\exports enthält CSVs neben Parquet und erweitert dieses Muster auf **/*.* Das funktioniert nicht – die beiden Formate können keine gemeinsame Form verwenden. Erstellen Sie einen Parquet-Ordnerverbinder und einen CSV-Ordner-Connector jeweils auf denselben Pfad verweisend, mit eigenem Include-Muster und eigenem Tabellennamen.

Manifestüberschreibungen (JSON)

Versteckt hinter Erweiterte Optionen anzeigenund ist auf Parquet nützlicher als auf anderen Formaten. In allen anderen Bereichen dieser Familie dienen Überschreibungen dazu, eine vom Konnektor vorgenommene Annahme zu korrigieren. Hier wird nichts angenommen – daher dient eine Überschreibung dazu, eine vom Konnektor vorgenommene Annahme zu korrigieren. Pipeline Das ist genau der Fall, in dem man die Dateien nicht einfach reparieren kann.

Drei Szenarien decken nahezu alle realen Anwendungsfälle ab. Ein Spark-Job, der eine Spalte benannt hat. Spalte_14 oder amt_net_x Und niemand möchte so etwas in einem Bericht schreiben. Eine Spalte enthält vertrauliche Daten und sollte in der Tabelle gar nicht existieren. Oder eine numerische Spalte benötigt in der Tabelle eine höhere Genauigkeit, als in den Dateien angegeben. Alle drei Änderungen lassen sich hier mit einer einzigen Zeile vornehmen und werden beim Fixieren der Form angewendet. Dadurch werden sie Teil der Tabellendefinition und müssen nicht bei jeder Abfrage erneut angewendet werden.

Manifest-Überschreibungen – die drei Schlüssel, die der Konnektor akzeptiert
{ "renames": { "qty": "quantity" }, "retypes": { "price": "DECIMAL(18,4)" }, "exclude": [ "internal_notes" ] }
  • Umbenennungen — Geben Sie der Spalte einen aussagekräftigeren Namen. Sie können sie nicht umbenennen auf _Quelldatei oder _row_idZwei Spalten dürfen nicht in denselben Namen umbenannt werden.
  • Neutypen — Erzwingt den Datentyp einer Spalte. Ein hier festgelegter Typ ist eine bewusste Anweisung und wird daher ohne die strenge Fußzeilenprüfung angewendet, die andernfalls eine Datei blockieren würde. Nur einfache Typnamen mit optionaler Genauigkeit: DECIMAL(18,4), VARCHAR, BIGINT, DATUM.
  • ausschließen — Spalten vollständig aus der Tabelle entfernen. Wichtig zu wissen: Eine ausgeschlossene Spalte wird auch von der Driftprüfung nicht mehr berücksichtigt. Dies ist also die eleganteste Methode, ein Feld zu ignorieren, das sich in einer Pipeline ständig ändert.

Das Feld muss entweder ein JSON-Objekt enthalten oder leer sein – ungültiges JSON wird beim Speichern zurückgewiesen und nicht stillschweigend ignoriert. Durch das Leeren des Feldes werden Ihre Überschreibungen gelöscht. und gibt die Tabelle in die durch die Fußzeilen vorgegebene Form zurück. Dies ist die vorgesehene Methode, um eine Überschreibung rückgängig zu machen, anstatt den Konnektor zu löschen und neu zu erstellen.

Jede Änderung einer Einstellung führt zu einer erneuten Berechnung des Ordners. Das ist der Mechanismus hinter den Hinweisen an anderer Stelle auf dieser Seite: Wenn eine Pipeline tatsächlich eine Spalte hinzufügt und Dateien zwischengespeichert werden, speichert das erneute Speichern des Konnektors mit den geänderten Optionen eine neue Definition, die diese Spalte enthält. Das bedeutet auch, dass eine Überschreibung keine Live-Bearbeitung ist: Sie wird erst beim nächsten Pin wirksam, nicht in den bereits vorhandenen Tabellenzeilen.

Warum gibt es keine Tabellenlayout-Option?

CSV-, Excel- und JSONL-Ordner bieten eine Tabellenlayout Die Wahlmöglichkeit – ein fixiertes Layout oder eine Tabelle pro Layout – liegt darin begründet, dass dies die Formate sind, die Menschen manuell erstellen, und dass sich in einem Ordner mit solchen Formaten im Laufe der Jahre tatsächlich unterschiedliche Spaltensätze ansammeln. Parquet bietet diese Einstellung absichtlich nicht. Parquet ist per Definition maschinell erstellt: Etwas hat diese Dateien programmatisch erzeugt, und wenn dieses Programm mehrere verschiedene Formate in einen Ordner ausgibt, würde das Aufteilen in separate Tabellen ein Problem in der Datenverarbeitung nur kaschieren, anstatt es aufzudecken.

Ein Parquet-Ordner erhält also eine Tabelle, und Unstimmigkeiten werden gemeldet, anstatt behoben zu werden. Fehlende Spalten werden in die Vereinigung aufgenommen und als nullable markiert; widersprüchliche Typen sind eine benannte Ablehnung. Wenn Sie tatsächlich mehrere unabhängige Datensätze auf einer Freigabe speichern, lautet die Antwort: ein Konnektor pro Datensatz, der auf … beschränkt ist. Muster einbeziehen — was ohnehin übersichtlicher ist, da dann jede Tabelle ihren eigenen Namen erhält.

Aufnahmebegrenzungen und Scanlimits

Die vier Aufnahmegrenzen (Zeilen und Bytes, pro Datei und pro Synchronisierung) und die Scangrenzen (Dateien pro Scan, Tiefe, Zeitbudget, Parallelität pro Stammverzeichnis) gelten für alle Ordnertypen und sind im Hintergrund aktiv. Erweiterte Optionen anzeigenUnd befolgen Sie eine Regel, die es wert ist, wiederholt zu werden: Lassen Sie ein Kästchen leer, um den Standardwert zu übernehmen, denn Null bedeutet niemals unbegrenzt und wird kategorisch abgelehnt. Ihre Werte und die Gründe, jeden einzelnen davon zu erheben, liegen in der Dateisatz-VerbindungsleitfadenDiejenigen, die für einen Parkettverleger am häufigsten von Bedeutung sind, sind in der oben stehenden Leitplankentabelle aufgeführt.

Parquet bietet hier einen Vorteil, der bereits erwähnt wurde: Da die Zeilenanzahl in der Fußzeile steht, wird die maximale Zeilenanzahl pro Datei geprüft, bevor Daten aus der Datei gelesen werden. Ein Überschreiten dieser Grenze führt somit zu einer expliziten Ablehnung und nicht zu einem Ladevorgang, der mittendrin fehlschlägt. Die Erhöhung der maximalen Zeilenanzahl ist dennoch die zweitbeste Lösung. Zunächst sollte das Include-Muster eingeschränkt werden.

Parquet-Daten in Microsoft Excel importieren

Die Konvertierung von Parquet- in Excel-Dateien ist der Hauptgrund für die meisten Anfragen, und die ehrliche Antwort lautet: Sie sollten die Dateien gar nicht konvertieren. Sobald der Ordner als Konnektor eingerichtet ist, führt das Add-In „Query Streams“ für Microsoft Excel eine gespeicherte Abfrage aus und fügt die Zeilen in das Tabellenblatt ein. Die Daten werden bei Bedarf aktualisiert. So erhalten Sie Parquet-Daten in Excel – ohne Konvertierungsschritt, ohne Spark-Cluster und ohne dass die Daten unbemerkt im Download-Ordner eines Benutzers veralten. Dieselbe Abfrage funktioniert unverändert in Google Tabellen.

Sie benötigen ein Query Streams-Konto und den Netzwerkagenten auf einem Rechner, der auf den Ordner zugreifen kann – einem Server, einer Workstation mit eingebundenem Netzwerkordner oder Ihrem eigenen Laptop. Parquet-Ordner-Konnektoren erfordern Netzwerkagent 2.6 oder neuer.

  1. Installieren Sie den Agenten von der Downloadseite falls es nicht bereits läuft.
  2. Fügen Sie im Portal einen Datenkonnektor hinzu und wählen Sie aus Parkettordner.
  3. Geben Sie den Ordnerpfad so ein, wie er vom Rechner des Agenten angezeigt wird, und geben Sie der Tabelle einen Namen – dieses Feld ist erforderlich, da alles im Ordner in einer einzigen Tabelle zusammengeführt wird.
  4. Lassen Sie das Include-Muster aktiviert. **/*.Parkett Es sei denn, der Ordner enthält mehr Einträge, als Sie in der Tabelle benötigen; in diesem Fall sollten Sie ihn einschränken. **/part-*.parquetoder eine einzelne Partition wie z. B. Jahr=2026/**/*.parquet.
  5. Speichern. Der Agent liest die Fußzeilen von bis zu 64 Dateien, fixiert das Schema und meldet die gefundenen Spalten und Datentypen.
  6. Öffnen Sie den Abfrage-Builder, wählen Sie den Konnektor aus und schreiben Sie SQL – oder lassen Sie Nova AI das für Sie schreiben.
  7. Speichern Sie die Abfrage und führen Sie sie dann über das Microsoft Excel- oder Google Sheets-Add-In aus, wann immer Sie die Zahlen benötigen.
Verwenden Sie den Pfad, den der Agent sieht. Ein auf Ihrem Desktop zugewiesener Laufwerksbuchstabe kann auf einem Server, auf dem der Agent ausgeführt wird, nicht aufgelöst werden. Verwenden Sie einen UNC-Pfad wie z. B. \\lake\exports\ordersAlternativ können Sie einen lokalen Pfad auf dem Rechner des Agenten angeben und prüfen, ob das Benutzerkonto, unter dem der Agent ausgeführt wird, darauf zugreifen kann. Data-Lake-Exporte befinden sich häufig in einer Ordnerstruktur mit Datumspartitionen. Belassen Sie die Tiefeneinstellung daher unverändert, es sei denn, die Struktur ist tatsächlich tiefer als acht Ebenen.

Von dort aus verhält sich der Ordner wie jede andere Datenquelle. Er lässt sich mit Microsoft SQL Server, PostgreSQL, MySQL, BigQuery und anderen Datenbanken sowie mit API-Konnektoren wie Stripe oder Shopify verbinden, sodass eine archivierte Warehouse-Tabelle auf einer Dateifreigabe mit Live-Produktionsdaten in einer einzigen schreibgeschützten Anweisung verknüpft werden kann, ohne dass zuvor Daten in ein Warehouse geladen werden müssen.

Häufig gestellte Fragen

Wie kann ich Parquet-Dateien ohne Spark lesen? +
Installieren Sie den Query Streams Network Agent auf einem Rechner, der den Ordner sehen kann, und fügen Sie einen hinzu. Parkettordner Der Connector ist darauf ausgerichtet. Der Ordner wird zu einer SQL-Tabelle, die Sie über das Portal, Microsoft Excel, Google Sheets oder einen KI-Assistenten abfragen können. Es muss kein Cluster betrieben, kein Notebook gepflegt und kein Python-Code geschrieben werden – der Agent liest die Dateien direkt, und das Schema wird aus den Dateien selbst generiert.
Kann ich Parquet-Dateien in Microsoft Excel öffnen? +
Nicht direkt – Parquet ist ein binäres Spaltenformat, und Excel besitzt keinen nativen Reader dafür. Mit einem Parquet-Ordner-Connector ist das aber nicht nötig. Schreiben Sie eine Abfrage für den Ordner, speichern Sie sie und führen Sie sie über das Add-In „Abfrageströme“ aus. Die Zeilen werden im Arbeitsblatt angezeigt und bei Bedarf aktualisiert. Da Sie eine Abfrage durchführen und nicht importieren, können Sie eine Milliarde Zeilen im Ordner aggregieren und nur die wenigen Hundert abrufen, die Sie tatsächlich benötigen.
Muss ich Query Streams die Spaltentypen mitteilen? +
Nein, und Sie können dabei auch nichts falsch machen. Jede Parquet-Datei definiert ihre Spaltennamen, Datentypen und die Nullbarkeit in ihrer Fußzeile, und auf dieser Deklaration basiert die Tabelle. Es werden keine Datenwerte abgeleitet, daher besteht kein Risiko durch Stichproben und es gibt keine Option zum Erraten von Datentypen. DECIMAL(18,2) Der Wert in der Datei wird in der Tabelle als exakte Dezimalzahl angezeigt, niemals als Gleitkommazahl.
Müssen alle Parquet-Dateien identische Spalten haben? +
Sie müssen sich einigen auf Typen, nicht in der vollständigen Spaltenliste. Die fixierte Tabelle ist die Vereinigung der Spalten, die in den Stichprobendateien gefunden wurden, und eine Spalte, die nur in einigen von ihnen vorhanden ist, ist als nullable markiert und wird wie folgt gelesen: NULL Für die Dateien, denen dies fehlt. Eine Spalte mit unterschiedlichem Datentyp in verschiedenen Dateien ist stattdessen eine benannte Ablehnung – der Konnektor gibt die Spalte und beide Datentypen an, anstatt einen in den anderen umzuwandeln.
Meine Pipeline hat eine Spalte hinzugefügt. Funktioniert der Ordner trotzdem noch? +
Dateien, die eine Spalte enthalten, die in der fixierten Tabelle noch nie vorkam, werden zwischengespeichert, damit die bestehende Tabelle korrekt bleibt und Sie die Änderung sofort bemerken. Dies ist eine bewusste Maßnahme, um Daten nicht stillschweigend zu verwerfen. Sobald die neue Spalte dauerhaft vorhanden ist, führt das Ändern einer beliebigen Verbindungsoption zu einer Neuberechnung des Ordners und zur Fixierung einer neuen Definition, die diese Spalte enthält. Anschließend werden die zwischengespeicherten Dateien normal synchronisiert.
Warum wurde eine meiner Parquet-Dateien geparkt? +
Es gibt vier Gründe: Der deklarierte Datentyp einer Spalte hat sich geändert, eine Spalte, die keine Nullwerte zulassen darf, fehlt, eine Spalte, die beim Sampling des Ordners vorhanden war, wurde aus der Datei entfernt, oder die Datei enthält eine Spalte, die der Pin noch nie gesehen hat. Eine Datei, die überhaupt nicht als Parquet gelesen werden kann, wird mit diesem Grund als gespeichert markiert. Jeder Fall wird protokolliert in Dateien_Ereignisse mit dem Dateinamen und der konkreten Unstimmigkeit, und alle anderen Dateien werden weiterhin synchronisiert.
Wie viele Parquet-Dateien kann ein Connector lesen? +
Standardmäßig werden 100.000 Dateien in 8 Ordnerebenen verarbeitet, die Anzahl kann auf 2.000.000 Dateien und 64 Ebenen erhöht werden. Einzelne Dateien werden standardmäßig bis zu einer Größe von 512 MB und 2.000.000 Zeilen gelesen, mit einem Maximum von 4 GB und 50.000.000 Zeilen. Da die Zeilenanzahl aus der Fußzeile ermittelt wird, wird eine Datei, die das Zeilenlimit überschreiten würde, anhand ihres Namens abgelehnt, bevor ihre Daten geladen werden können.
Kann ich erkennen, aus welcher Datei eine Zeile stammt? +
Ja. Jede Reihe trägt _Quelldatei Benennung der Datei und _row_id Die Zeile wird in der Tabelle eindeutig identifiziert. Bei Parquet wird der Identifikator aus der tatsächlichen Position der Zeile in der Datei gebildet und mit führenden Nullen aufgefüllt, sodass die Sortierung nach … _row_id Sortiert die Zeilen tatsächlich in der Reihenfolge der Datei. Gruppierung nach _Quelldatei ist in der Regel der schnellste Weg, diejenige Partition zu finden, die für eine fehlerhaft aussehende Zahl verantwortlich ist.
Was passiert, wenn die Pipeline neue Teildateien schreibt? +
Sie werden beim nächsten Synchronisieren ohne Neukonfiguration in die Tabelle aufgenommen, und es werden nur neue oder geänderte Dateien gelesen. Eine neu geschriebene Datei ersetzt ihre eigenen Zeilen, anstatt sie zu ergänzen, sodass eine neu generierte Partition keine Duplikate hinterlässt. Das Löschen einer Datei entfernt ihre Zeilen aus der Tabelle, und die Löschung wird protokolliert. Dateien_Ereignisse.
Wurden meine Parquet-Daten hochgeladen oder geändert? +
Weder noch. Die Dateien bleiben an ihrem Speicherort und werden weder geschrieben, verschoben noch umbenannt. Die analysierten Daten werden verschlüsselt auf demselben Rechner wie der Netzwerkagent zwischengespeichert. Nur die von einer Abfrage zurückgegebenen Zeilen verlassen Ihr Netzwerk über eine vom Agenten selbst geöffnete ausgehende Verbindung. Abfragen müssen eine einzelne Zeile enthalten. SELECT, MIT, PRAGMA, BESCHREIBEN oder ERKLÄREN Aussage – alles, was geschrieben werden könnte, wird abgelehnt, bevor es ausgeführt wird.

Los geht's

Schauen Sie in den Ordner mit den Parquet-Dateien.

Richten Sie den Agenten auf den Ordner aus und fragen Sie jede Teildatei als eine einzige SQL-Tabelle ab – mit den exakten Spaltennamen und -typen, die in den Dateien bereits definiert sind. Kein Spark, kein Python, und nichts verlässt Ihr Netzwerk.

Verwandte Leitfäden: Wie man einen Ordner mit Dateien mit SQL abfragt | Mehrere CSV-Dateien in einer Tabelle zusammenführen | Laden Sie den Query Streams Agent herunter. | Alle Anleitungen zum Dateisatz-Connector

Kategorie: Dateisatzverbinder

Schlagwörter: Parquet zu Excel, Parquet-Dateien abfragen, Parquet ohne Spark lesen, Parquet-Ordner, Parquet in Excel, Parquet-Ordner-Connector, SQL auf Parquet, Data-Lake-Export

Meta-Beschreibung: Eine Sammlung von Parquet-Dateien in einem Ordner wird als eine einzige SQL-Tabelle abgefragt und in Microsoft Excel importiert. Kein Spark, kein Upload erforderlich.

Aktualisiert am 27. August 2026

Angetrieben durch BetterDocs