Cách xóa nhiều tệp CSV trong Python

Vì vậy, đối với vấn đề thứ hai của bạn, đây là chức năng tôi sử dụng thường xuyên để kết hợp nhiều tệp CSV có số lượng hàng không mong muốn thay đổi

// fProcessFiles
let
  fProcessFiles = [myFile as binary] =>
    let
      CSV = Csv.Document[myFile, [Encoding=1252]],
      ConditionalBlankIndex = Table.AddColumn[CSV, "Custom", each if [Column2] = "" then 0 else 1],
      HeaderPosition = List.PositionOf[ConditionalBlankIndex[Custom], 1],
      RemoveRows = Table.Skip[CSV, HeaderPosition],
      PromotedHeaders = Table.PromoteHeaders[RemoveRows, [PromoteAllScalars = true]]
    in
      PromotedHeaders
in
  fProcessFiles

Thay đổi tham chiếu cột '[Column2]' thành cột hoàn toàn trống cho đến khi bạn nhấn vào tiêu đề

Đây là chức năng khác mà tôi đã sử dụng trong mã chính

// fNoHeader
let
  fProcessFiles = [myFile as binary] =>
    let
      CSV = Csv.Document[myFile, [Encoding=1252]]
    in
      CSV
in
  fProcessFiles

Mã chính

let
  Source = Folder.Files["H:\My Drive\Power BI\Community Solutions\Files"],
  #"Filtered Rows" = Table.SelectRows[Source, each [[Name] = "headers_filereference.csv"]],
  #"Removed Other Columns" = Table.SelectColumns[#"Filtered Rows", {"Content"}],
  #"Invoked Custom Function" = Table.AddColumn[
    #"Removed Other Columns",
    "Query1",
    each fProcessFiles[[Content]]
  ],
  #"Invoked Custom Function1" = Table.AddColumn[
    #"Invoked Custom Function",
    "NoHeader",
    each fNoHeader[[Content]]
  ],
  #"Added Custom" = Table.AddColumn[
    #"Invoked Custom Function1",
    "Custom",
    each [NoHeader]{1}[Column3]
  ],
  #"Removed Other Columns1" = Table.SelectColumns[#"Added Custom", {"Query1", "Custom"}],
  #"Expanded Query1" = Table.ExpandTableColumn[
    #"Removed Other Columns1",
    "Query1",
    {
      "Column A",
      "",
      "Column B",
      "_1",
      "Column C",
      "_2",
      "Column D",
      "_3",
      "Column E",
      "_4",
      "Column F",
      "_5"
    },
    {
      "Column A",
      "Column1",
      "Column B",
      "_1",
      "Column C",
      "_2",
      "Column D",
      "_3",
      "Column E",
      "_4",
      "Column F",
      "_5"
    }
  ]
in
  #"Expanded Query1"

Về cơ bản

  • Kết nối với thư mục với các tập tin của bạn
  • Xóa tất cả các cột ngoại trừ nội dung của bạn
  • Gọi cả hai chức năng bằng cách sử dụng Thêm cột >> Gọi chức năng tùy chỉnh
  • Thêm cột tùy chỉnh tham chiếu chi tiết bạn muốn giữ lại từ mỗi tệp
  • Xóa lại các cột không mong muốn
  • Mở rộng cột có bảng với các tiêu đề đã lọc

Hãy cho tôi biết nếu điều này cần giải thích thêm

Tôi đã giải quyết được sự cố của bạn chưa?
Vui lòng nhấp vào Chấp nhận làm giải pháp để tôi không tiếp tục quay lại bài đăng này, vâng, những người khác cũng có thể thấy nó hữu ích;].


Nếu bạn thấy bài đăng này hữu ích, vui lòng cho Kudo.
Nó mang lại cho tôi cảm giác hài lòng ngay lập tức và nếu bạn cho tôi Kudo đủ số lần, kỳ lân ma thuật sẽ xuất hiện trên màn hình của bạn.
Nếu bạn thấy chữ ký của tôi hơi buồn cười, vui lòng cho Kudo.
Tự hào là Người dùng cấp cao.

