แหล่งข้อมูล Azure Blob ของ Data Factory - ไวด์การ์ด

ฉันถูกชักจูงให้เชื่อว่าคุณสามารถใช้ไวด์การ์ดคุณสมบัติชื่อไฟล์ในออบเจ็กต์ต้นฉบับ Azure Blob Table

ฉันต้องการรับเฉพาะไฟล์ csv บางไฟล์จากที่เก็บข้อมูล blob ที่มีอยู่ในไดเร็กทอรีเดียวกันกับไฟล์อื่น ๆ ที่ฉันไม่ต้องการประมวลผล:

i.e.

รูต/ข้อมูล/GUJH-01.csv

รูต/ข้อมูล/GUJH-02.csv

รูท/ข้อมูล/DFGT-01.csv

ฉันต้องการประมวลผล GUJH*.csv ไม่ใช่ DFGT-01.csv

เป็นไปได้ไหม? หากเป็นเช่นนั้น เหตุใดการตรวจสอบแหล่งที่มา Blob ของฉันจึงล้มเหลว โดยแจ้งฉันว่าไม่มีไฟล์อยู่ (ข้อความรายงานว่าไม่มี Blob รูท/ข้อมูล

ขอบคุณล่วงหน้า.




คำตอบ (2)


ตอบคำถามของตัวเอง..

ไม่มีไวด์การ์ด แต่มี 'เริ่มต้นด้วย' ซึ่งจะใช้ได้ในสถานการณ์ของฉัน:

แทนที่จะเป็น root/data/GUJH*.csv ฉันสามารถทำ root/data/GUJH บนคุณสมบัติ folderPath และมันจะนำไฟล์ root/data/GUJH ทั้งหมดเข้ามา

:)

person Steve    schedule 03.02.2016
comment
ฉันใช้เวลานานในการทำงานนี้เช่นกัน ตอนนี้ฉันสงสัยว่าคุณจะจำกัดเฉพาะไฟล์ CSV ได้อย่างไร - person Nick.McDermaid; 27.07.2017
comment
เพียงตรวจสอบให้แน่ใจว่าไม่ได้ระบุ filePath และ folderPath มีพาธแบบเต็มรวมถึงชื่อไฟล์ด้วย ตรวจสอบให้แน่ใจว่าคุณเรียกใช้ timeslice ที่ถูกต้อง ฉันเพิ่งใช้งานไทม์สไลซ์แบบสุ่มซึ่งส่งผ่านพารามิเตอร์ที่ไม่ถูกต้องซึ่งหมายความว่าไม่พบไฟล์ - person Nick.McDermaid; 27.07.2017

เพียงเพิ่มรายละเอียดเพิ่มเติมที่นี่เพราะฉันพบว่านี่เป็นช่วงการเรียนรู้ที่ยากมาก และฉันต้องการบันทึกสิ่งนี้เพื่อประโยชน์ของฉันและคนอื่นๆ

รับไฟล์ตัวอย่างเช่นนี้ (ในกรณีนี้ไม่มีนามสกุล) ในที่เก็บข้อมูล Blob

ZZZZ_20170727_1324

เราจะเห็นว่าส่วนตรงกลางอยู่ในรูปแบบ yyyyMMdd

ไฟล์นี้อัปโหลดไปยังโฟลเดอร์ Landing ภายในคอนเทนเนอร์ MyContainer

นี่เป็นส่วนหนึ่งของคำจำกัดความชุดข้อมูลของฉัน::

    "typeProperties": {
        "folderPath": "MyContainer/Landing/ZZZZ_{DayCode}",
        "format": {
            "type": "TextFormat",
            "columnDelimiter": "\u0001"
        },
        "partitionedBy": [
            {
                "name": "DayCode",
                "value": {
                    "type": "DateTime",
                    "date": "SliceStart",
                    "format": "yyyyMMdd"
                }
            }
        ]
    },

โปรดทราบว่านี่คือ 'คำนำหน้า' ซึ่งคุณจะเห็นในบันทึก/ข้อความแสดงข้อผิดพลาด หากคุณสามารถหาเจอได้ (โชคดี)

หากคุณต้องการทดสอบการโหลดไฟล์นี้โดยเฉพาะ คุณจะต้องกดปุ่ม 'ไดอะแกรม' จากนั้นเจาะเข้าไปในไปป์ไลน์ของคุณจนกว่าคุณจะพบชุดข้อมูล เป้าหมาย ซึ่งเป็นชุดข้อมูลที่กำลังโหลด ลงใน< /em> (ฉันกำลังโหลดสิ่งนี้ลงใน SQL Azure) คลิกที่ชุดข้อมูลเป้าหมาย จากนั้นไปค้นหาช่วงเวลา ที่ถูกต้อง ในกรณีของฉัน ฉันจำเป็นต้องค้นหาไทม์ลิซด้วย ไทม์สไลซ์เริ่มต้นที่ 20170727 และเรียกใช้อันนั้น

สิ่งนี้จะทำให้แน่ใจว่าไฟล์ที่ถูกต้องถูกหยิบขึ้นมาและโหลดลงใน SQL Azure

ลืมการรันไปป์ไลน์หรือกิจกรรมด้วยตนเองไปได้เลย นั่นไม่ใช่วิธีการทำงานอีกต่อไป คุณต้องเรียกใช้ชุดข้อมูลเอาต์พุตภายใต้ช่วงเวลาเพื่อดึงข้อมูลออกมา

person Nick.McDermaid    schedule 27.07.2017