แชร์ผ่าน


ชนิดข้อมูลในนิพจน์ในรายงานที่มีการแบ่งหน้า (ตัวสร้างรายงาน Power BI)

นําไปใช้กับ: Power BI Report Builder Power BI Desktop

ชนิดข้อมูลแสดงข้อมูลชนิดต่างๆ ในรายงานแบบแบ่งหน้าเพื่อให้สามารถจัดเก็บและประมวลผลได้อย่างมีประสิทธิภาพ ชนิดข้อมูลทั่วไปประกอบด้วยข้อความ (หรือที่เรียกว่าสตริง) ตัวเลขที่มี และไม่มีตําแหน่งทศนิยม วันที่และเวลา และรูปภาพ ค่าในรายงานต้องเป็นชนิดข้อมูล Report Definition Language (RDL) คุณสามารถจัดรูปแบบค่าตามการกําหนดลักษณะของคุณเมื่อคุณแสดงในรายงาน ตัวอย่างเช่น เขตข้อมูลที่แสดงสกุลเงินถูกเก็บไว้ในข้อกําหนดของรายงานเป็นหมายเลขจุดทศนิยมลอยตัว แต่สามารถแสดงในรูปแบบที่หลากหลายโดยขึ้นอยู่กับคุณสมบัติรูปแบบที่คุณเลือก

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบการแสดง ดูจัดรูปแบบหน่วยข้อมูลของรายงาน (ตัวสร้างรายงาน Power BI)

ชนิดข้อมูล Report Definition Language (RDL) และชนิดข้อมูลการใช้งานภาษาทั่วไป (CLR)

ค่าที่ระบุในไฟล์ RDL ต้องเป็นชนิดข้อมูล RDL เมื่อมีการคอมไพล์และประมวลผลรายงาน ประเภทข้อมูล RDL จะถูกแปลงเป็นชนิดข้อมูล CLR ตารางต่อไปนี้แสดงการแปลงซึ่งถูกทําเครื่องหมายว่าค่าเริ่มต้น:

ชนิด RDL ชนิด CLR
สตริง ค่าเริ่มต้น: สตริง

Chart, GUID, Timespan
บูลีน ค่าเริ่มต้น: บูลีน
จำนวนเต็ม ค่าเริ่มต้น: Int64

Int16, Int32, Uint16, Uint64, Byte, Sbyte
DateTime ค่าเริ่มต้น: วันที่เวลา

DateTimeOffset
Float ค่าเริ่มต้น: คู่

เดียว ทศนิยม
ไบนารี ค่าเริ่มต้น: ไบต์[]
ตัวแปร รายการใดข้างต้นยกเว้นไบต์[]
VariantArray อาร์เรย์ของตัวแปร
Serializable ตัวแปรหรือชนิดที่ทําเครื่องหมายด้วย Serializable หรือใช้ ISerializable

ทําความเข้าใจชนิดข้อมูลและนิพจน์การเขียน

เป็นสิ่งสําคัญที่ต้องทําความเข้าใจชนิดข้อมูลเมื่อคุณเขียนนิพจน์เพื่อเปรียบเทียบหรือรวมค่า ตัวอย่างเช่น เมื่อคุณกําหนดนิพจน์กลุ่มหรือตัวกรอง หรือคํานวณผลรวม การเปรียบเทียบและการคํานวณจะใช้ได้เฉพาะระหว่างรายการที่มีข้อมูลประเภทเดียวกันเท่านั้น ถ้าชนิดข้อมูลไม่ตรงกัน คุณต้องแปลงชนิดข้อมูลในรายการของรายงานโดยใช้นิพจน์อย่างชัดเจน

รายการต่อไปนี้อธิบายกรณีที่คุณอาจจําเป็นต้องแปลงข้อมูลเป็นชนิดข้อมูลอื่น:

  • การเปรียบเทียบค่าของพารามิเตอร์รายงานของชนิดข้อมูลหนึ่งชนิดกับเขตข้อมูลชุดข้อมูลของชนิดข้อมูลที่แตกต่างกัน

  • การเขียนนิพจน์ตัวกรองที่เปรียบเทียบค่าของชนิดข้อมูลที่แตกต่างกัน

  • การเขียนนิพจน์การเรียงลําดับที่รวมเขตข้อมูลของชนิดข้อมูลที่แตกต่างกัน

  • การเขียนนิพจน์กลุ่มที่รวมเขตข้อมูลของชนิดข้อมูลที่แตกต่างกัน

  • การแปลงค่าที่ดึงมาจากแหล่งข้อมูลจากชนิดข้อมูลหนึ่งไปเป็นชนิดข้อมูลอื่น