Bạn có thể xóa dữ liệu cũ hoặc lỗi thời khỏi tập dữ liệu trong khi tải dữ liệu mới vào tập dữ liệu giống hoặc khác bằng cách sử dụng API REST. Dữ liệu cần xóa và tải lên được chỉ định trong tệp CSV

Khi bạn xóa dữ liệu cũ và tải dữ liệu mới lên bộ dữ liệu, việc xóa và tải dữ liệu lên được thực hiện trong một giao dịch. Điều này giúp giữ cho dữ liệu trong không gian làm việc của bạn nhất quán và tránh các tình huống khi dữ liệu mới đã có trong tập dữ liệu nhưng dữ liệu cũ chưa bị xóa

nội dung

thông số kỹ thuật

  • Bạn có thể chỉ định nhiều tệp CSV để xóa khỏi cùng một tập dữ liệu trong một lần tải
  • Bạn có thể chọn chỉ xóa một số dữ liệu khỏi tập dữ liệu mà không tải lên bất kỳ dữ liệu mới nào
  • Dữ liệu mới phải được tải lên tập dữ liệu ở chế độ INCREMENTAL. Chế độ FULL không được hỗ trợ để tải khi bạn cũng sẽ xóa một số dữ liệu

Cách xóa hoạt động

  • Xóa dữ liệu có thể được thực hiện bằng cách
    • Khóa chính [hoặc hạt bảng thực tế]. phương pháp này hữu ích cho việc xóa thường xuyên trong khi tải lên
    • khóa ngoại. phương pháp này hữu ích cho việc sửa dữ liệu một lần trong tập dữ liệu
    Mặc dù bạn có thể tải dữ liệu mới lên bằng bất kỳ nhãn nào của thuộc tính, nhưng việc xóa dữ liệu cũ chỉ có thể được thực hiện bằng nhãn thuộc tính chính. Do đó, các giá trị trong các cột sẽ bị xóa phải có ký hiệu referenceKey [nhãn thuộc tính chính]
  • Trong giai đoạn xóa, dữ liệu chỉ bị xóa khỏi trung tâm của tập dữ liệu [bảng trung tâm trong lược đồ hình sao/bông tuyết]. Các bảng tra cứu không bị sửa đổi và một số hàng bị bỏ rơi không được tham chiếu từ bất kỳ bảng nào có thể vẫn còn sau khi quá trình xóa hoàn tất. Trong hầu hết các trường hợp, điều này không gây ra bất kỳ sự cố nào trong dữ liệu không gian làm việc và có thể khắc phục bằng cách tải dữ liệu vào tập dữ liệu ở chế độ FULL
  • Khi quá trình xử lý dữ liệu bắt đầu, bước đầu tiên luôn là xóa dữ liệu được đánh dấu để xóa và bước thứ hai là tải dữ liệu mới lên, bất kể thứ tự thực tế của dữ liệu tải lên và xóa trong tệp kê khai của bạn. Do đó, các tệp CSV để tải dữ liệu lên chỉ được chứa dữ liệu mà bạn muốn thêm từ đầu hoặc sử dụng để ghi đè lên dữ liệu hiện có. Tất cả dữ liệu trong tệp CSV cần tải lên sẽ được tải lên. Không có thao tác xóa bổ sung nào được thực hiện sau khi dữ liệu được tải lên
  • Tuy nhiên, trong giai đoạn xóa, dữ liệu sẽ bị xóa khỏi mỗi tập dữ liệu theo thứ tự được chỉ định trong tệp kê khai của bạn
  • Để có hiệu suất mượt mà, chúng tôi khuyên bạn nên có số lượng bản ghi cần xóa càng nhỏ càng tốt. Vẫn có thể xóa tới hàng triệu bản ghi nhưng có thể gây ra sự cố về hiệu suất và dẫn đến lỗi tải do hết thời gian chờ. Nếu bạn cần xóa một lượng lớn dữ liệu và tải dữ liệu mới, hãy cân nhắc tải dữ liệu mới ở chế độ FULL để thay thế

