Studi Kasus: Sedot Data Perusahaan di MODI ESDM (Minerba One Data Indonesia)

Jika kita membuka halaman https://modi.esdm.go.id/, maka akan kita dapatkan banyak data minerba disitu antara lain:

  • Penerimaan Negara
  • Dana Bagi Hasil
  • Investasi
  • Dana Pengembangan Masyarakat
  • Produksi Batubara
  • Penjualan Batubara
  • Logam Timah dll

Sebelum sedot update dulu ke versi 07 Agustus 2022

Disini kita akan mencoba menarik data perusahaan yang terdaftar di Minerba untuk keperluan Galpot

I.  Cara Sedot

  1. Klik dulu link
  2. https://modi.esdm.go.id/portal/dataPerusahaan
  3. Cara mencarinya coba cek Links
  4. Klik kanan di Bawah/Pagination, klik aja no. 2, pilih Open in new Tab
  5. Ternyata ini linknya
  6. https://modi.esdm.go.id/portal/dataPerusahaan?page=2
  7. Berarti tinggal kita buat saja rumus atau fitur fill itu biar ketarik ampe halaman 284
  8. Lalu kita tarik gunakan Collect Multiple Links
  9. Pilih Sedot As HTML Formatted
  10. Jika sudah maka hasilnya kita merge gunakan Merge worksheet
  11. Kita pilih Sheet List 1-284
  12. Gunakan Range saja karena bentuknya terstruktur rapi
  13. Kita pilih salah satu sheet List pilih lalu range A16:E35
  14. Lalu klik Merge
  15. Kita rapikan hasilnya karena kita akan menarik link detil
  16. Ini Tampilan Link detil
  17. Dari Gambar diatas kita tidak bisa sedot as text/HTML karena sedot as text hanya menyedot tampilan saja sementara link tersebut menyimpan text yang tersembunyi, yang baru akan muncul jika kita klik link dibawah profil
  18. Kita bisa sedot gunakan HTML kode, cuman masalahnya agak susah mengubah kode HTML menjadi Tabel
  19. Kita bisa gunakan Powerquery untuk Convert data tersebut karena jauh lebih mudah
  20. Oleh karena itu kita sebaiknya sedot as Text file saja, nanti bisa diolah oleh PQ sekaligus satu folder tidak satu2
  21. Kita buat dulu Link dan Nama File
  22. Kita gunakan Rumus untuk ambil link dari suatu Text
  23. =Link_address 
  24. Untuk filename kita gunakan id sebagai nama file
  25. Kita tambahkan "Data Perusahaan" sebagai subfolder
  26. ="Data Perusahaan\"&SUBSTITUTE(LEFT(H1,FIND("?",H1)-1),"https://modi.esdm.go.id/portal/detailPerusahaan/","")
  27. Intinya kita ambil text sampai karakter "?" lalu buang kata sebelum karakter "/"
  28. Sedot Gunakan Collect Multiple links
  29. Gunakan Sedot as textfile
  30. Karena Jumlah List besar lebih dari 1000 maka kita uncheck Loaded List
  31. Klik Run
  32. Ini Hasilnya
  33. Hampir 1 GB