กําหนดชนิดข้อมูลของข้อมูลรายงาน

หากต้องการกําหนดชนิดข้อมูลของรายการรายงาน คุณสามารถเขียนนิพจน์ที่ส่งกลับชนิดข้อมูลได้ ตัวอย่างเช่น เมื่อต้องการแสดงชนิดข้อมูลสําหรับเขตข้อมูล MyFieldให้เพิ่มนิพจน์ต่อไปนี้ลงในเซลล์ตาราง: =Fields!MyField.Value.GetType().ToString() ผลลัพธ์จะแสดงชนิดข้อมูล CLR ที่ใช้เพื่อแสดง MyFieldตัวอย่างเช่น System.String หรือ System.DateTime

แปลงเขตข้อมูลชุดข้อมูลให้เป็นชนิดข้อมูลอื่น

คุณยังสามารถแปลงเขตข้อมูลชุดข้อมูลก่อนที่คุณใช้ในรายงานได้ รายการต่อไปนี้อธิบายวิธีการที่คุณสามารถแปลงเขตข้อมูลชุดข้อมูลที่มีอยู่ได้:

  • ปรับเปลี่ยนคิวรีชุดข้อมูลเพื่อเพิ่มเขตข้อมูลคิวรีใหม่ด้วยข้อมูลที่แปลงแล้ว สําหรับแหล่งข้อมูลเชิงสัมพันธ์หรือหลายมิติ สิ่งนี้ใช้ทรัพยากรของแหล่งข้อมูลเพื่อดําเนินการแปลง

  • สร้างเขตข้อมูลจากการคํานวณโดยยึดตามเขตข้อมูลชุดข้อมูลรายงานที่มีอยู่โดยการเขียนนิพจน์ที่แปลงข้อมูลทั้งหมดในคอลัมน์ชุดผลลัพธ์หนึ่งคอลัมน์เป็นคอลัมน์ใหม่ที่มีชนิดข้อมูลที่แตกต่างกัน ตัวอย่างเช่น นิพจน์ต่อไปนี้แปลงเขตข้อมูล ปี จากค่าจํานวนเต็มเป็นค่าสตริง: =CStr(Fields!Year.Value) สําหรับข้อมูลเพิ่มเติม ดูเพิ่ม แก้ไข รีเฟรชเขตข้อมูลในบานหน้าต่างข้อมูลรายงาน (ตัวสร้างรายงาน Power BI)

  • ตรวจสอบว่าส่วนขยายการประมวลผลข้อมูลที่คุณกําลังใช้มีเมตาดาต้าสําหรับการดึงข้อมูลที่จัดรูปแบบไว้ล่วงหน้าหรือไม่ ตัวอย่างเช่น คิวรี MDX ของ SQL Server Analysis Services มีคุณสมบัติเพิ่มเติม FORMATTED_VALUE สําหรับค่าคิวบ์ที่ได้รับการจัดรูปแบบแล้วเมื่อประมวลผลคิวบ์ สําหรับข้อมูลเพิ่มเติม ดูคุณสมบัติของเขตข้อมูลเพิ่มเติมสําหรับฐานข้อมูล Analysis Services (SSRS)

ทําความเข้าใจชนิดข้อมูลพารามิเตอร์

พารามิเตอร์รายงานต้องเป็นหนึ่งในห้าชนิดข้อมูล: บูลีน, วันที่เวลา, จํานวนเต็ม, เลขทศนิยม หรือข้อความ (หรือที่เรียกว่าสตริง) เมื่อคิวรีชุดข้อมูลประกอบด้วยพารามิเตอร์คิวรี พารามิเตอร์ของรายงานจะถูกสร้างขึ้นโดยอัตโนมัติและเชื่อมโยงกับพารามิเตอร์คิวรี ชนิดข้อมูลเริ่มต้นสําหรับพารามิเตอร์รายงานคือสตริง หากต้องการเปลี่ยนชนิดข้อมูลเริ่มต้นของพารามิเตอร์รายงาน ให้เลือกค่าที่ถูกต้องจากรายการ ดรอปดาวน์ ชนิดข้อมูล บนหน้า ทั่วไป ของ กล่องโต้ตอบ คุณสมบัติ พารามิเตอร์รายงาน

หมายเหตุ

พารามิเตอร์รายงานที่เป็นชนิดข้อมูล DateTime ไม่สนับสนุนหน่วยมิลลิวินาที แม้ว่าคุณสามารถสร้างพารามิเตอร์ตามค่าที่มีมิลลิวินาทีแต่คุณไม่สามารถเลือกค่าจากรายการดรอปดาวน์ค่าที่มีที่มีค่าวันที่หรือเวลาที่มีหน่วยมิลลิวินาทีได้