bước

  1. Xây dựng tệp kê khai để chỉ định tập dữ liệu và dữ liệu cần xóa và thêm. Đặt tên cho tệp kê khai upload_info.json. Để biết ví dụ về tệp kê khai, hãy xem
  2. Chuẩn bị các tệp CSV chứa dữ liệu để tải hoặc xóa. Để biết ví dụ về tệp CSV, hãy xem
  3. Tạo tệp ZIP có tên upload.zip chứa upload_info.json [tệp kê khai] và tệp CSV có dữ liệu. Tải tệp ZIP này lên một thư mục trên nền tảng GoodData. Để biết thêm thông tin, hãy xem Bộ nhớ dành riêng cho người dùng
  4. Bắt đầu tải dữ liệu lên qua

Tệp kê khai và dữ liệu đầu vào

Hãy tưởng tượng rằng bạn có bốn tệp CSV.

// fNoHeader
let
  fProcessFiles = [myFile as binary] =>
    let
      CSV = Csv.Document[myFile, [Encoding=1252]]
    in
      CSV
in
  fProcessFiles
1, INCREMENTAL0, INCREMENTAL1 và INCREMENTAL2

Bạn muốn xóa một số dữ liệu khỏi INCREMENTAL0, INCREMENTAL1 và INCREMENTAL2, đồng thời, bạn muốn tải lên dữ liệu mới từ

// fNoHeader
let
  fProcessFiles = [myFile as binary] =>
    let
      CSV = Csv.Document[myFile, [Encoding=1252]]
    in
      CSV
in
  fProcessFiles
1

Bảng sau đây hiển thị cấu trúc [tên cột và giá trị trong các cột] của từng tệp CSV mà bạn sắp xử lý

dữ liệu. csvdelete-pk. csvdelete-fk1. csvdelete-fk2. csvXem tệp dữ liệu CSV mẫu
trong Đang tải dữ liệu qua API REST

csv_id
12246545
12246547

market,quote_date
NASDAQ,8/15/08
NASDAQ,8/16/08
NASDAQ

ngành
Chăm sóc sức khỏe

Xây dựng tệp kê khai để chỉ định dữ liệu nào sẽ tải lên và dữ liệu nào cần xóa đối với từng tập dữ liệu. Tệp kê khai ánh xạ các cột trong tệp CSV tới mô hình dữ liệu của bạn. Bạn có thể tạo nó từ đầu hoặc bạn có thể truy xuất tệp kê khai SLI qua rồi cập nhật thủ công

Trong tệp kê khai

  • Đối với mỗi tệp CSV để tải lên hoặc xóa dữ liệu, hãy tạo một phần INCREMENTAL7 riêng [xem Tải dữ liệu qua API REST]
  • Để xóa dữ liệu, hãy đặt chế độ thành INCREMENTAL8
  • Để tải dữ liệu, hãy đặt chế độ thành INCREMENTAL

Nếu bạn chỉ muốn xóa một số dữ liệu khỏi tập dữ liệu mà không tải lên bất kỳ dữ liệu mới nào, thì không cung cấp bất kỳ phần INCREMENTAL7 nào có chế độ INCREMENTAL trong tệp kê khai và không bao gồm bất kỳ tệp CSV nào để tải dữ liệu lên từ đó

Tệp kê khai sau đây chỉ định dữ liệu nào sẽ tải lên từ

// fNoHeader
let
  fProcessFiles = [myFile as binary] =>
    let
      CSV = Csv.Document[myFile, [Encoding=1252]]
    in
      CSV
in
  fProcessFiles
1 và dữ liệu nào cần xóa khỏi INCREMENTAL0, INCREMENTAL1 và INCREMENTAL2

Chủ Đề