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.
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.
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 Frage | CSV-Ordner | Parkettordner |
|---|---|---|
| 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.
.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.
| Leitplanke | Standard | Maximal |
|---|---|---|
| Dateien pro Konnektor | 100,000 | 2,000,000 |
| Ordnertiefe | 8 Stufen | 64 Level |
| Größe einer einzelnen Datei | 512 MB | 4 GB |
| Zeilen aus einer beliebigen Datei | 2,000,000 | 50,000,000 |
| Zeilen pro Synchronisierung | 10,000,000 | 100,000,000 |
| Scanzeitbudget | 300 Sekunden | 3.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.
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.
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.
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.
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.
**/*.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.
{ "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
_Quelldateioder_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.
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.
- Installieren Sie den Agenten von der Downloadseite falls es nicht bereits läuft.
- Fügen Sie im Portal einen Datenkonnektor hinzu und wählen Sie aus Parkettordner.
- 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.
- Lassen Sie das Include-Muster aktiviert.
**/*.ParkettEs 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. - Speichern. Der Agent liest die Fußzeilen von bis zu 64 Dateien, fixiert das Schema und meldet die gefundenen Spalten und Datentypen.
- Ö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.
- 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.
\\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? +
Kann ich Parquet-Dateien in Microsoft Excel öffnen? +
Muss ich Query Streams die Spaltentypen mitteilen? +
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? +
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? +
Warum wurde eine meiner Parquet-Dateien geparkt? +
Dateien_Ereignisse mit dem Dateinamen und der konkreten Unstimmigkeit, und alle anderen Dateien werden weiterhin synchronisiert.
Wie viele Parquet-Dateien kann ein Connector lesen? +
Kann ich erkennen, aus welcher Datei eine Zeile stammt? +
_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? +
Dateien_Ereignisse.
Wurden meine Parquet-Daten hochgeladen oder geändert? +
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.