เขียนนิพจน์ที่แปลงชนิดข้อมูลหรือแยกส่วนของข้อมูล

เมื่อคุณรวมเขตข้อมูลข้อความและชุดข้อมูลโดยใช้ตัวดําเนินการเรียงต่อกัน (&) รันไทม์ภาษาทั่วไป (CLR) โดยทั่วไปจะมีรูปแบบเริ่มต้น เมื่อคุณต้องแปลงเขตข้อมูลชุดข้อมูลหรือพารามิเตอร์เป็นชนิดข้อมูลที่เฉพาะเจาะจงอย่างชัดเจน คุณต้องใช้เมธอด CLR หรือฟังก์ชันไลบรารีรันไทม์ Visual Basic เพื่อแปลงข้อมูล

ตารางต่อไปนี้แสดงตัวอย่างของการแปลงชนิดข้อมูล

ชนิดของการแปลง ตัวอย่าง
DateTime ไปยัง String =CStr(Fields!Date.Value)
สตริงไปยังวันที่เวลา =DateTime.Parse(Fields!DateTimeinStringFormat.Value)
สตริงไปยัง DateTimeOffset =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value)
การแยกปี =Year(Fields!TimeinStringFormat.Value)

-- or --

=Year(Fields!TimeinDateTimeFormat.Value)
บูลีนเป็นจํานวนเต็ม =CInt(Parameters!BooleanField.Value)

-1 เป็นจริง และ 0 เป็น False
บูลีนเป็นจํานวนเต็ม =System.Convert.ToInt32(Fields!BooleanFormat.Value)

1 เป็นจริง และ 0 เป็น เท็จ
เฉพาะส่วน DateTime ของค่า DateTimeOffset =Fields!MyDatetimeOffset.Value.DateTime
เพียงส่วนออฟเซตของค่า DateTimeOffset =Fields!MyDatetimeOffset.Value.Offset

คุณยังสามารถใช้ฟังก์ชัน Format เพื่อควบคุมรูปแบบการแสดงผลสําหรับค่าได้ สําหรับข้อมูลเพิ่มเติม ให้ดู ฟังก์ชัน (Visual Basic)

ตัวอย่างขั้นสูง

เมื่อคุณเชื่อมต่อกับแหล่งข้อมูลด้วยตัวให้บริการข้อมูลที่ไม่ได้ให้การสนับสนุนการแปลงสําหรับชนิดข้อมูลทั้งหมดในแหล่งข้อมูล ชนิดข้อมูลเริ่มต้นสําหรับชนิดแหล่งข้อมูลที่ไม่สนับสนุนคือสตริง ตัวอย่างต่อไปนี้จะให้โซลูชันสําหรับชนิดข้อมูลที่เฉพาะเจาะจงที่ส่งกลับเป็นสตริง

เชื่อมสตริงและชนิดข้อมูล CLR DateTimeOffset เข้าด้วยกัน

สําหรับชนิดข้อมูลส่วนใหญ่ CLR แสดงการแปลงค่าเริ่มต้นเพื่อให้คุณสามารถเชื่อมค่าที่มีชนิดข้อมูลที่แตกต่างกันลงในสตริงเดียวโดยใช้ตัวดําเนินการ & ตัวอย่างเช่น นิพจน์ต่อไปนี้จะเชื่อมข้อความ "วันที่และเวลาเป็น: " ด้วยเขตข้อมูลชุดข้อมูล StartDate ซึ่งเป็นDateTimeค่า: ="The date and time are: " & Fields!StartDate.Value

สําหรับชนิดข้อมูลบางชนิด คุณอาจจําเป็นต้องรวมฟังก์ชัน ToString ตัวอย่างเช่น นิพจน์ต่อไปนี้แสดงตัวอย่างเดียวกันโดยใช้ชนิดข้อมูล DateTimeOffsetCLR ซึ่งรวมถึงวันที่ เวลา และออฟเซตโซนเวลาที่สัมพันธ์กับโซนเวลา UTC: ="The time is: " & Fields!StartDate.Value.ToString()

แปลงชนิดข้อมูลสตริงเป็นชนิดข้อมูล CLR DateTime

ถ้าส่วนขยายการประมวลผลข้อมูลไม่สนับสนุนชนิดข้อมูลทั้งหมดที่กําหนดไว้ในแหล่งข้อมูล ข้อมูลอาจถูกเรียกใช้เป็นข้อความ ตัวอย่างเช่น ค่าชนิดข้อมูล datetimeoffset(7) อาจถูกเรียกใช้เป็นชนิดข้อมูลสตริง ในเพิร์ท ออสเตรเลีย ค่าสตริงสําหรับวันที่ 1 กรกฎาคม 2008 เวลา 6:05:07.99999999 A.M. จะคล้ายกับ:

