Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Tra cứu bảng trong công việc IRI tương thích với sắp xếpCL

Giới thiệu

SortCL, ngôn ngữ IRI của định nghĩa và thao tác dữ liệu có cấu trúc, từ lâu đã có khả năng vẽ các giá trị thay thế từ các tệp tập hợp bên ngoài chứa hai hoặc nhiều cột giá trị. Khả năng này được sử dụng cho các chuyển đổi tra cứu trong các hoạt động ETL do CoSort hỗ trợ, các chức năng khôi phục và giả danh FieldShield cũng như lựa chọn dữ liệu cặp ngẫu nhiên / hợp lệ trong các công việc tổng hợp dữ liệu thử nghiệm RowGen.

Các tập hợp tệp này rất tốt cho thông tin không thay đổi thường xuyên. Nhưng vì tập hợp các tệp phải được sắp xếp theo nội dung cột, chúng có thể cồng kềnh để sử dụng khi cần thêm hàng - đặc biệt là khi tệp tập hợp đang mở / đang được sử dụng.

Ngoài ra, nội dung của một tập hợp thường thực sự bắt nguồn từ một cơ sở dữ liệu. Trong những trường hợp đó, phải thêm một bước (như chạy trình hướng dẫn ‘Đặt tệp từ cột’ của IRI Workbench hoặc thao tác SQL) vào quy trình công việc để trích xuất các giá trị từ bảng thành tệp tập hợp.

Để giải quyết những nhược điểm này, tính năng tra cứu trực tiếp các giá trị thay thế từ các bảng cơ sở dữ liệu hiện có đã được kích hoạt. Tra cứu từ một bảng cơ sở dữ liệu sử dụng cùng một cú pháp và cấu trúc để tra cứu bảng đã có sẵn cho các tập tin. Điều này duy trì tính nhất quán về chức năng trong các công việc SortCL và cung cấp quyền truy cập vào nhiều giá trị hơn (trong nhiều cơ sở dữ liệu và tập hợp tệp) cùng một lúc.

Cú pháp

Cú pháp thuộc tính trường SortCL để truy cập dữ liệu trong một tập tin theo truyền thống là:

SET="<Set_Source>"[<[ Search List ]>]
    [DEFAULT="string"]
    [ORDER=<Order Option>]
    [SELECT=<Select Option>]
    [SEARCH=<Search Option>]

nơi <Đặt Nguồn> tham số biểu thị tên đường dẫn của tập tin đã đặt. Tham số này bây giờ cũng có thể là một tên bảng ODBC và chuỗi kết nối, giống như tham số được sử dụng trong các câu lệnh infile hoặc outfile. Tham số Danh sách tìm kiếm phải tham chiếu đến một trường từ một trong các nguồn đầu vào trong trường hợp tra cứu bảng.

Sau đó, chương trình SortCL (hoặc tương thích) của bạn sẽ tìm kiếm sự phù hợp giữa giá trị của trường này và cột tra cứu trong cơ sở dữ liệu. Nếu có sự trùng khớp, thì giá trị của cột thay thế tại hàng này sẽ được sử dụng làm giá trị cuối cùng cho trường mới, trường này phải có tên khác với trường được tham chiếu từ một trong các nguồn đầu vào.

Các cột của bảng được sử dụng trong tra cứu được chỉ định bằng một phần tử ngôn ngữ bổ sung duy nhất cho việc triển khai ban đầu của thuộc tính phụ SET:LOOKUP =”< lvalue >, < rvalue > ”.

Tham số lvalue là tên của cột trong bảng chứa giá trị cần tra cứu. Điều này tương ứng với cột bên trái hoặc đầu tiên trong một tập tin. rvalue phần tương ứng với cột bên phải trong tệp tập hợp hai cột và là cột nào giữ giá trị sẽ được trả về thay thế.

Cũng giống như tra cứu tệp tập hợp truyền thống, giá trị mặc định phải được chỉ định nếu không có giá trị phù hợp. Cú pháp DEFAULT ="string", trong đó "string" là giá trị mặc định được chỉ định theo cách thủ công, được sử dụng. Không được có dấu phẩy giữa bất kỳ thông số tệp đã đặt nào.

