Delen via


cloud_files_state functie met tabelwaarde

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 11.3 LTS en hoger

Retourneert de status op bestandsniveau van een Auto Loader of read_files stroom.

Syntaxis

cloud_files_state( { TABLE ( table_name ) | checkpoint } )

Argumenten

  • table_name: de identificatie van de streamingtabel waarnaar door read_files wordt geschreven. De naam mag geen tijdelijke specificatie bevatten. Beschikbaar in Databricks Runtime 13.3 LTS en hoger.
  • checkpoint: Een STRING letterlijke weergave. De controlepuntmap voor een stream met behulp van de Auto Loader-bron. Zie Wat is Auto Loader?

Retouren

Retourneert een tabel met het volgende schema:

  • path STRING NOT NULL PRIMARY KEY

    Het pad van een bestand.

  • size BIGINT NOT NULL

    De grootte van een bestand in bytes.

  • create_time TIMESTAMP NOT NULL

    Het tijdstip waarop een bestand is gemaakt.

  • discovery_time TIMESTAMP NOT NULL

    Van toepassing op:gemarkeerd Databricks SQL gemarkeerd Databricks Runtime 16.4 en hoger

    Het tijdstip waarop een bestand is gedetecteerd.

  • processed_time TIMESTAMP NOT NULL

    Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 16.4 en hoger wanneer cloudFiles.cleanSource is ingeschakeld. Zie opties voor automatisch laden.

    Het tijdstip waarop een bestand is verwerkt. Als een batch een fout tegenkomt en opnieuw wordt geprobeerd, kan een bestand meerdere keren worden verwerkt. Wanneer er nieuwe pogingen worden uitgevoerd, bevat dit veld de meest recente verwerkingstijd.

  • commit_time TIMESTAMP

    Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 16.4 en hoger wanneer cloudFiles.cleanSource is ingeschakeld. Zie opties voor automatisch laden.

    Het tijdstip waarop een bestand is doorgevoerd naar het controlepunt na verwerking. NULL als het bestand nog niet is verwerkt. Er is geen gegarandeerde latentie voor het markeren van een bestand als gecommit; een bestand kan worden verwerkt, maar op een willekeurig later moment als gecommit worden gemarkeerd. Als u het bestand markeert zoals vastgelegd, betekent dit dat automatisch laden het bestand niet opnieuw nodig heeft voor verwerking.

  • archive_time TIMESTAMP

    Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 16.4 en hoger wanneer cloudFiles.cleanSource is ingeschakeld. Zie opties voor automatisch laden.

    De tijd dat een bestand is gearchiveerd. NULL als het bestand niet is gearchiveerd.

  • archive_mode STRING

    Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 16.4 en hoger wanneer cloudFiles.cleanSource is ingeschakeld. Zie opties voor automatisch laden.

    MOVE wanneer het bestand is gearchiveerd, als cloudFiles.cleanSource op MOVE is ingesteld.

    DELETE wanneer het bestand is gearchiveerd, als cloudFiles.cleanSource op DELETE is ingesteld.

    NULL als cloudFiles.cleanSource is ingesteld op OFF (standaard).

  • move_location STRING

    Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 16.4 en hoger wanneer cloudFiles.cleanSource is ingeschakeld. Zie opties voor automatisch laden.

    Het volledige pad waarnaar het bestand tijdens de archiveringsbewerking is verplaatst toen cloudFiles.cleanSource werd ingesteld op MOVE.

    NULL als het bestand niet is gearchiveerd of cloudFiles.cleanSource een van DELETE of OFFis.

  • source_id STRING

    De ID van de Auto Loader-bron in de streamingquery. Deze waarde is '0' bedoeld voor streams die worden opgenomen vanuit één locatie voor het cloudobjectarchief.

  • flow_name STRING

    Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 13.3 en hoger

    Vertegenwoordigt een specifieke streamingstroom in Lakeflow Declarative Pipelines die een of meer cloudbestandenbronnen bevat. NULL als er geen table_name is opgegeven.

  • ingestion_state STRING

    Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime 16.4 en hoger wanneer cloudFiles.cleanSource is ingeschakeld. Zie opties voor automatisch laden.

    Of het bestand is opgenomen, aangegeven met een van de volgende statussen:

    • NULL: Het bestand is nog niet verwerkt of de bestandsstatus kan niet worden bepaald door automatisch laden.
    • PROCESSING: het bestand wordt verwerkt.
    • SKIPPED_CORRUPTED: Het bestand is niet opgenomen omdat het beschadigd is.
    • SKIPPED_MISSING: Het bestand is niet opgenomen omdat het niet is gevonden tijdens de verwerking.
    • INGESTED: Het bestand is minstens één keer verwerkt door de ontvanger. Het kan opnieuw worden verwerkt door niet-idempotente sinks, zoals foreachBatch in geval van storingen in de stroom. Alleen bestanden die een niet-lege commit_time-veld hebben en zich in de INGESTED-status bevinden, zijn volledig verwerkt.
    • NOT_RECOGNIZED_BY_DBR: Gereserveerd voor versiecompatibiliteit. Deze status wordt weergegeven voor statussen die zijn geïntroduceerd in latere Databricks Runtime-versies die niet worden herkend door eerdere Databricks Runtime-versies.

Machtigingen

U moet het volgende hebben:

  • OWNER bevoegdheden voor de streamingtabel als u een streamingtabel-id gebruikt.
  • READ FILES bevoegdheden voor de controlepuntlocatie als u een controlepunt opgeeft op een externe locatie.

Voorbeelden

-- Simple example from checkpoint
> SELECT path FROM CLOUD_FILES_STATE('/some/checkpoint');
  /some/input/path
  /other/input/path

-- Simple example from source subdir
> SELECT path FROM CLOUD_FILES_STATE('/some/checkpoint/sources/0');
  /some/input/path
  /other/input/path

-- Simple example from streaming table
> SELECT path FROM CLOUD_FILES_STATE(TABLE(my_streaming_table));
  /some/input/path
  /other/input/path

Beperkingen

  • De tabelwaardefunctie kan niet worden gebruikt in een ETL-pijplijn om de status op bestandsniveau van een streamingtabel te lezen die door een andere pijplijn wordt geproduceerd.
  • Een query kan niet verwijzen naar meer dan één cloud_files_state tabelwaardefunctie in verschillende streamingtabellen.

Als u de eerste beperking wilt omzeilen, kunt u een Databricks-taak maken en de tabelwaardefunctie in een notebooktaak gebruiken om de status op bestandsniveau van een streamingtabel te extraheren en te laden. Voorbeeld:

  1. Klik in de zijbalk van de werkruimte op taken & pijplijnen.

  2. Klik op een taak.

  3. Maak een nieuwe pijplijntaak die een streamingtabel produceert. Voorbeeld:

    CREATE OR REFRESH STREAMING LIVE TABLE <table-name>
    AS SELECT <select clause expressions>
    FROM STREAM read_files('/path/to/files', format => '<format>', ...)
    
  4. Maak een nieuwe Notebook-taak die de status op bestandsniveau van de streamingtabel leest met behulp van de cloud_files_state functie met tabelwaarde en laad deze in een tabel. Voorbeeld:

    spark
      .sql("""SELECT * FROM cloud_files_state(TABLE(<table-name>)""")
      .write
      .saveAsTable('<table-file-state>')
    
  5. Configureer het veld Afhankelijk van de notebook-taak en selecteer de pijplijntaak .