Azure数据工厂中的HTTP请求

问题描述

在Azure数据工厂中,我需要使用HTTP连接器通过URL进入HTTP请求。我能够做到这一点以及设置数据集。我遇到问题的地方正在酝酿中。这是我需要做的。最好的方法是什么?

  1. 调出服务基本URL并检索TotalPages返回的标头。
  2. 使用TotalPages的值,使用TotalPages中的值构成参数请求,以参数page(例如page = 1,page = 2等)向URL进行后续请求。

谢谢。

解决方法

好的。因此,这里的问题是您不能在Data Factory中嵌套控件结构超过1次。解决方案是创建两个或更多管道(又称为主管道和子管道)。

从主管道中检索您将需要执行的任务数,并将其传递给for循环。在每个活动对的for循环启动中,都有一个新的Child管道,它将执行第二个活动。

如果活动足够简单,则可以完全跳过子管道,直接在第一个for循环内进行操作。

作为所讨论管道的Json表示形式,应遵循以下原则:

QHeaderView

}

import sys
from PyQt5 import QtCore,QtGui
from PyQt5.QtWidgets import QHeaderView,QWidget,QLineEdit,QApplication,QTableView,QVBoxLayout,QHBoxLayout,QComboBox,QPushButton,QCheckBox
from PyQt5.QtCore import pyqtSignal

class FilterHeader(QHeaderView):
    filterActivated = QtCore.pyqtSignal()
    changebuttonsymbol = QtCore.pyqtSignal()

    def __init__(self,parent):
        super().__init__(QtCore.Qt.Horizontal,parent)
        self._editors = []
        self._padding = 4
        self.setStretchLastSection(True)
        #self.setResizeMode(QHeaderView.Stretch)
        self.setDefaultAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
        self.setSortIndicatorShown(False)
        self.sectionResized.connect(self.adjustPositions)
        parent.horizontalScrollBar().valueChanged.connect(self.adjustPositions)

    def setFilterBoxes(self,count):
        while self._editors:
            editor = self._editors.pop()
            editor.deleteLater()
        for index in range(count):
            if index == 1:     # Empty
                editor = QWidget()
            elif index == 2:   # Number filter (>|=|<)
                editor = QWidget(self.parent())
                edlay = QHBoxLayout()
                edlay.setContentsMargins(0,0)
                edlay.setSpacing(0)
                self.btn = QPushButton()
                self.btn.setText("=")     
                self.btn.setFixedWidth(20)
                #self.btn.clicked.connect(lambda: self.changebuttonsymbol.emit(self.btn))
                self.btn.clicked.connect(self.changebuttonsymbol.emit)
                #btn.setViewportMargins(0,0)
                linee = QLineEdit(self.parent())
                linee.setPlaceholderText('Filter')
                linee.returnPressed.connect(self.filterActivated.emit) 
                #linee.setViewportMargins(0,0)
                edlay.addWidget(self.btn)
                edlay.addWidget(linee)
                editor.setLayout(edlay)
            elif index == 3:
                editor = QComboBox(self.parent())
                editor.addItems(["","Combo","One","Two","Three"])
                editor.currentIndexChanged.connect(self.filterActivated.emit)
            elif index == 4:
                editor = QPushButton(self.parent())
                editor.clicked.connect(self.filterActivated.emit)
                editor.setText("Button")
            elif index == 5:
                editor = QCheckBox(self.parent())
                editor.clicked.connect(self.filterActivated.emit)
                editor.setTristate(True)
                editor.setCheckState(1)
                editor.setText("CheckBox")
            else:   # string filter
                editor = QLineEdit(self.parent())
                editor.setPlaceholderText('Filter')
                editor.returnPressed.connect(self.filterActivated.emit)                
            self._editors.append(editor)
        self.adjustPositions()


    def sizeHint(self):
        size = super().sizeHint()
        if self._editors:
            height = self._editors[0].sizeHint().height()
            size.setHeight(size.height() + height + self._padding)
        return size

    def updateGeometries(self):
        if self._editors:
            height = self._editors[0].sizeHint().height()
            self.setViewportMargins(0,height + self._padding)
        else:
            self.setViewportMargins(0,0)
        super().updateGeometries()
        self.adjustPositions()

    def adjustPositions(self):
        for index,editor in enumerate(self._editors):
            height = editor.sizeHint().height()
            CompensateY = 0
            CompensateX = 0
            if self._editors[index].__class__.__name__ == "QComboBox":
                CompensateY = +2
            elif self._editors[index].__class__.__name__ == "QWidget":
                CompensateY = -1
            elif self._editors[index].__class__.__name__ == "QPushButton":
                CompensateY = -1
            elif self._editors[index].__class__.__name__ == "QCheckBox":
                CompensateY = 4
                CompensateX = 4
            editor.move( self.sectionPosition(index) - self.offset() + 1 + CompensateX,height + (self._padding // 2) + 2 + CompensateY)
            editor.resize(self.sectionSize(index),height)

    def filterText(self,index):
        if 0 <= index < len(self._editors): 
            if self._editors[index].__class__.__name__ == "QLineEdit":
                return self._editors[index].text()
        return ''

    def setFilterText(self,index,text):
        if 0 <= index < len(self._editors):
            self._editors[index].setText(text)

    def clearFilters(self):
        for editor in self._editors:
            editor.clear()


class Window(QWidget):
    def __init__(self):
        super(Window,self).__init__()
        self.view = QTableView()
        layout = QVBoxLayout(self)
        layout.addWidget(self.view)
        header = FilterHeader(self.view)
        self.view.setHorizontalHeader(header)
        model = QtGui.QStandardItemModel(self.view)
        model.setHorizontalHeaderLabels('One Two Three Four Five Six Seven'.split())
        self.view.setModel(model)
        header.setFilterBoxes(model.columnCount())
        header.filterActivated.connect(self.handleFilterActivated)
        header.changebuttonsymbol.connect(self.ChangeIntButtonSymbol)

    def handleFilterActivated(self):
        header = self.view.horizontalHeader()
        for index in range(header.count()):
            if index != 4:
                print((index,header.filterText(index)))
            else:
                print("Button")
        
    def ChangeIntButtonSymbol(self):
        print("Int button triggered")
        nbtn = self.sender()
        print(str(nbtn))
        if nbtn.text() == "=":
            nbtn.setText(">")
        elif nbtn.text() == ">":
            nbtn.setText("<")
        else:
            nbtn.setText("=")

if __name__ == '__main__':

    app = QApplication(sys.argv)
    window = Window()
    window.setGeometry(800,100,600,300)
    window.show()
    sys.exit(app.exec_())

}

,

为了从 HTTP 请求的响应中读取 TotalPages 值,您可以使用“Lookup”活动提交 HTTP 请求并将 TotalPages 值存储在具有“设置变量”活动的变量中。 行动: 管道级别:

  • 创建一个名为 TotalPages 的变量 查找活动:
  • 勾选“设置”选项卡上的仅第一行框
  • 作为源数据集,使用为您的 HTTP 请求定义的数据集
  • 选择 GET 方法。 设置变量活动:
  • 在变量选项卡上选择 TotalPages 变量
  • 在值框中,单击“添加动态内容”并输入如下内容:@{activity('GetTotalPages').output.firstRow.RegisterSearch['@TotalPages']}

在我的例子中,查找活动称为 GetTotalPages,我的 HTTP 请求返回 RegisterSearch 数组中的总页数,列名@TotalPages

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...