Tổng hợp tất cả lại với nhau, một ví dụ khả thi về cú pháp tra cứu bảng có thể là:

SET =”new_schema.info; DSN =MySQL mới;” [ACCOUNT_NUMBER] LOOKUP =”ACCOUNTNUM, PHONENUM”

Đây phải là một tham số trong định nghĩa trường SortCL. Trong trường hợp này, bảng "thông tin" phải có các cột có tên là ACCOUNTNUM và PHONENUM.

Làm cách nào để có thể sử dụng các bản tra cứu bộ mới này trong sản xuất? Hãy xem xét các ví dụ kịch bản công việc IRI sau:

Ví dụ

Ví dụ 1 :Giả danh dữ liệu bằng cách sử dụng các giá trị thay thế từ cơ sở dữ liệu.

Công việc FieldShield này tìm kiếm các giá trị từ cột "id" trong bảng có tên "lookuptable" được truy cập thông qua DSN "Mangled". Nếu trường ID giống trong đầu vào (tệp văn bản) như trong cột ID của bảng cơ sở dữ liệu được tham chiếu, thì tất cả các trường trong đầu ra (cũng là tệp văn bản) sẽ được thay thế bằng các giá trị thay thế giả nhưng thực tế cũng từ cùng một bảng tham chiếu. Nếu không khớp, các giá trị mặc định được chỉ định trong tập lệnh sẽ được xuất ra thay thế.

/INFILE=sensitiveData.txt
    /PROCESS=DELIMITED
    /INCOLLECT=200 # limit to 200 records
    /FIELD=(ID, TYPE=ASCII, POSITION=1, SEPARATOR="|")
    /FIELD=(NAME, TYPE=ASCII, POSITION=2, SEPARATOR="|")
    /FIELD=(SSN, TYPE=ASCII, POSITION=3, SEPARATOR="|")
    /FIELD=(ADDRESS, TYPE=ASCII, POSITION=4, SEPARATOR="|")

/REPORT

/OUTFILE=pseudonymizedData.txt
    /PROCESS=RECORD
    /FIELD=(PSEUDO_ID, TYPE=ASCII, POSITION=1, SEPARATOR="|", SET="lookuptable;DSN=Mangled;" [ID] DEFAULT=”0123456789” LOOKUP="id,fakeid")
    /FIELD=(PSEUDO_NAME, TYPE=ASCII, POSITION=2, SEPARATOR="|", SET="lookuptable;DSN=Mangled;" [ID] DEFAULT=”John” LOOKUP="id,fakename")
    /FIELD=(PSEUDO_SSN, TYPE=ASCII, POSITION=3, SEPARATOR="|", SET="lookuptable;DSN=Mangled;" [ID] DEFAULT=”555-55-5555” LOOKUP="id,fakessn")
    /FIELD=(PSEUDO_ADDRESS, TYPE=ASCII, POSITION=4, SEPARATOR="|", SET="lookuptable;DSN=Mangled;" [ID] DEFAULT=”583 West Ridge Rd” LOOKUP="id,fakeaddress")

Ví dụ 2 :Giả danh ba cột từ bảng cơ sở dữ liệu bằng cách sử dụng các giá trị thay thế từ một cơ sở dữ liệu khác và mã hóa cột còn lại.

Tập lệnh này thực hiện tra cứu dựa trên trường ID được lấy từ bảng cơ sở dữ liệu có tên “inputTable”, xem cột “id” từ bảng có tên “lookuptable” được truy cập thông qua DSN “Mangled”. Các giá trị khớp trong cột “fakeid”, “fakename”, “fakessn” và “fakeaddress” sẽ được sử dụng nếu có sự trùng khớp từ trường ID dữ liệu đầu vào với cột “id” trong bảng. Nếu không có kết quả phù hợp, các giá trị mặc định sẽ được xuất ra thay thế.

Kết quả đầu ra sẽ được gửi đến một bảng mục tiêu riêng biệt. Đầu ra cũng có thể được gửi đến cùng một bảng với đầu vào, điều này sẽ che dấu dữ liệu tại chỗ.