2008-07-01 06:05:07.9999999 +08:00

ตัวอย่างนี้แสดงวันที่ (1 กรกฎาคม 2008) ตามด้วยเวลาด้วยความแม่นยําของตัวเลข 7 หลัก (6:05:07.9999999 A.M.) ตามด้วยโซนเวลา UTC ในชั่วโมงและนาที (บวก 8 ชั่วโมง 0 นาที) สําหรับตัวอย่างต่อไปนี้ ค่านี้ได้ถูกใส่ไว้ในเขตข้อมูลสตริงที่เรียกว่าMyDateTime.Value

คุณสามารถใช้หนึ่งในกลยุทธ์ต่อไปนี้เพื่อแปลงข้อมูลนี้เป็นค่า CLR อย่างน้อยหนึ่งค่า:

  • ในกล่องข้อความ ใช้นิพจน์เพื่อแยกส่วนของสตริง ตัวอย่างเช่น:

    • นิพจน์ต่อไปนี้แยกเพียงส่วนชั่วโมงของออฟเซตโซนเวลา UTC และแปลงเป็นนาที: =CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60

      ผลลัพธ์คือ480

    • นิพจน์ต่อไปนี้แปลงสตริงเป็นค่าวันที่และเวลา: =DateTime.Parse(Fields!MyDateTime.Value)

      MyDateTime.Valueถ้าสตริงมีออฟเซ็ต UTC ฟังก์ชันจะDateTime.Parseปรับค่าออฟเซ็ต UTC ก่อน (7 A.M. - [+08:00] ตามเวลา UTC ของ 11 P.M. ในตอนกลางคืนก่อนหน้า) ฟังก์ชัน DateTime.Parse จะใช้ออฟเซต UTC ของเซิร์ฟเวอร์รายงานภายในและถ้าจําเป็น จะปรับเวลาอีกครั้งสําหรับเวลาออมแสง ตัวอย่างเช่น ใน Redmond, Washington เวลาท้องถิ่นที่ปรับเปลี่ยนสําหรับการประหยัดเวลาตามฤดูกาลคือ [-07:00]หรือ 7 ชั่วโมงก่อนหน้า 11 PM ผลลัพธ์คือค่า DateTime ต่อไปนี้: 2007-07-06 04:07:07 PM (6 กรกฎาคม 2007 ที่ 4:07 P.M.)

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการแปลงสตริงเป็นชนิดข้อมูล DateTime ดูการแยกวิเคราะห์สตริงวันที่และเวลาการจัดรูปแบบวันที่และเวลาสําหรับวัฒนธรรมเฉพาะและการเลือกระหว่าง DateTime, DateTimeOffset และ TimeZoneInfo

  • เพิ่มเขตข้อมูลจากการคํานวณใหม่ลงในชุดข้อมูลรายงานที่ใช้นิพจน์เพื่อแยกส่วนของสตริง สําหรับข้อมูลเพิ่มเติม ดูเพิ่ม แก้ไข รีเฟรชเขตข้อมูลในบานหน้าต่างข้อมูลรายงาน (ตัวสร้างรายงาน Power BI)

  • เปลี่ยนคิวรีชุดข้อมูลรายงานเพื่อใช้ฟังก์ชัน Transact-SQL เพื่อแยกค่าวันที่และเวลาแยกจากกันเพื่อสร้างคอลัมน์แยกต่างหาก ตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน DatePart เพื่อเพิ่มคอลัมน์สําหรับปีและคอลัมน์สําหรับโซนเวลา UTC ที่แปลงเป็นนาที:

    SELECT

    MyDateTime,

    DATEPART(year, MyDateTime) AS Year,

    DATEPART(tz, MyDateTime) AS OffsetinMinutes

    FROM MyDates

    ชุดผลลัพธ์มีสามคอลัมน์ คอลัมน์แรกคือวันที่และเวลา คอลัมน์ที่สองคือปี และคอลัมน์ที่สามคือออฟเซต UTC ในไม่กี่นาที แถวต่อไปนี้แสดงข้อมูลตัวอย่าง:

    2008-07-01 06:05:07 2008 480

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับชนิดข้อมูลฐานข้อมูล SQL Server ดูชนิดข้อมูล (Transact-SQL) และ ชนิดข้อมูลวันที่และเวลาและฟังก์ชัน (Transact-SQL)

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับชนิดข้อมูล SQL Server Analysis Services ดูชนิดข้อมูลใน Analysis Services