Lagi

Menulis kueri di "Select_analysis" untuk membandingkan string dari satu kolom dengan kolom lain?

Menulis kueri di


Saya memiliki file shp (s.shp) dengan kolom "A" dan kolom "B". Saya mencoba menyalin dari file ini hanya baris di mana nilai string dari kolom "A" adalah bagian dari nilai string dari kolom "B" mis.

A 0.1 0.2 0.3 B 0.12 0.21 0.43

File output harus memiliki dua baris pertama dan kedua.

saya coba buat:

import arcpy source="c:MYs.shp" output="c:MYo.shp" arcpy.Select_analysis(source,output,""B" like '%'|| "A"||'%'")

tapi ada kesalahan :(

GALAT 000358: Ekspresi "B" tidak valid seperti '%'||"A"||'%'

Saya menggunakan ArcMap 10.1.


Jika contoh Anda adalah tipikal dari apa yang Anda coba pilih, maka jika Anda mengonversi dataset input Anda menjadi kelas fitur geodatabase file, Anda dapat menggunakan ekspresi sql:

SUBSTRING( B, 1 , 3) ​​= A

Ini akan memilih baris di mana 3 karakter pertama bidang B cocok dengan seluruh isi bidang SEBUAH.


SQL: PILIH Semua kolom kecuali beberapa

Apakah ada cara untuk MEMILIH semua kolom dalam tabel, kecuali yang spesifik? Akan sangat mudah untuk memilih semua kolom non-gumpalan atau non-geometris dari sebuah tabel.

  • Saya pernah mendengar bahwa fungsi ini sengaja dikeluarkan dari standar SQL karena mengubah penambahan kolom ke tabel akan mengubah hasil kueri. Apakah ini benar? Apakah argumennya valid?
  • Apakah ada solusi, terutama di PostgreSQL?


Coba kueri ini sebagai gantinya pada data Anda dan beri tahu bagaimana kinerjanya. Tidak yakin itu akan kembali persis sama dengan kueri Anda, tetapi itu harus cukup dekat sehingga Anda dapat menyesuaikan dengan apa yang Anda inginkan.

Bagian yang harus membuat perbedaan pada kinerja adalah bahwa saya telah mengganti penggunaan sumbu induk ../ dengan panggilan tambahan untuk menerapkan simpul () dan saya menentukan simpul teks () dalam fungsi nilai ().

Menggunakan 1000 baris dan XML yang disediakan dalam pertanyaan untuk kedua kolom XML, saya mengatur waktu kueri di atas menjadi about 4 menit di mesin saya. Rencana eksekusi memiliki dua cabang yang bertanggung jawab untuk merobek masing-masing dari dua kolom XML. Hal buruk dengan rencana ini adalah bahwa cabang kedua dieksekusi sekali untuk setiap baris yang keluar dari cabang pertama. Akan jauh lebih baik jika penghancuran kolom dapat dilakukan secara mandiri dan kemudian digabungkan.

Jadi saya mencoba penulisan ulang kueri ini.

Dan itu bekerja cukup baik. Waktu eksekusi turun menjadi 62 detik. Penghancuran XML dilakukan hanya sekali per kolom XML dan hasil dari cabang kedua disimpan dalam gulungan tabel dan gulungan itu digunakan untuk semua baris yang keluar dari cabang pertama.

Bagaimana kalau kita bisa membuat cabang bergabung bersama dengan gabungan gabungan. Input ke gabungan gabungan harus diurutkan sehingga kami berharap untuk melihat dua jenis tambahan dalam rencana eksekusi.

Kueri yang sama seperti di atas dengan petunjuk gabung gabung.

Dan itu berhasil seperti yang diharapkan. Cabang-cabang diurutkan, gabungan gabungan digunakan dan waktu eksekusi turun lagi. Kali ini untuk 23 detik.

Mengubah gabungan menjadi hash join adalah hash join yang lebih baik, 13 detik.

Cara lain untuk membuatnya lebih cepat adalah dengan merobek XML dari setiap kolom ke dua tabel temp dan kemudian bergabung dengan tabel temp untuk melihat apa yang berbeda.

Bagi saya ini adalah cara tercepat untuk melakukan perbandingan dengan waktu eksekusi 7 detik.


Perbedaan antara Bahasa M dan DAX

Di bagian sebelumnya, kami menghubungkan Power BI ke dataset dummy di GitHub. Di bagian ini, Anda akan melihat dengan bantuan contoh, perbedaan antara Bahasa M dan DAX.

Bahasa M

Pertama, kita akan melihat apa itu M dan bagaimana M digunakan di Power BI. Seperti yang saya katakan sebelumnya, Bahasa M digunakan untuk mengelola dan memfilter data di Editor Kueri. Jika Anda telah menutup Editor Kueri, Anda dapat membukanya dengan mengeklik opsi “Edit Kueri” dari menu atas.

Di editor Kueri, satu-satunya nama tabel di panel kiri layar adalah tabel Anda, seperti yang ditunjukkan di bawah ini. Klik pada tabel data “WA_Fn-UseC_-Telco-Customer-Churn” dari panel kiri editor kueri seperti yang ditunjukkan di bawah ini:

Untuk melihat kueri di M. Pilih kolom mana saja, misalnya, “Mitra”, lalu klik tombol “Hapus Kolom” dari menu atas. Ini akan menghapus kolom “Partner” dari tabel seperti yang ditunjukkan di bawah ini:

Selanjutnya, klik opsi “View” dari menu atas seperti yang disorot pada tangkapan layar berikut.

Klik kotak centang “Bilah Formula”. Anda sekarang akan melihat kueri di bilah rumus seperti yang disorot di tangkapan layar berikut. Query di sini adalah “= Table.RemoveColumns(#”Changed Type”,<“Partner”>). Kueri ini adalah kueri bahasa M yang digunakan untuk menghapus kolom “Mitra” dari tabel yang dipilih. Anda dapat melihat bahwa kueri Bahasa M lebih mirip dengan perintah SQL atau LINQ (Language Integrated Query) di C#.

Untuk melihat semua kueri M yang dieksekusi sebelumnya dalam kumpulan data Anda, Anda dapat mengklik “View – Advanced Editor” seperti yang ditunjukkan pada tangkapan layar berikut.

Setelah Anda mengklik opsi “Editor Lanjutan” dari menu atas, Anda akan melihat jendela Editor Lanjutan seperti yang ditunjukkan di bawah ini. Jendela Editor Lanjutan berisi semua kueri bahasa M yang telah Anda jalankan hingga sekarang di sesi saat ini.

Anda dapat melihat bahwa kueri terakhir adalah kueri yang menghapus kolom “Mitra” dari tabel. Sebelum itu, kueri “Ubah Tipe” digunakan untuk menetapkan tipe data ke kolom yang berbeda dalam kumpulan data. Dan sebelumnya, query “Promoted Headers” digunakan untuk mengatur kolom header. Jika Anda menjalankan kueri lain, kueri tersebut akan muncul di bagian bawah dalam daftar kueri di “Editor Lanjutan”.

Mari kita coba menambahkan kolom sederhana di tabel buku dan melihat kueri M untuk itu. Klik opsi “Add Column -> Custom Column” pada menu di bagian atas jendela, seperti yang Anda lihat di bawah:

Anda akan melihat jendela di bawah ini. Klik kolom “TotalCharges” dan “MonthlyCharges” satu per satu, lalu klik tombol “Sisipkan” untuk menyisipkannya di jendela editor kueri. Di jendela editor kueri, tambahkan tanda “+” di antara nama dua kolom dan klik tombol “OK”.

Anda akan melihat kolom baru “Bulanan-Total” ditambahkan ke tabel seperti yang ditunjukkan di bawah ini. Di bilah rumus, Anda juga dapat melihat kueri M yang dibuat untuk membuat kolom “Total-Bulanan”. Kolom “Total-Bulanan” pada dasarnya menampilkan jumlah nilai dalam kolom “TotalCharges” dan “MonthlyCharges”.

Sekarang jika Anda kembali membuka jendela “Editor Lanjutan”, Anda akan melihat kueri yang digunakan untuk menambahkan kolom “Total-Bulanan” di bagian bawah kueri di editor lanjutan.

Sekarang kita tahu cara kerja Bahasa M dan tampilannya. Di bagian selanjutnya, kita akan mencoba membuat kolom “Bulanan-Total 2” yang sama melalui DAX (Ekspresi Analisis Data).

Kueri DAX dijalankan dalam Tampilan Data oleh karena itu, kita harus memindahkan data dari Editor Kueri ke tampilan data. Untuk melakukannya, di Editor Kueri, klik opsi “Tutup & Terapkan” dari menu atas seperti yang ditunjukkan di bawah ini:

Setelah Anda mengklik tombol “Tutup & Terapkan”, Tampilan Data akan terbuka.

DAX (Ekspresi Analisis Data)

Di bagian ini, kita akan melihat cara menambahkan kolom baru ke tabel Buku menggunakan DAX. Pada Data View, klik opsi “Modeling -> New Column” dari menu atas seperti yang ditunjukkan di bawah ini:

Anda akan melihat jendela berikut setelah Anda mengklik opsi “Kolom Baru”. Di bilah rumus, Anda bisa melihat nama kolom default. Anda dapat menjalankan kueri DAX di bilah rumus ini.

Masukkan kueri “Monthly-Total 2 = [TotalCharges] + [MonthlyCharges]” di bilah rumus dan tekan tombol “Enter”. Setelah Anda menekan enter, Anda akan melihat kolom baru “Monthly-Total 2” yang menampilkan jumlah nilai dalam kolom “TotalCharges” dan “MonthlyCharges”.

Anda dapat melihat bahwa kueri DAX lebih mirip dengan MS Excel.


Manakah dari PostgreSQL atau SQL Server yang lebih mudah digunakan? Bandingkan kemudahan penggunaan PostgreSQL vs. MSSQL

  • PostgreSQL adalah sistem manajemen basis data relasional objek canggih yang menggunakan Structured Query Language (SQL) selain bahasa proseduralnya sendiri, PL/pgSQL. PostgreSQL mudah digunakan dengan fitur dan kemampuan database RDBMS yang lengkap untuk menangani data. Itu dapat dengan mudah diinstal pada lingkungan Linux.
  • SQL Server adalah Relational Database Management System (RDBM) yang dikembangkan dan dioperasikan oleh Microsoft. Ini menggunakan varian dari Structured Query Language (SQL) yang disebut T-SQL (untuk Transact-SQL). Itu dapat berjalan di sistem operasi Linux dengan dukungan Kubernetes atau di Windows. Pengguna menggambarkannya sebagai mudah digunakan dan dapat diandalkan, dengan kompatibilitas .NET yang kuat.

Fungsi di bawah ini memberi Anda bulan dalam digit.

Fungsi di bawah ini memberi Anda nama bulan

Fungsi di bawah ini memberi Anda nama bulan pendek

Coba gunakan yang ini =TEXT([DateField]"mmmm") . Saya biasanya memiliki kesalahan jika menggunakan ',' alih-alih '' dalam rumus. Bahasa situs saya adalah bahasa Rusia dan kemudian diterjemahkan secara otomatis jika saya menulis terlebih dahulu dalam bahasa Inggris.

Akan membantu jika Anda membagikan formula Anda. Mencoba:

Untuk tujuan pengurutan (yaitu Ascending sort dan Descending sort) pada bulan saya biasanya melakukan hal berikut:

Ini menghasilkan format:

Yang kemudian memungkinkan Anda untuk mengatur Tampilan di mana Anda dapat mengurutkan dengan benar berdasarkan Bulan.

Ini akan mengembalikan angka dari 1-12 dan Null ketika kolom tanggal kosong.

Tautan di atas ke solusi untuk menghilangkan nilai "02", "02" rusak. namun, saya telah memposting solusi untuk itu di blog saya yang akan berfungsi dengan baik: http://thesharepointhive.blogspot.com/2015/12/render-sharepoint-list-headers-in-order.html

Tanggal terakhir bulan ini (ini juga berlaku untuk tahun kabisat)

Saya memilih tanggal 3 Februari 2018 di kolom tanggal daftar kustom (bernama "Tanggal") dan kemudian membuat kolom terhitung dengan rumus ini:

Kolom terhitung muncul sebagai: Sab 03 Feb

Ketika saya menghadapi masalah yang sama, Saya telah mengubah lokal situs ke dalam bahasa Inggris, menambahkan rumus kolom terhitung, lalu mengembalikan lokal situs ke bahasa Jerman.

Saya telah menggunakan rumus kolom terhitung di bawah ini untuk mendapatkan format "MMMM-YYYY" bersama dengan urutan pengurutan yang benar untuk Bulan (Januari, Februari, Maret ... dll.)

Tetapi kemudian menghadapi masalah ketika entri dari tahun yang berbeda hadir. Jadi, saya telah mengubah format menjadi "YYYY-MMMM" menggunakan rumus di bawah ini.


  1. Pilih daftar di kolom A
  2. Klik kanan dan pilih Beri Nama Rentang.
  3. Masukkan "ColumnToSearch"
  4. Klik sel C1
  5. Masukkan rumus ini: =MATCH(B1,ColumnToSearch,0)
  6. Tarik rumus ke bawah untuk semua item di B

Jika rumus gagal menemukan kecocokan, maka akan ditandai #N/A, jika tidak maka akan berupa angka.

Jika Anda ingin menjadi TRUE untuk kecocokan dan FALSE untuk tidak ada kecocokan, gunakan rumus ini sebagai gantinya:

Jika Anda ingin mengembalikan nilai tidak ditemukan dan kembalikan string kosong untuk nilai yang ditemukan

Inilah metode cepat dan kotor.

Sorot Kolom B dan buka Pemformatan Bersyarat.

Memilih Gunakan rumus untuk menentukan sel mana yang akan disorot.

Masukkan rumus berikut lalu atur format pilihan Anda.

Pilih dua kolom. Buka Pemformatan Bersyarat dan pilih Sorot Aturan Sel. Pilih Nilai duplikat. Saat Anda mencapai langkah berikutnya, Anda dapat mengubahnya menjadi nilai unik. Saya baru saja melakukannya dan itu berhasil untuk saya.

Butuh waktu lama bagi saya untuk mengetahui hal ini, tetapi ini sangat sederhana. Dengan asumsi data dimulai di A2 dan B2 (untuk header) masukkan rumus ini di C2:

Sel dengan #N/A berarti bahwa nilai tepat di sebelahnya di kolom B tidak muncul di mana pun di seluruh kolom A.

Harap perhatikan bahwa Anda perlu mengubah $A$287 agar sesuai dengan seluruh larik pencarian Anda di Kolom A. Misalnya jika data Anda di kolom A turun untuk 1000 entri, seharusnya menjadi $A$1000.

Lihat jawaban rumus array saya untuk daftar A tidak ditemukan di B di sini:

Persyaratan saya bukan untuk menyorot tetapi untuk menampilkan semua nilai kecuali yang merupakan duplikat di antara 2 kolom. Saya mengambil bantuan solusi @ brenton dan lebih ditingkatkan untuk menunjukkan nilai sehingga saya dapat menggunakan data secara langsung:

Salin ini di sel pertama kolom ke-3 dan terapkan rumus di seluruh kolom sehingga akan mencantumkan semua item dari kolom B yang tidak terdaftar di kolom A.

Terima kasih kepada mereka yang telah membagikan jawaban mereka. Karena solusi Anda, saya bisa membuat jalan saya sendiri.

Dalam versi pertanyaan ini, saya memiliki dua kolom untuk dibandingkan -- kelas kelulusan penuh (Kol A) dan subset dari kelas kelulusan itu (Kol B). Saya ingin dapat menyoroti di kelas kelulusan penuh para siswa yang merupakan anggota subset.

Saya memasukkan rumus berikut ke dalam kolom ketiga:

Ini mengkodekan sebagian besar siswa saya, meskipun menghasilkan beberapa kesalahan dalam beberapa baris data pertama.


SQL: string kosong vs nilai NULL

Saya tahu topik ini agak kontroversial dan ada banyak artikel/opini yang beredar di internet. Sayangnya, kebanyakan dari mereka menganggap orang tersebut tidak tahu apa perbedaan antara NULL dan string kosong. Jadi mereka menceritakan kisah tentang hasil yang mengejutkan dengan gabungan/agregat dan umumnya melakukan pelajaran SQL yang sedikit lebih maju. Dengan melakukan ini, mereka benar-benar kehilangan intinya dan karena itu tidak berguna bagi saya. Jadi semoga pertanyaan ini dan semua jawaban akan membuat subjek sedikit maju.

Misalkan saya memiliki tabel dengan informasi pribadi (nama, kelahiran, dll) di mana salah satu kolomnya adalah alamat email dengan tipe varchar. Kami berasumsi bahwa untuk beberapa alasan beberapa orang mungkin tidak ingin memberikan alamat email. Saat memasukkan data tersebut (tanpa email) ke dalam tabel, ada dua pilihan yang tersedia: setel sel ke NULL atau setel ke string kosong (''). Mari kita asumsikan bahwa saya mengetahui semua implikasi teknis dari memilih satu solusi di atas yang lain dan saya dapat membuat kueri SQL yang benar untuk kedua skenario. Masalahnya adalah bahkan ketika kedua nilai berbeda pada tingkat teknis, mereka persis sama pada tingkat logis. Setelah melihat NULL dan '' Saya sampai pada satu kesimpulan: Saya tidak tahu alamat email orang itu. Juga tidak peduli seberapa keras saya mencoba, saya tidak dapat mengirim email menggunakan NULL atau string kosong, jadi tampaknya sebagian besar server SMTP di luar sana setuju dengan logika saya. Jadi saya cenderung menggunakan NULL di mana saya tidak tahu nilainya dan menganggap string kosong sebagai hal yang buruk.

Setelah beberapa diskusi intens dengan rekan-rekan saya datang dengan dua pertanyaan:

apakah saya benar dalam mengasumsikan bahwa menggunakan string kosong untuk nilai yang tidak diketahui menyebabkan database "berbohong" tentang fakta? Untuk lebih tepatnya: menggunakan ide SQL tentang apa yang bernilai dan apa yang tidak, saya mungkin sampai pada kesimpulan: kami memiliki alamat email, hanya dengan mengetahui bahwa itu bukan nol. Tapi kemudian, ketika mencoba mengirim email, saya akan sampai pada kesimpulan yang kontradiktif: tidak, kami tidak memiliki alamat email, bahwa @!#$ Database pasti bohong!

Apakah ada skenario logis di mana string kosong '' bisa menjadi pembawa informasi penting yang baik (selain nilai dan tidak ada nilai), yang akan merepotkan/tidak efisien untuk disimpan dengan cara lain (seperti kolom tambahan). Saya telah melihat banyak posting yang mengklaim bahwa kadang-kadang baik menggunakan string kosong bersama dengan nilai nyata dan NULL, tetapi sejauh ini belum melihat skenario yang logis (dalam hal desain SQL/DB).


3 Jawaban 3

Anda dapat menulis penangan REST Anda sendiri untuk kueri khusus jika Anda mau. Dalam kasus Anda, kueri dapat dilakukan dengan melakukannya:

Sekarang, yang harus Anda lakukan adalah mengakses:

Gunakan sisa filter__query untuk menambahkan dukungan meta posting di WP Rest API untuk semua jenis posting.

Dapatkan postingan yang nilai meta postingannya sudah dikunjungi adalah true .

Ini HANYA mencantumkan posting yang kunci meta posting sudah dikunjungi memiliki nilai true .

Filter yang Tersedia

Kode berikut harus menambahkan beberapa kemampuan meta query ke semua jenis posting Anda. Ini mendukung CPT (Jenis Posting Kustom) dan ACF (Bidang Kustom Lanjutan). Kode sumber juga tersedia di Github.

Tambahkan ke function.php . Anda

IMHO, cara yang lebih baik adalah memasukkan fungsi tambahan sebagai plugin terpisah. Jadi meskipun pengguna mengubah tema, panggilan api Anda tidak akan terpengaruh.

Oleh karena itu saya telah mengembangkan pengaya untuk kueri meta di WordPress. Lebih baik lagi, ini mendukung ACF juga!

Setelah instalasi, lakukan saja DAPATKAN permintaan dalam format berikut.


1) Masukkan daftar nilai tetap Anda. (Ini harus berada di lembar yang sama dengan sel yang ingin Anda batasi)

2) Klik pada sel yang ingin Anda batasi. Pilih "validasi"dari excelnya"Data"menu tarik kebawah"

3) Di tarik ke bawah pada "Pengaturan"pilih tab"Daftar"

4) klik Di kotak berlabel "Sumber" lalu pilih sel yang berisi nilai yang diatur pada langkah 1)

5) Klik OK dan selesai.

Anda dapat melakukan ini untuk sejumlah sel

Anda akan melihat ikon tarik ke bawah di sebelah sel yang dibatasi. Klik untuk memilih hanya nilai dalam daftar. Excel tidak akan mengizinkan nilai lain apa pun di sel ini.

Lihatlah ke sekeliling di kotak dialog Validasi dan Anda akan melihat bahwa Anda dapat mengubah cara kerjanya.

Daripada memilih banyak sel dengan nilai di dalamnya, Anda dapat menulis nilai sebagai daftar yang dipisahkan titik koma di kotak sumber.

Juga pembatasan pada langkah pertama dari jawaban pertama "(Ini harus berada di lembar yang sama dengan sel yang ingin Anda batasi)" tidak benar.

Sebenarnya ini adalah praktik yang baik, terutama jika Anda memiliki beberapa daftar pencarian yang digunakan untuk meletakkan semuanya di tab Pencarian dan kemudian menyembunyikan tab tersebut sehingga pengguna umum tidak dapat melihatnya & mengutak-atiknya.

Untuk mengatasi batasan yang disebutkan, Anda harus mengatur Rentang Bernama untuk mengidentifikasi daftar item entri yang diizinkan. Karena Rentang Bernama dikenali di seluruh buku kerja, Anda kemudian dapat menggunakan nama ini untuk menentukan daftar secara spesifik di tab lain yang Anda suka. Di kotak Sumber Anda mengetik tanda = segera diikuti dengan nama yang Anda pilih untuk Rentang Bernama