/INFILE=”inputTable;DSN=Mangled;”
    /PROCESS=ODBC
    /FIELD=(ID, TYPE=ASCII, POSITION=1, SEPARATOR="|")
    /FIELD=(NAME, TYPE=ASCII, POSITION=2, SEPARATOR="|")
    /FIELD=(SSN, TYPE=ASCII, POSITION=3, SEPARATOR="|")
    /FIELD=(ADDRESS, TYPE=ASCII, POSITION=4, SEPARATOR="|")

/REPORT

/OUTFILE=”outputTable;DSN=Mangled;”
    /PROCESS=ODBC
    /FIELD=(PSEUDO_ID, TYPE=ASCII, POSITION=1, SEPARATOR="|", SET="lookuptable;DSN=Mangled;" [ID] DEFAULT=”0123456789” LOOKUP="id,fakeid")
    /FIELD=(PSEUDO_NAME, TYPE=ASCII, POSITION=2, SEPARATOR="|", SET="lookuptable;DSN=Mangled;" [ID] DEFAULT=”John” LOOKUP="id,fakename")
    /FIELD=(ENCRYPT_SSN=enc_fp_aes256_alphanum(SSN,”EPWD:p4PagGZq9k7JFaj6/J1/JQ==”, TYPE=ASCII, POSITION=3, SEPARATOR="|")
    /FIELD=(PSEUDO_ADDRESS, TYPE=ASCII, POSITION=4, SEPARATOR="|", SET="lookuptable;DSN=Mangled;" [ID] DEFAULT=”583 West Ridge Rd” LOOKUP="id,fakeaddress")

Ví dụ 3 :Bảo vệ Thông tin Nhận dạng Cá nhân (PII) bằng cách sử dụng các phương pháp thay thế thực tế từ một loạt các phương pháp che giấu.

Tệp đầu vào chứa PII trong một số cột (trường). Nếu có sự trùng khớp giữa trường tên trong tệp CSV đầu vào và cột “FIRST_NAME” trong bảng “NAMES”, thì họ thay thế sẽ được xuất từ ​​cột “LAST_NAME” trong cùng bảng đó. Họ trong bảng “NAMES” khác với chính dữ liệu cá nhân.

/INFILES=personalData.csv
    /PROCESS=CSV
    /ALIAS=PERSONALDATA_CSV
    /FIELD=(FIRST_NAME, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME="\"")
    /FIELD=(LAST_NAME, TYPE=ASCII, POSITION=2, SEPARATOR=",", FRAME="\"")
    /FIELD=(SSN, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME="\"")
    /FIELD=(BIRTH_DATE, TYPE=AMERICAN_DATE, POSITION=4, SEPARATOR=",", FRAME="\"")
    /FIELD=(ADDRESS, TYPE=ASCII, POSITION=5, SEPARATOR=",", FRAME="\"")

/REPORT

/OUTFILE=maskedData.csv
    /PROCESS=RECORD
    /FIELD=(FIRST_NAME, TYPE=ASCII, POSITION=1, SEPARATOR=",")
    /FIELD=(LAST_NAME_DB_SET, TYPE=ASCII, POSITION=2, SEPARATOR=",", SET="NAMES;DSN=mangled;" [FIRST_NAME] LOOKUP="FNAME,LNAME")
    /FIELD=(SSNENC=enc_fp_aes256_alphanum(SSN), TYPE=ASCII, POSITION=3, SEPARATOR=",")
    /FIELD=(BIRTH_DATEPLUS=BIRTH_DATE + 30, TYPE=AMERICAN_DATE, POSITION=4, SEPARATOR=",") 
    /FIELD=(ADDRESSSET, TYPE=ASCII, POSITION=5, SEPARATOR=",", SET="C:/IRI/cosort100/sets/addresses.set" SELECT=ANY)

Cùng một kịch bản công việc, phác thảo một sơ đồ ánh xạ, cùng với bảng tên ban đầu được hiển thị trong IRI Workbench IDE của tôi, được xây dựng trên Eclipse, bên dưới:

Ví dụ 4 :Tạo dữ liệu thử nghiệm chính xác về mặt tham chiếu với IRI RowGen

Hãy xem xét một bảng cơ sở dữ liệu hoặc trong các trường hợp tiềm năng khác là nhiều bảng, chứa dữ liệu tương ứng với một ngày nhất định. Với IRI RowGen và chức năng tra cứu bảng, có thể chọn ngày (từ một tập tin đã đặt hoặc được tạo ngẫu nhiên) và thêm vào nhiều trường hơn trong đầu ra tương ứng với các giá trị thực tế dựa trên đầu vào ngày được cung cấp.

Trong ví dụ này, tất cả dữ liệu tương ứng từ ngày được lưu giữ trong bảng tra cứu được hiển thị bên dưới (mặc dù nó có thể được lấy từ bất kỳ số lượng bảng nào). Bảng có giá trị ngày của năm và các giá trị liên quan tương ứng:

Từ tệp đã đặt trong trường nhập DATE, 3 ngày được chọn nằm trong phạm vi ngày có trong bảng.

Tập hợp tệp bao gồm ba mục:2019-10-11, 2019-11-11 và 2019-12-11.

/INFILE=random_file_placeholder
    /PROCESS=RANDOM
    /INCOLLECT=3
    /FIELD=(DATE, TYPE=ALPHA_DIGIT, POSITION=1, SEPARATOR=",", SET="C:/Users/Devon/Downloads/dates.set" SELECT=ALL)

/REPORT

/OUTFILE=testPriceData.xml
    /PROCESS=XML
    /FIELD=(DATE, TYPE=ALPHA_DIGIT, POSITION=1, SEPARATOR=",")
    /FIELD=(OPEN, TYPE=ALPHA_DIGIT, POSITION=2, SEPARATOR=",", SET="new_schema2.pricedata;DSN=New MySQL;" [DATE] DEFAULT="170" LOOKUP="Date,Open")
    /FIELD=(HIGH, TYPE=ALPHA_DIGIT, POSITION=3, SEPARATOR=",", SET="new_schema2.pricedata;DSN=New MySQL;" [DATE] DEFAULT="171" LOOKUP="Date,High")
    /FIELD=(LOW, TYPE=ALPHA_DIGIT, POSITION=4, SEPARATOR=",",SET="new_schema2.pricedata;DSN=New MySQL;" [DATE] DEFAULT="169" LOOKUP="Date,Low")
    /FIELD=(CLOSE, TYPE=ALPHA_DIGIT, POSITION=5, SEPARATOR=",",SET="new_schema2.pricedata;DSN=New MySQL;" [DATE] DEFAULT="170.5" LOOKUP="Date,Close")
    /FIELD=(ADJ_CLOSE, TYPE=ALPHA_DIGIT, POSITION=6, SEPARATOR=",",SET="new_schema2.pricedata;DSN=New MySQL;" [DATE] DEFAULT="170.5" LOOKUP="Date,Adj_Close")
    /FIELD=(VOLUME, TYPE=ALPHA_DIGIT, POSITION=7, SEPARATOR=",",SET="new_schema2.pricedata;DSN=New MySQL;" [DATE] DEFAULT="523210182" LOOKUP="Date,Volume")

Kết quả từ ví dụ này là một tệp XML chuẩn có chứa các giá trị tra cứu:

Ví dụ 5 :Thực hiện Chuyển đổi Tra cứu trong IRI Voracity ETL và Công việc Báo cáo

Trong ví dụ này, chúng tôi có một tệp CSV chứa số tài khoản và số tiền quá hạn cho một số khách hàng. Một tra cứu bảng sẽ được sử dụng trong hai trường trong đầu ra để lấy thông tin khớp bổ sung từ bảng thông tin khách hàng chính trong MySQL, với bảng đó đóng vai trò là bảng khách hàng chính.

Bảng chính không có thông tin về số tiền đến hạn và chứa nhiều khách hàng hơn so với tệp đầu vào chỉ hiển thị các tài khoản khách hàng quá hạn. Thao tác này sẽ tra cứu tên và số điện thoại từ bảng dựa trên số tài khoản và xuất ra bảng tính .XLSX ở định dạng báo cáo tiện dụng với thông tin liên hệ của khách hàng.

Đầu vào CSV

Đoạn mã của Bảng khách hàng chính cần được tra cứu

/INFILE=C:/Users/Devon/Downloads/accountnumsandamountDue.csv
    /PROCESS=CSV
    /ALIAS=accountnumsandamountDue
    /FIELD=(ACCOUNT_NUMBER, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME="\"")
    /FIELD=(AMOUNT_DUE, TYPE=ASCII, POSITION=2, SEPARATOR=",", FRAME="\"")

/REPORT

/OUTFILE="'Past Due',HEADER;report.xlsx"
    /PROCESS=XLSX
    /FIELD=(ACCOUNT_NUMBER, TYPE=ASCII, POSITION=1, SEPARATOR="\t")
    /FIELD=(LOOKUP_NAME,TYPE=ASCII,POSITION=2, SEPARATOR="\t",SET="new_schema2.info;DSN=New MySQL;" [ACCOUNT_NUMBER] LOOKUP="ACCOUNTNUM,NAME")
    /FIELD=(LOOKUP_PHONE,TYPE=ASCII,POSITION=3, SEPARATOR="\t",SET="new_schema2.info;DSN=New MySQL;" [ACCOUNT_NUMBER] LOOKUP="ACCOUNTNUM,PHONENUM")
    /FIELD=(AMOUNT_DUE, TYPE=ASCII, POSITION=4, SEPARATOR="\t")

Xuất báo cáo “Quá hạn”

Hỗ trợ IRI Workbench

Tra cứu bảng cơ sở dữ liệu có thể được thiết lập như một quy tắc từ Trình hướng dẫn Quy tắc Trường Mới. Loại quy tắc này được gọi là "Tra cứu bảng" trong Quy tắc tạo, nhưng nó có thể được sử dụng trong nhiều nguồn hoặc mục tiêu dưới dạng quy tắc trường trong các công việc khác.

Khi chọn tra cứu bảng làm quy tắc, cấu hình kết nối phải được thiết lập hoặc đã được tạo khi được nhắc để truy cập bảng cơ sở dữ liệu và tên cột để chọn.

Từ đó, chọn bảng, cột tra cứu và cột giá trị thay thế để sử dụng cho việc tra cứu. Giờ đây, tra cứu bảng này có thể được đặt làm quy tắc được áp dụng dựa trên các đối sánh.

Bộ có thể được sửa đổi từ kiểu chuyển đổi giá trị Set:Table Lookup trong hộp thoại trình chỉnh sửa trường.

Điều này không cần thiết nếu quy tắc trường tra cứu bảng đã được thiết lập và áp dụng. Tuy nhiên, hộp thoại này cho phép chỉnh sửa thủ công các thành phần tra cứu bảng như DSN, bảng, trường tìm kiếm, cột tra cứu và cột kết quả. Giá trị mặc định cũng có thể được chỉ định ở đây.

Tóm tắt

Tìm kiếm thiết lập hiện có một nguồn mới khả thi trong SortCL có thể mở rộng đáng kể và dễ dàng lấy dữ liệu cần thiết để tra cứu. Điều này hữu ích trong các hoạt động tạo mặt nạ hoặc tạo dữ liệu để cung cấp các giá trị thay thế thực tế nhằm duy trì các mối quan hệ.

Trong tương lai, các tập hợp có thể được mở rộng để bao gồm nhiều nguồn dữ liệu hơn nữa. Liên hệ với đại diện IRI của bạn để biết thêm thông tin.

  1. Lưu ý rằng hiện tại, người dùng RowGen tận dụng các tập tin đặt để lựa chọn ngẫu nhiên các giá trị mà không cần tham số tra cứu. Chức năng này không được hỗ trợ trong lần triển khai đầu tiên của tra cứu bảng DB. Điều này là do mỗi cơ sở dữ liệu có một phương pháp hoặc cú pháp cụ thể để chọn một hàng ngẫu nhiên từ một bảng; một số cơ sở dữ liệu có thể không hỗ trợ lựa chọn ngẫu nhiên.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bật xác thực hai yếu tố cho ScaleGrid DBaaS

  2. Làm thế nào để sắp xếp theo hai cột trong SQL?

  3. Mở rộng việc sử dụng DBCC CLONEDATABASE

  4. Giảm thiểu phân mảnh chỉ mục

  5. Làm thế nào để thêm khóa ngoại trong SQL?