II. Cara Convert

  1. Kita gunakan Powerquery
  2. Klik Data - From File - From Text
  3. Atau Data - From Text
  4. Browse ke salah satu file di hasil sedotan
  5. Akan muncul Jendela PQ
  6. Lalu klik kanan pada file
  7. Pilih HTML
  8. Akan muncul table dengan data sbb
  9. semua table perlu kita ambil satu2
  10. Klik tabel di kolom data baris 1
  11. Bewrdasarkan tampilan awal dimana field ada dikiri maka perlu kita transpose tabelnya
  12. Sebelumnya kita kita remove kolom :
  13. Lalu kita transpose
  14. Trus field/baris 1 kita jadikan header
  15. Kita ganti nama queries menjadi "Profil Perusahaan"
  16. Ulangi langkah2 diatas untuk tabel lainnya
  17. Caranya untuk tabel2 yang lain jauh lebih gampang,
  18. Jangan Keluar dari PQ Editor
  19. Klik Kanan pada panel sebelah kiri (dimana ada nama2 queries)
  20. Pilih new query -From File - From Text
  21. Browse ke salah satu file di hasil sedotan
  22. Lalu pilih tabel berikutnya
  23. Lalu ganti Nama sesuai sesuai gambar berikut
  24. Lanjut ke tabel setelahnya
  25. Tabel lain abaikan saja karena tidak penting
  26. ini hasilnya
  27. Nah kan gak mungkin semua file hasil sedotan kita ambil satu2, ada 5ribuan file
  28. Tenang kita gunakan fungsi merge JSON
  29. Caranya Panjang tapi baca saja :
  30. http://eoditor.com/2021/08/cara-meng-convert-data-json-satu-folder-sekaligus/
  31. Jika sudah maka ini hasilnya
  32. 'Untuk bisa megconvert 1 folder Profil perusahaan kita gunakan  step sbb
    'Kita ubah source yang sebelumnya file menjadi folder, lau kita ambil dari masing2 file table ke 1 (data 0)
    'Setelahnya kita remoce kolom yg berisi ":", trus kita transpose lalu kita jadikan baris 1 sebagai header
    
    (FileBinary as binary) as table =>
    let
        Source = Web.Page(FileBinary),
        Data = Source{0}[Data],
        #"Removed Columns" = Table.RemoveColumns(Data,{"Column2"}),
        #"Transposed Table" = Table.Transpose(#"Removed Columns"),
        #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true])
    in
        #"Promoted Headers"

     

  33. Fungsi diatas akan diterapkan ke folder "Data Perusahaan"
  34. 'Kita add colum dari fungsi di langkah 38
    'lalu kita buang yang error dari file2 di folder "Data Perusahaan" hasil dari fungsi di atas
    'Lalu kita Extract field2 dari tiap file
    'kita buang kolom2 yang gak penting
    'Kolom Nama jangan dibuang karena ia adalah ID perusahaan, sebagai Identitas dari data tersebut
    'Kita ubah typenya semua menjadi text
    
    let
        Source = Folder.Files("D:\Badjoe\MODI-ESDM\Data Pengusaha"),
        #"Invoked Custom Function" = Table.AddColumn(Source, "fProfilPerusahaan", each fProfilPerusahaan([Content])),
        #"Removed Errors" = Table.RemoveRowsWithErrors(#"Invoked Custom Function", {"fProfilPerusahaan"}),
        #"Expanded fProfilPerusahaan" = Table.ExpandTableColumn(#"Removed Errors", "fProfilPerusahaan", {"Kode Perusahaan", "Nama Perusahaan", "Jenis Badan Usaha", "No. Akte", "Tgl. Akte"}, {"Kode Perusahaan", "Nama Perusahaan", "Jenis Badan Usaha", "No. Akte", "Tgl. Akte"}),
        #"Removed Columns" = Table.RemoveColumns(#"Expanded fProfilPerusahaan",{"Content", "Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path"}),
        #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Kode Perusahaan", type text}, {"Nama Perusahaan", type text}, {"Jenis Badan Usaha", type text}, {"No. Akte", type text}, {"Tgl. Akte", type text}})
    in
        #"Changed Type"

     

  35. Nah masalahnya PQ ini kalo folder berbeda akan error, sementara folder penulis dengan anda kan pasti beda
  36. Biasanya kalo saya males saya suruh aja anda edit folder tersebut
  37. Tapi sekarang akan saya tambahin fungsi biar data otomatis menyesuaikan dengan folder anda
  38. Kalo mau tau caranya baca
  39. http://eoditor.com/2021/01/membuat-powerquery-bisa-menggunakan-data-parameters-yang-dinamis/
  40. Jadi jika nanti anda download maka data di jamin tidak error
  41. Sebaiknya jangan direfresh kecuali ada data baru karena proses convert cukup lama
  42. Jika sudah maka semua data akan digabung menjadi satu tabel
  43. Kita gunakan Merge di Powerquery atau anda bisa gunakan Vlookup cuman kan gak lucu
  44. Tabelnya akan kita namai MODI-DataPengusaha
  45. Ini Hasilnya
  46. Data bisa lebih besar dari jumlah perusahaan (profil 5665 sementara data 32519) karena data pemegang saham/Direksi satu perusahaan biasanya lebih dari satu
  47. Pokoknya semua table di sheet tersebut diawali dengan ID yang merujuk ke kolom Kode Perusahaan di Table/sheet Profil Perusahaan

 

Catatan:

Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *